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當前連接的詳細情況;
閱讀更多 碩果累累1316 的文章