1. 程式人生 > 實用技巧 >mysql5.7的sys系統庫應用示例

mysql5.7的sys系統庫應用示例

1.檢視慢SQL語句慢在哪裡

如果我們頻繁地在慢查詢日誌中發現某個語句執行緩慢,且在表結構、索引結構、統計資訊中都無法找出原因時,則可以利用sys系統庫中的撒手鐗:sys.session檢視結合performance_schema的等待事件來找出癥結所在。那麼session檢視有什麼用呢?使用它可以檢視當前使用者會話的程序列表資訊,資料來源於sys.processlist檢視(使用該檢視可以查詢所有前臺和後臺執行緒的狀態資訊,預設按照程序等待時間和最近一條語句執行完成的時間降序排列。資料來源:

performance_schema的threads、events_waits_current、events_statements_current、events_stages_current、events_transactions_current、session_connect_attrs等表
和sys.x$memory_by_thread_by_current_bytes檢視)

查詢結果欄位與processlist檢視類似,但session檢視過濾掉了後臺執行緒,只顯示與前臺(使用者)執行緒相關的統計資料。該檢視在MySQL 5.7.9中是新增的。

下面是使用session檢視查詢的結果集。

#首先需要啟用與等待事件相關的instruments和consumers,否則last_wait欄位值可能為null
mysql> call sys.ps_setup_enable_instrument('wait');
+-------------------------+
| summary                 |
+-------------------------+
| Enabled 315
instruments | +-------------------------+ 1 row in set (0.01 sec) Query OK, 0 rows affected (0.01 sec) mysql> mysql> call sys.ps_setup_enable_consumer('wait'); +---------------------+ | summary | +---------------------+ | Enabled 3 consumers | +---------------------+ 1 row in set (0.00
sec) Query OK, 0 rows affected (0.00 sec) mysql>

11