Mysql—sys庫功能整理

Sys庫裡的數據來源

Sys庫所有的數據源來自:performance_schema。目標是把performance_schema的把複雜度降低,讓DBA能更好的閱讀這個庫裡的內容。讓DBA更快的瞭解數據庫的運行情況。

Sys庫下有兩種表

字母開頭: 適合人閱讀,顯示是格式化的數

x$開頭 : 適合工具採集數據,原始類數據

每類表大概介紹

sys_開頭是庫裡的配置表:

sys_config用於sys schema庫的配置

視圖:

host : 以IP分組相關的統計信息

innodb : innodb buffer 相關信息

io : 數據內不同維度展的IO相關的信息

memory : 以IP,連接,用戶,分配的類型分組及總的佔用顯示內存的使用

metrics : DB的內部的統計值

processlist : 線程相關的信息(包含內部線程及用戶連接)

ps_ : 沒有工具統計的一些變量(沒看出來存在的價值)

schema : 表結構相關的信息,例如: 自增,索引, 表裡的每個字段類型,等待的鎖等等

session : 用戶連接相關的信息

statement : 基於語句的統計信息(重店)

statements_ : 出錯的語句,進行全表掃描, 運行時間超長,排序相等(重點)

user_ : 和host_開頭的相似,只是以用戶分組統計

wait : 等待事件,比較專業,難看懂。

waits : 以IP,用戶分組統計出來的一些延遲事件,有一定的參考價值。

Sys庫能做什麼,那麼我們先來看看以下的問題,對於數據庫,你有沒有以下的疑問?

1. 誰使用了最多的資源? 基於IP或是用戶?

2. 大部分連接來自哪裡及發送的SQL情況?

3. 機器執行多的SQL語句是什麼樣?

4. 哪個文件產生了最多的IO,它的IO模式是怎麼樣的?

5. 那個表的IO最多?

6. 哪張表被訪問過最多?

7. 哪些語句延遲比較嚴重?

8. 哪些SQL語句使用了磁盤臨時表

9. 哪張表佔用了最多的buffer pool

10. 每個庫佔用多少Buffer pool

11. 每個連接分配多少內存?

12. MySQL內部現在有多個線程在運行?

Mysql—sys庫整理(部分)

一、 函數整理

1) format_time()時間函數,單位:納秒 1秒=1000000000 納秒(ns)

2) format_bytes() 存儲函數 單位:字節

3) ps_thread_trx_info() 根據線程ID 查出具體的SQL語句及狀態。

二、 視圖整理

1) user_summary 此視圖記錄用戶登陸的個數,磁盤IO,內存使用情況等;

2) user_summary_by_file_io_type 此祖峰記錄用戶關於文件的IO類型及延時時間等;

3) user_summary_by_statement_latency 用戶延時統計監控;

4) user_summary_by_statement_type 聲明類型監控;

5) io_by_thread_by_latency IO線程延時監控;

6) io_global_by_file_by_latency 全局IO線程延時監控;

7) latest_file_io 最新的文件線程;

8) schema_table_statistics 對錶的統計 包括行數,磁盤IO,讀、寫等;

9) schema_index_statistics 對索引的統計;

10) schema_tables_with_full_table_scans 表的簡單統計;

11) schema_unused_indexes 沒有使用到的索引;

12) waits_global_by_latency 全局等待情況;

13) waits_by_user_by_latency 用戶等待情況;

14) schema_table_lock_waits 鎖表等待監控;

15) innodb_lock_waits innodb相關的鎖等待監控;

16) statement_analysis 執行過的SQL相關監控;

17) statements_with_errors_or_warnings執行過程出錯或警告的SQL記錄;

18) statements_with_temp_tables 臨時表訪問記錄;

19) statements_with_full_table_scans全表掃描;

20) session當前連接的詳細情況;


分享到:


相關文章: