日期:2014-05-16  浏览次数:20480 次

从程序员角度来看数据库优化
谈到数据库优化概念,总感觉很庞大,无从下手;最近,听了一次DBA的分享,感觉有些思路;整理成文字,强化记忆;仅仅是一些个人理解和信息聚合,可能有所偏差,还望有所指正:
为什么需要数据库优化?

数据库性能优化主要的目的无非就是降低数据库响应时间,提升数据库响应能力TPS;

数据库响应时间

数据库响应时间=连接时间+SQL解析时间+SQL执行时间+结果集返回时间

可以看出需要优化的方面:数据库连接、SQL解析、SQL执行、结果集这个四个方面;

可以将上述四方面的优化简单来看:
1.SQL执行:硬盘数据访问与写入、日志记录、排序、表连接、SGA内存优化、比较
2.SQL解析:执行计划缓存、SQL解析、执行计划优化(CBO/RBO)、表连接策略、索引策略、排序
3.结果集: 结果集内存缓存、网络数据传输
4.数据库连接:数据库连接池、SQL请求

数据库IO性能试图:



从IO性能来看,优化的方向:
1.减少磁盘访问:硬盘数据访问与写入、日志、大数据量排序、大表表连接、
2.减少网络传输:结果数据请求、SQL请求、数据库连接
3.降低CPU与内存开销:SGA缓存数据访问、比较、排序、表连接、事务检测、SQL解析、函数与逻辑运算

从上述两个方向来看,优化的内容相同,划分的问题不同:
从IO性能方向的优化,可以参考:
MKing's Blog 面向程序员的数据库访问性能优化法则:http://blog.csdn.net/yzsind/article/details/6059209

从响应时间角度来看,其中涉及到了:SQL执行、结果集、数据库连接 等方面

对于SQL解析方面涉及较少,这方面的资料可以参考:
ORACLE 执行计划分析:
http://www.cnblogs.com/rootq/archive/2008/09/06/1285779.html
执行计划优化策略:
Oracle RBO、CBO简介:http://blog.csdn.net/suncrafted/article/details/4239237

如果想深入理解Oracle数据库体系结果,可以参考:
Oracle数据库体系结构:http://www.knowsky.com/386200.html