主页 > 知识库 > 数据库 > Oracle >

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

来源:中国IT实验室 作者:佚名 发表于:2013-07-23 17:50  点击:
个人理解,数据库性能最关键的因素在于IO,因为操作内存是快速的,但是读写磁盘是速度很慢的,优化数据库最关键的问题在于减少磁盘的IO,就个 人理解应该分为物理的和逻辑的优化, 物理的是指oracle产品本身的一些优化,逻辑优化是指应用程序级别的优化物理
 个人理解,数据库性能最关键的因素在于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)合理使用事务,合理设置事务隔离性,数据库的数据操作比较消耗数据库资源的,尽量使用批量处理,以降低事务操作次数

    有帮助
    (0)
    0%
    没帮助
    (0)
    0%
  • 上一篇:基于Oracle的大数据导入方案探索
  • 下一篇:没有了
  • 网站地图 威尼斯人彩票斯洛伐克 威尼斯人彩票黑龙江11选5 99彩票手机下注
    申博官网直营网 申博现金直营网 疯狂老虎机登入 新葡京娱乐官方网址
    金冠娱乐注册送88登入 633易博手机下注 亚洲在线ab登入 百家乐路单网
    威尼斯人彩票江苏快三 99彩票PC蛋蛋 99彩票重庆时时彩 99彩票福彩3D
    99彩票北京PK拾 威尼斯人彩票排列三、五 威尼斯人彩票湖北快三 威尼斯人彩票东京28
    651SUN.COM XSB318.COM 881XTD.COM 785DC.COM 678XTD.COM
    688BBIN.COM 129SUN.COM 8SJZS.COM 4444XSB.COM XSB838.COM
    66sbmsc.com 717sj.com 8NNS.COM 638XTD.COM 22sbmsc.com
    989XTD.COM 33sbsg.com 8DQS.COM 828XTD.COM 1111ib.com