導致數據庫CPU很高的原因有很多種,一般和慢SQL也有關(因為每條SQL要么占CPU高,要么占IO高,大體是這樣)。
(1)、如果服務器有多個mysql實例,需要通過top命令看看是哪個mysql實例導致的cpu高(如果不是mysql導致的cpu高,需要優化其他導致cpu的程序):
(2)、定位到占用cpu高的線程
通過top命令發現mysql占用CPU高,再看mysql進程下有多少線程占用CPU高:top -H -p [pid]
可以看到有一個mysql的線程占用的cpu較高
(3)、可以通過performance_schema.threads和information_schema.processlist表定位到該線程執行的sql(僅支持mysql5.7及以上,如果是mysql5.7以下的版本只能優化information_schema.processlist中執行時間較長的sql)
SELECT a.THREAD_OS_ID,b.user,b.host,b.db,b.command,b.time,b.state,b.info FROM performance_schema.threads a,information_