数据库运行过程中会出现慢SQL导致响应请求慢,系统资源消耗殆尽
对于慢SQL语句的发现和优化是运维中需要经常接触的工作。因此,需要关注慢SQL语句,对其进行追踪和优化。
1、设置数据库参数
(1)启动日志收集功能
logging_collector = on;
(2)设置慢SQL阈值
设置对于单个SQL最小的执行时间,执行时间大于这个值的语句都将会被记录到日志中。
log_min_duration_statement = 1s;
2、模拟慢SQL执行
(1)执行时间大于1s的慢sql
(2)查看执行计划
(3)查看日志记录
(4)慢SQL(耗CPU)
执行SQL花费10279.096ms
3、追踪慢SQL
(1)日志记录慢sql语句
(2)通过系统资源使用查找慢sql
(3)查询慢执行慢sql的后台进程
select pid,datname,client_addr,query,state from sys_stat_activity where state ='active' and pid <> 3269;
总结:通过查找占用系统CPU、内存、io高的进程,在数据库中查找此进程执行的序列找出慢sql进程进行优化。