test0606

Performance Schema 提供了一种在数据库运行时实时检查 server 的内部执行情况的方法。performance_schema数据库中的表使用 performance_schema 存储引擎。该数据库主要关注数据库运行过程中的性能相关的数据,与
创建表的,而且这个数据库它默认的存储引擎是 performance_schema 存储引擎。
第二点,performance_schema 通过监视 server 的事件来实现监视 server 内部运行情况,“事件”就是 server 内部活动中所做的任何事情以及对应的时间消耗,利用这些信息来判断 server 中的相关资源消耗。一般来说,事件可以是函数调用、操作系统的等待、SQL 语句执行的阶段(如 sql 语句执行过程中的 parsing或sorting 阶段)或者整个SQL 语句与SQL 语句集合。事件的采集可以方便的提供 server 中的相关存储引擎对磁盘文件、表I/O、表锁等资源的同步调用信息。
为什么说这种事件与写入二进制中的事件是不一样的?performance_schema
据库里面的所有表的数据是不会进行持久化的,也就是不会向我们的磁盘里面进行存储,在内存里面存储。这也就意味着每次当你把MySQL的服务关闭之后,数据自动清空,然后下一次开启数据库服务之后,会重新监控我们的服务,然后填充数据,也就是说没有办法直接看数据文件,其实我们也没必要看这个文件,直接看表里面的数据即可。
第四点,performance_schema 中的事件只记录在本地 server的performance_schema中,其下的这些表中数据发生变化时不会被写入 binlog 中,也不会通过复制机制被复制到其他 server中

 

 

instruments 本质生产者 采集mysql各种各样的操作产生的事件信息。 监控采集配置项

 

comsumers消费者 用于存储来自instruments采集的数据。消费存储配置项。

performance_schema服务默认开启,但某些属性值不是开启的。

select * from setup_instruments;

 

 

等待时间记录表

show tables like '%like%';

UPDATE setup_instruments SET ENABLED = 'YES', TIMED = 'YES' where name like '%wait%';

UPDATE setup_comsumers SET ENABLED = 'YES' where name like '%wait%';
 

格式化输出

select * from events_waits_current\G

 

--1、哪类的 SQL 执行最多?
SELECT DIGEST_TEXT,COUNT_STAR,FIRST_SEEN,LAST_SEEN FROMevents_statements_summary_by_digest ORDER BY COUNT_STAR DESC
--2、哪类 SQL的平均响应时间最多?
SELECT DIGEST_TEXT,AVG_TIMER_WAIT FROM
events_statements_summary_by_digest ORDER BY COUNT_STAR DESC
--3、哪类 SQL 排序记录数最多?
SELECT DIGEST_TEXT,SUM_SORT_ROWS FROM
events_statements_summary_by_digest ORDER BY COUNT_STAR DESC
--4、哪类 SQL 扫描记录数最多?
SELECT DIGEST_TEXT,SUM_ROWS_EXAMINED FROM
events_statements_summary_by_digest ORDER BY COUNT_STAR DESC
--5、哪类 SQL 使用临时表最多?
SELECT
DIGEST_TEXT,SUM_CREATED_TMP_TABLES,SUM_CREATED_TMP_DISK_TABLESFROM events_statements_summary_by_digest ORDER BY COUNT_STAR DESC
--6、哪类 SQL 返回结果集最多?
SELECT DIGEST_TEXT,SUM_ROWS_SENT FROM
events_statements_summary_by_digest ORDER BY COUNT_STAR DESC
--7、哪个表物理IO最多?
SELECT
file_name,event_name,SUM_NUMBER_OF_BYTES_READ,SUM_NUMBER_OF_BYTES
_WRITE FROM file_summary_by_instance ORDER BY
SUM_NUMBER_OF_BYTES_READ+SUM_NUMBER_OF_BYTES_WRITE DESC
--8、哪个表逻辑IO最多?
SELECT
object_name,COUNT_READ,COUNT_WRITE,COUNT_FETCH,SUM_TIMER_WAIT FROM table_io_waits_summary_by_table ORDER BY sum_timer_wait DESC

--9、哪个索引访问最多?
SELECT
OBJECT_NAME,INDEX_NAME,COUNT_FETCH,COUNT_INSERT,COUNT_UPDATE,COUNT_DELETE FROM table_io_waits_summary_by_index_usage ORDER BYSUM_TIMER_WAIT DESC
--10、哪个索引从来没有用过?
SELECT OBJECT_SCHEMA,OBJECT_NAME,INDEX_NAME FROMtable_io_waits_summary_by_index_usage WHERE INDEX_NAME IS NOT NULL ANDCOUNT_STAR =0 AND OBJECT_SCHEMA <> 'mysql' ORDER BY
OBJECT_SCHEMA,OBJECT_NAME;
--11、哪个等待事件消耗时间最多?
SELECT EVENT_NAME,COUNT_STAR,SUM_TIMER_WAIT,AVG_TIMER_WAITFROM events_waits_summary_global_by_event_name WHERE event_name != 'idle'ORDER BY SUM_TIMER_WAIT DESC
--12-1、剖析某条 SQL的执行情况,包括 statement 信息,stege 信息,wait 信息
SELECT EVENT_ID,sql_text FROM events_statements_history WHERE sql_text LIKE'%count(*)%';
--12-2、查看每个阶段的时间消耗
SELECT event_id,EVENT_NAME,SOURCE,TIMER_END-TIMER_START FROMevents_stages_history_long WHERE NESTING_EVENT_ID=1553;
--12-3、查看每个阶段的锁等待情况
SELECT
event_id,event_name,source,timer_wait,object_name,index_name,operation,nesting_event_id FROM events_waits_history_longWHERE nesting_event_id=1553;
现在你已经知道 performance_schema 的功能了,搭建一个监控系统出来,只要读取这些表里面的数据即可。


Show processlist
除了可以监控mysql的性能之外,还有一个非常重要的点,就是监控我们数据库的连接,执行如下命令:

show processlist

实时监控连接情况

https://dev.mysql.com/doc/refman/5.7/en/show-processlist.html

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值