
客户反映,mysql(版本5.7.29)数据库非常慢,差cpu显示占用率非常高,请问大家有什么解决思路吗?
操作系统centos 7.6

1、show processlist;
2、show engine innodb status \G;
3、看看阻塞lock
–查看哪个线程被哪个堵塞,waiting_thread_id代表等待线程,blocking_thread_id代表堵塞线程
SELECT
r.trx_id waiting_trx_id,
r.trx_mysql_thread_id waiting_thread_id,
r.trx_query waiting_query,
b.trx_id blocking_trx_id,
b.trx_mysql_thread_id blocking_thread_id,
b.trx_query blocking_query,
now( ) - r.TRX_STARTED blocking_time
FROM
information_schema.innodb_lock_waits w
INNER JOIN information_schema.innodb_trx b ON b.trx_id = w.blocking_trx_id
INNER JOIN information_schema.innodb_trx r ON r.trx_id = w.requesting_trx_id;
–查看源头sql
SELECT
a.sql_text,
c.id,
d.trx_started,
b.processlist_user,
b.processlist_host
FROM
PERFORMANCE_SCHEMA.events_statements_current a
JOIN PERFORMANCE_SCHEMA.threads b ON a.thread_id = b.thread_id
JOIN information_schema.PROCESSLIST c ON b.processlist_id = c.id
JOIN information_schema.innodb_trx d ON c.id = d.trx_mysql_thread_id
WHERE
c.id = 304192
ORDER BY
d.trx_started;
都截图看看??


