本文共 822 字,大约阅读时间需要 2 分钟。
面试的时候,经常问一个问题:数据库慢了怎么办?
请问,是怎么慢?
突然慢还是一直慢?整个数据库慢还是某个功能慢?是时快时慢?具体有多慢?
如果是突然慢,那么,问下开发/DBA/应用管理员/业务人员,刚做了什么?如果安装了OMS,看下当前的顶级活动,或是生成最近的一次AWR,查明数据库在执行什么sql。有必要看下服务器的负载,IO、CPU、内存的使用率都要查一下。友情提示:如果光纤链路使用了HA,假如坏了一条,而恰好当前使用了它,那么慢是肯定的。良好的习惯是查看下alert日志,确定是否有报错。总而言之,要快速定位到问题sql,对症下药,方见疗效。
如果是一直慢,这属于慢性病,需要仔细收集各个时间段服务器、数据库的负载信息,OSWatcher或许有帮助,找出top sql,依据二八原则,分清主次,迭代调优。
如果整个数据库都慢,做什么都慢,登录也慢,select * from emp也慢,那么,先看下CPU是不是到了100%吧。
如果是某个功能慢,找出慢的sql,然后,确认,应该多快?努力优化之。
如果是有时快有时慢,或是生产慢测试快,还是要先定位到sql,然后,检查表、索引是否结构相同大小相当,对比执行计划,找出具体的慢的步骤。检查下同一个sql是不是有多个执行计划,或许,固定下执行计划就OK了。偶尔,表数据量一样,执行计划相同,但是测试的执行效率是生产的数倍,肿么破?再友情提示:rows processed一样吗?奇葩的问题总是不能尽述,具体问题仍需具体分析。
总之,慢有不同,处理自然有不同。
秋天收获了果实,肯定是有人在春天种下了希望,万物都是有因果的,慢也一样。请问天下的数据库有生来就慢的吗?
找出问题SQL和性能瓶颈,解决它,即可!
那么问题又来了,怎么找出?如何解决?按下葫芦浮起瓢又该怎么办?
......
如果,如果,没有如果。(应该,此处有梁静茹的歌声^_^)
如果什么都要别人回答,我想,您还是回家吧。
转载地址:http://bglbb.baihongyu.com/