导致数据库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_