一.使用show profile查询剖析工具,查看mysql语句执行时间:
官网:https://dev.mysql.com/doc/refman/8.0/en/show-profile.html
mysql -uroot -p //进入数据库服务器
use 数据库名 //进入数据库
set profiling=1; //开启profiling参数
select * from user; //mysql查询语句
show profiles; //查看mysql语句执行时间(在set profiling=1后的所有mysql语句的执行时间)
show profile; // 查看最近一次mysql语句开始执行时间,查询时间等
show profile cpu; //显示用户cpu时间,系统cpu时间
show profile for query 2; //查看第二次mysql语句开始执行时间,查询时间等
二,MySQL performance_schema监控mysql
官网:https://dev.mysql.com/doc/refman/8.0/en/performance-schema.html
show databases; //查看数据库
use performance_schema; //使用performance_schema数据库
show tables; //查看当前数据库中的所有表
show variables like 'performance_schema'; //查看当前变量是否开启(是否开启,如果没有改,默认是开启,要修改就在my.cnf配置文件上修改)
show tables like '%statement%'; //语句事件记录表,这些表记录了语句事件信息,当前语句事件表events_statements_current,历史语句事件表events_statements_history和长语句历史事件表events_statements_history_long,以及聚合后的摘要表summary,其中,summary表还可以根据账号(account),主机(host),程序(program),线程(thread),用户(user)和全局(global)再进行细分)
show tables like '%wait%' //等待事件记录表,与语句事件类型的相关记录表类似
show tables like '%stage%' //阶段事件记录表,记录语句执行的阶段事件的表
show tables like '%transaction%' //事务事件记录表,记录事务相关的事情的表
show tables like '%file%' //监控文件系统层调用的表
show tables like '%memory%' //监控内存使用的表
show tables like '%setup%' //动态对performance_schema进行配置的配置表
performance_schema的简单配置与使用:
查看是否开启:
打开等待事件的采集器配置项开关,需要修改setup_instruments配置表中对应的采集器配置项
update setup_instruments set enabled = 'yes',timed = 'yse' where name like 'wait%';
打开等待事件的保存表配置开关,修改setup_consumers配置表中对应的配置项
update setup_consumers set enabled = 'yes' where name like '%wait%';
当配置完成之后可以查看当前server正在做什么,可以通过查询events_waits_current表来得知,该表中每个线程只包含一行数据,用于显示每个线程的最新监视事件
select * from events_waits_current\G
_history表中记录每个线程应该执行完成的事件信息,但每个线程的事件信息只会记录10条,再多就会被覆盖,_history_long表中记录所有线程的事件信息,但总记录数量是10000,超过就会被覆盖
select thread_id,event_id,event_name,time_wait from events_waits_history order by thread_id limit 21
summarry表提供所有事件的汇总信息,该组中的表以不同的方式汇总事件数据(如:按用户,按主机,按线程等等)如:要查看那些instruments占用最多的事件,可以提供对events_waits_summary_global_by_event_name表的COUNT_STAR或SUM_TIMER_WAIT列进行查询(这两列是对事件的记录数执行COUNT(*),事件记录的TIMER_WAIT列执行SUM(TIMER_WAIT)统计而来)
select event_name,count_star from events_waits_summary_global_by_event_name order by count_star desc limit 10
instance表记录了哪些类型的对象会被检测,这些对象在被server使用时,在该表中将会产生一条事件记录,如file_instances列出了文件I/O操作及其关联文件名
select * from file_instances limit 20
三,show processlist 查看连接的线程个数
show processlist //查看当前数据库所有连接
官网:https://dev.mysql.com/doc/refman/8.0/en/show-processlist.html