oracle dba都應該知道 oracle中提供了大量的檢視供dba們排查問題使用,並且有等待事件幫助大家快速定位問題屬於哪一類。mysql 中也有performance schema幫助大家去分析排查問題,並且在5.7中增加了sys schema,將performance schema和information_schema
的資訊格式化後,供大家更方便的分析問題。
這裡先介紹先performance schema的使用方式,便於後面大家更好的去使用sys schema。
開啟performance_schema=on
之後我們還需要進行設定instruments及consumers
instruments通俗講就是監控項可以通過setup_instruments
表設定需要開啟對哪些項監控進行統計
consumers就是控制是否將監控到的結果進行記錄:
如果不開啟instruments和consumers則相應的事件檢測則不能使用,也就不能收集相應的等待事件和效能的統計。update setup_instruments set enabled = 'yes', timed = 'yes';
update setup_consumers set enabled = 'yes';
當然我們也可以單獨設定某乙個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_instrumentation
thread_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
select
object_schema,
object_name,
index_name
from table_io_waits_summary_by_index_usage
where index_name is
notnull
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_s
from 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使用簡介 一
作者 董紅禹 沃趣科技mysql高階技術專家 performance schema簡介 oracle dba都應該知道 oracle中提供了大量的檢視供dba們排查問題使用,並且有等待事件幫助大家快速定位問題屬於哪一類。mysql 中也有performance schema幫助大家去分析排查問題,並...
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 然後在編譯時...