关于Oralce数据库优化的几点总结

系统 1444 0

        个人理解,数据库性能最关键的因素在于 IO ,因为操作内存是快速的,但是读写磁盘是速度很慢的,优化数据库最关键的问题在于减少磁盘的 IO ,就个人理解应该分为物理的和逻辑的优化, 物理的是指 oracle 产品本身的一些优化,逻辑优化是指应用程序级别的优化物理优化的一些原则:

   1)、 Oracle 的运行环境(网络,硬件等)

   2)、使用合适的优化器

   3)、合理配置 oracle 实例参数

   4)、建立合适的索引(减少 IO

   5)、 将索引数据和表数据分开在不同的表空间上(降低 IO 冲突)

   6)、建立表分区,将数据分别存储在不同的分区上(以空间换取时间,减少 IO

逻辑上优化:

   1)、可以对表进行逻辑分割,如中国移动用户表,可以根据手机尾数分成 10 个表,这样 对性能会有一定的作用

   2)、Sql 语句使用占位符语句,并且开发时候必须按照规定编写 sql 语句(如全部大写, 全部小写等) oracle 解析语句后会放置到共享池中,  如: 

                  select * from Emp where name=?  这个语句只会在共享池中有一条,而如果是字 符串的话,那就根据不同名字存在不同的语句,所以占位符效率较好

   3)、 数据库不仅仅是一个存储数据的地方,同样是一个编程的地方,一些耗时的操作, 可以通过存储过程等在用户较少的情况下执行,从而错开系统使用的高峰时间,提 高数据库性能

   4)、尽量不使用 * 号,如 select * from Emp ,因为要转化为具体的列名是要查数据字典,  比较耗时

   5)、 选择有效的表名

         对于多表连接查询,可能 oracle 的优化器并不会优化到这个程度,  oracle  中多表 查询是根据 FROM 字句从右到左的数据进行的,那么最好右边的表(也就是基础表)选  择数据较少的表,这样排序更快速,如果有 link 表(多对多中间表),那么将 link 表放 最右边作为基础表,在默认情况下 oracle 会自动优化,但是如果配置了优化器的情况下, 可能不会自动优化,所以平时最好能按照这个方式编写 sql

  6)、 Where 字句规则

       Oracle  Where 字句时从右往左处理的,表之间的连接写在其他条件之前,能过滤 掉非常多的数据的条件,放在 where 的末尾, 另外 != 符号比较的列将不使用索引,列 经过了计算(如变大写等)不会使用索引(需要建立起函数),  is null is not null 等优 化器不会使用索引

  7)、 使用 Exits Not Exits  替代  In Not in

  8)、合理使用事务,合理设置事务隔离性,数据库的数据操作比较消耗数据库资源的,尽 量使用批量处理,以降低事务操作次数

关于Oralce数据库优化的几点总结


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论