作者 董紅禹
沃趣科技mysql高階技術專家
performance schema簡介
oracle dba都應該知道 oracle中提供了大量的檢視供dba們排查問題使用,並且有等待事件幫助大家快速定位問題屬於哪一類。mysql 中也有performance schema幫助大家去分析排查問題,並且在5.7中增加了sys schema,將performance schema和information_schema的資訊格式化後,供大家更方便的分析問題。
這裡先介紹先performance schema的使用方式,便於後面大家更好的去使用sys schema。
performance schema開啟方式
在配置檔案中新增performance_schema=on
開啟performance_schema=on之後我們還需要進行設定instruments及consumers
instruments通俗講就是監控項可以通過setup_instruments表設定需要開啟對哪些項監控進行統計
consumers就是控制是否將監控到的結果進行記錄
update setup_instruments set enabled = 'yes', timed = 'yes';update setup_consumers set enabled = 'yes';
如果不開啟instruments和consumers則相應的事件檢測則不能使用,也就不能收集相應的等待事件和效能的統計。
當然我們也可以單獨設定某乙個instruments的開啟和關閉
update setup_instruments set enabled = 'no'where name = 'wait/io/file/sql/binlog';
為了防止重啟後恢復預設配置可以新增到配置檔案中設定
performance-schema-instrument='instrument_name=value'performance-schema-consumer-consumer_name=value
instrument_name和consumer_name
可以通過查詢setup_instruments和setup_consumers;檢視
setup_consumers中的層級關係
mysql> select * from setup_consumers;+--------------------------------+---------+
| name | enabled |
+--------------------------------+---------+
| events_stages_current | yes |
| events_stages_history | yes |
| events_stages_history_long | yes |
| events_statements_current | yes |
| events_statements_history | yes |
| events_statements_history_long | yes |
| events_waits_current | yes |
| events_waits_history | yes |
| events_waits_history_long | yes |
| global_instrumentation | yes |
| thread_instrumentation | yes |
| statements_digest | yes |
+--------------------------------+---------+
12 rows in set (0.00 sec)
setup_consumers中的事件表有層級之分 ,我們可以通過上面看到有 global、thread、current、history、history_long,他們之間的層級如下:
global_instrumentationthread_instrumentation
events_waits_current
events_waits_history
events_waits_history_long
events_stages_current
events_stages_history
events_stages_history_long
events_statements_current
events_statements_history
events_statements_history_long
statements_digest
也就是說,如果設定了global的才會去檢查thread的有沒有被設定,如果thread的設定了才會去檢查current的有沒有被設定,如果global的沒有被設定則thread和current都不去檢查,相應的資訊也不會記錄到對應的表中。
如果global_instrumentation沒有被設定則對應的表中都不會記錄任何資訊。
這裡的history、history_long可以通過引數設定大小,因為是記憶體表,如果太大會占用很多記憶體。
setup_instruments中的型別
mysql> select name,count(*) from setup_instruments group by left(name,5);+---------------------------------+----------+
| name | count(*) |
+---------------------------------+----------+
| idle | 1 |
| stage/sql/after create | 108 |
| statement/sql/select | 168 |
| wait/synch/mutex/sql/page::lock | 279 |
+---------------------------------+----------+
4 rows in set (0.00 sec)
我們可以看到setup_instruments中的型別有四種(5.6版本)。
具體的解釋大家可以在官網中檢視:
簡單使用介紹
簡單介紹幾個語句用於排查sql語句的效率
select object_schema, thread_id tid, substr(sql_text, 1, 50) sql_text, rows_sent rs, rows_examined re,created_tmp_tables,no_index_used,no_good_index_used from performance_schema.events_statements_history where (no_index_used=1 or no_good_index_used=1) and sql_text not like '%performance_schema%'\g
selectobject_schema,
object_name,
index_name
from table_io_waits_summary_by_index_usage
where index_name is not null
and count_star = 0
and object_schema <> 'mysql'
order by object_schema,object_name;
select eshl.event_name, sql_text, eshl.timer_wait/1000000000000 w_sfrom performance_schema.events_stages_history_long eshl
join performance_schema.events_statements_history_long esthl
on (eshl.nesting_event_id = esthl.event_id)
where eshl.timer_wait > 1*10000000000\g
總 結
此次簡單介紹了performance schema的使用,後面會逐步介紹使用performance schema的一些實戰功能。
Performance Schema使用簡介 一
oracle dba都應該知道 oracle中提供了大量的檢視供dba們排查問題使用,並且有等待事件幫助大家快速定位問題屬於哪一類。mysql 中也有performance schema幫助大家去分析排查問題,並且在5.7中增加了sys schema,將performance schema和info...
CppUnit使用簡介
c 單元測試工具cppunit使用簡介 準備工作 1.到 2.解壓檔案,進入src資料夾,開啟cppunitlibraries.dsw。分別編譯這兩個project,輸出位置均為lib資料夾。3.在vc的tools options directories include files和library ...
libpcap使用簡介
li bpcap是unix linux平台下的網路資料報捕獲函式包,大多數網路監控軟體都以它為基礎。這個庫的位置在 usr local lib下.在 usr local include下是他的標頭檔案pcap.h。要寫乙個使用libpcap庫函式的程式只需要在 中加上 i nclude 然後在編譯時...