数据库慢一般有三种情况:
1.逐渐变慢
2.然变慢
3.不定时变慢
第一种情况 “逐渐变慢”,要建立一个长期的监控机制。比如,写脚本每天的忙时定时收集os,network,database的信息, 每个星期出report,对收集到的信息进行分析。 这些数据的积累,可以决定后期的优化决策,并且可以是DBA说服MANAGER采用自己决策的重要数据。DBA的价值,就在每个星期的report中体现。
第二种情况 “突然变慢”,也是最容易解决的。先从业务的角度看是database的使用跟以前有何不同,然后做进一步判断。硬件网络故障通常也会引起database性能的突然下降。
第一步:察看database/os/network的系统日志,排除硬件网络问题。
第二步:察看数据库的等待事件,根据等待事件来判断可能出问题的环节。如果没有等待事件,可以排除数据库的问题。如果有等待时间,根据不同的等待事件,来找引起这些事件的根源。
比如latch等跟sql parse有关系的等待事件,os的表现是cpu的占用率高
db file scattered read等跟sql disk read有关的等待时间,os的表现是iostat可以看到磁盘读写量增加
第三步:察看os的信息,cpu/io/memory等
(1)cpu的占用率
cpu占用率与数据库性能不成反比。cpu占用率高,不能说明数据库性能慢。通常情况,一个优化很好,而且业务量确实很大的数据库,cpu占用率都会高,而且会平均分布在每个进程上。反过来,cpu的占用率高也不代表数据库性能就好,可能cpu没有用到该用的地方,要