关于SQL优化以及数据库优化的话题

本人虽然学习从事数据库工作四年多了.但是一直认为数据库优化是个很高深的学问,尤其是sql优化.但是在本人工作的过程中对sql优化以及数据库优化有下面的理解,如果有错误的话,请给我留言指正.

首先,很多人提到如何优化SQL,本人一直认为不是说简单的改写SQL本身,要根据相关表的情况,比如有无index就会影响SQL性能,尤其是在表的数据笔记多,比如几百万,而返回的数据可能又比较少的情况下.当然,盲目的建index并不一定会提高性能.这个只是需要考虑的一个方面.


其次,有无在程序中绑定变量,这里有涉及到数据库解析SQL的过程.软解析已经硬解析.如果程序中无法修改,可以通过修改cursor_sharing参数来强制oracle适用软解析.

还有,就是表连接,这里主要说的是hash join,nested loop join和sort/mergejoin.

最后要说的就是排序,创建index或者order by,group by或者distinct的sql都会导致排序的操作.排序在9i之前,可以通过改变session的sort_area-size来加大排序区,9i之后是pga自动管理的.

sql优化的两条主要原则是

1.尽可能的减少磁盘访问,也就是说访问的data都在buffer中.

比如某些经常访问的小表,可以让它cache在buffer中.

2.尽可能的减少磁盘排序.磁盘排序比内存排序慢14000倍.

以上说的大概就是sql优化跟数据库优化的东西.

当然还有其他的很多数据库的选项,比如大快,小快,

db_multi_block-read的参数大小,本地表空间,

分区,都是性能优化中经常考虑到的options

所以说,性能优化不是一个project.而是一个循环的过程,

需要调整,测试,观察,在调整,在测试在观察的过程,最后取一个最佳的状态

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9408/viewspace-102399/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/9408/viewspace-102399/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值