Performance Schema使用簡介 一

2021-08-02 22:51:56 字數 4767 閱讀 3895

作者  董紅禹

沃趣科技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_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 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_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使用簡介 一

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 然後在編譯時...