[原创]数据库的优化_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2477 | 回复: 0   主题: [原创]数据库的优化        下一篇 
geng.zhang
注册用户
等级:少校
经验:854
发帖:27
精华:0
注册:1970-1-1
状态:离线
发送短消息息给geng.zhang 加好友    发送短消息息给geng.zhang 发消息
发表于: IP:您无权察看 2014-11-21 14:56:46 | [全部帖] [楼主帖] 楼主

系统运行的平稳离不开高性能数据库的支持,但是数据库时有问题出现,主要是一些等待事件影响了数据库的运行,例如enq: TX - row lock contentiondb file sequential readlatch: cache buffers chains等,后台的一些等待事件,I/O等待事件,SQL解释和内存排序,索引等待事件等。

后台等待事件:

一般为db file sequential read 和control file sequential read,这两者,一般在查询语句使用索引读取索引块进驻内存的时候才发生,因此建议将查询中大部分索引进行修正,采用REVERSE 的方式减少索引块的争用

log file sync等待事件是指用户进程等待LGWR的写完成通知的。 该等待事件过多,说明了LGWR的写效率低下,照成的原因可能是系统提交过于频繁。我们可以关注下

log file parallel write事件,建议提高LGWR性能或使用批量提交,适当使用NOLOGGING/UNRECOVERABLE等选项。

gc buffer busy的原理,大致是:一个操作使用数据块时,会锁住这个块,另外一个操作就必须等待才能获得这个块的使用权

索引等待事件:

数据库CPU DB/DB TIME% 使用率偏低,一般从SQL ORDER BY GETS方向优化

SQL命中率欠缺:

主要是在执行SQL语句的时候,一般都会对语句进行解释,但是有时候解释的语句只占有很小的比列,需要检查应用程序是否都采用了绑定变量的方式执行SQL语句。

优化:

gc buffer busy方面:

建议是做好业务分离,这些方面一般都是集群类的等待事件,简单地说就是每个节点的应用(使用到的表)应该尽可能独立,这样是为了减少节点间的数据交互,提高数据库的性能。尤其对于频繁执行的语句,对数据库性能影响比较大,应部署在一个节点上。

log file sync方面:

建议可以通过批量提交的方式来减少log file sync等待事件对数据库性能的影响。

另外,可以考虑增加系统内存来提高数据库性能

SQL优化方面:

可以适当的给某些表的字段添加索引,

可以给某些表添加复合索引。

Alter table table_name add index indexname (column_list)
Alter table table_name add index unique (column_list)
Alter table table_name add index primary key(column_list)




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论