MySQL- 5.7 sys schema筆記

来源:http://www.cnblogs.com/xinysu/archive/2017/08/14/7356046.html
-Advertisement-
Play Games

如果轉載,請註明博文來源: www.cnblogs.com/xinysu/ ,版權歸 博客園 蘇家小蘿蔔 所有。望各位支持! 如果轉載,請註明博文來源: www.cnblogs.com/xinysu/ ,版權歸 博客園 蘇家小蘿蔔 所有。望各位支持! 如果轉載,請註明博文來源: www.cnblog ...


 

      如果轉載,請註明博文來源: www.cnblogs.com/xinysu/   ,版權歸 博客園 蘇家小蘿蔔 所有。望各位支持!   

      performance_schema提供監控策略及大量監控項,包括:元數據鎖、進度跟蹤、事務、記憶體使用及存儲程式等。但是,performance_schema又過於複雜,操作不便,所以5.7新增了 sys schema,基礎數據來自於 performance 跟 information_shcema兩個庫,本身資料庫不存儲及集採數據。

1 視圖分類

  1. 主機相關
  2. innodb相關
  3. IO相關
  4. 記憶體相關
  5. 連接與會話相關
  6. 表相關
  7. 索引相關
  8. 語句相關
  9. 用戶相關
  10. 等待信息

2 日常應用

2.1 查看process

     常用的有以下3個查詢:
show processlist;
show full processlist;
select * from information_schema.processlist;

    其中,show processlist為簡要查看當前連接資料庫情況,包含SQL語句的statement列僅提供部分SQL,而show full processlist則提供完整的SQL 語句,information_schema.processlist的內容與show full processlist 內容一致,但是可以以表格查詢的形式添加where條件,達到自己的使用需求。

      除此之外,sys提供以下四個視圖查看 連接情況,這四個則更為詳細的提供了 行數情況、臨時表情況、當前SQL以及最後提交SQL(即使是sleep狀態,這裡也有最後提交的SQL可以查看)等信息。  
select * from sys.processlist;
select * from sys.session;
select * from sys.x$processlist;
select * from sys.x$session;

    由於 SQL內容提供為摘要部分,若想詳細查看,可以通過 `performance_schema`.`events_statements_current` 表格查看,通過sys.processlist 的thd_id關聯查看。  

2.2 查看表訪問量

 select table_schema,table_name,sum(io_read_requests+io_write_requests) io from schema_table_statistics group by table_schema,table_name order by io desc limit 10;
+--------------+----------------------------------+------+
| table_schema | table_name                       | io   |
+--------------+----------------------------------+------+
| ycf_sqlpub   | django_session                   | 2194 |
| dba_sqlpub   | django_session                   |  735 |
| ycf_sqlpub   | sqlversion_registersql           |  347 |
| ycf_sqlpub   | xadmin_log                       |  331 |
| ycf_sqlpub   | sqlversion_registersqllog_sqls   |  329 |
| ycf_sqlpub   | sqlversion_sqlpublishlog_version |  311 |
| ycf_sqlpub   | sqlversion_sqlpublishlog         |  308 |
| ycf_sqlpub   | sqlversion_registersqllog        |  299 |
| ycf_sqlpub   | auth_group_permissions           |  298 |
| ycf_sqlpub   | testenv_testalldb                |  295 |
+--------------+----------------------------------+------+

2.3 冗餘索引與未使用索引

# 冗餘索引查看
select table_schema,table_name,redundant_index_name,redundant_index_columns,dominant_index_name,dominant_index_columns from sys.schema_redundant_indexes;

# 未使用索引查看
select * from schema_unused_indexes;

2.4 表自增ID監控

select * from schema_auto_increment_columns \G

2.5 監控全表掃描的sql語句

select * from sys.statements_with_full_table_scans where db = 'test';

2.6 查看實際消耗磁碟IO的文件

select file,avg_read+avg_write as avg_io from io_global_by_file_by_bytes order by avg_io desc limit 10;

3 視圖一覽表

3.1 觸發器

  • sys_config 
    • 系統變數表格
    • 筆記鏈接:sys_config
    • 關註點:statement_truncate_len
      • 影響函數format_statement()截斷SQL後的長度,即最後SQL語句顯示的總長度,像 sys.processlist 中的 last_statement 的顯示長度,就是受到這個函數的約束。可以動態修改會話級別的顯示長度,預設為64。
  • sys_config_insert_set_user
    • sys_config表格發生INSERT操作,則會觸發該觸發器更新sys_config的set_by列
    • show triggers; 查看源碼
  • sys_config_update_set_user
    • sys_config表格發生UPDATE操作,則會觸發該觸發器更新sys_config的set_by列
    • show triggers; 查看源碼

3.2 視圖

     日常會用到sys庫,主要也是使用 視圖進行查詢,但是目前視圖已經非常多了,分為 帶x$跟不帶這個首碼的視圖,這兩種沒啥實質性區別,不帶 x$ 的視圖是人性化的結果展示,會有一些單位換算,就是像是 linux 指令中的  -h 選項,而帶想x$首碼的,則是原始數據單位,未經換算。      視圖那麼那麼多,實際上常用的不多,會加紅色字體顯示,其他視圖做簡單介紹。

3.2.1 主機相關

    • host_summary開頭的視圖
    • 提供IO延遲等相關信息
    • 大致視圖如下(紅色為常用)
      • The host_summary and x$host_summary Views
      • The host_summary_by_file_io and x$host_summary_by_file_io Views
      • The host_summary_by_file_io_type and x$host_summary_by_file_io_type Views
      • The host_summary_by_stages and x$host_summary_by_stages Views
      • The host_summary_by_statement_latency and x$host_summary_by_statement_latency Views
      • The host_summary_by_statement_type and x$host_summary_by_statement_type Views
    • 簡要介紹:
      • 日常中主要適用的是host_summary視圖,可以根據連接資料庫的host總的執行sql數目、執行時長、表掃描、文件IO、連接情況、用戶情況及記憶體分佈情況,可以讓DBA快速定位到是哪台host最耗費資料庫資源,對連接資料庫的所有host有一個大致的資源使用情況的瞭解。
      • 如果想詳細查看每個host的主要是在什麼文件類型上耗費IO資源,可以查看 host_summary_by_file_io_type視圖
      • 如果僅查看每台host總的IO情況,則可以查看視圖host_summary_by_file_io

3.2.2 innodb相關

    • innodb開頭的視圖
    • 彙總了innodb buffer page信息和事務等待innodb鎖信息
    • 大致視圖如下(紅色為常用,但實際上最好少用慎用)
      • The innodb_buffer_stats_by_schema and x$innodb_buffer_stats_by_schema Views
      • The innodb_buffer_stats_by_table and x$innodb_buffer_stats_by_table Views
      • The innodb_lock_waits and x$innodb_lock_waits Views
    • 簡要介紹
      • 當一個實例中有多個業務庫,由於性能問題,可能想查看下各個資料庫的記憶體占用情況,可以使用視圖 innodb_buffer_stats_by_schema,但是少用慎用,因為會掃描整個buffer pool來統計,如果所在實例buffer pool非常大,那麼這是一個極為耗費資源的查詢,沒啥事就不要用哈!這個視圖實際上是通過 視圖 innodb_buffer_stats_by_table的數據做了group by object_schema得到的。
      • (截圖未測試環境,所以使用到的記憶體很少)
      • 在某種情況下,需要查詢表格在記憶體中的占用情況,可以通過視圖 innodb_buffer_stats_by_table來查詢,也是掃描整個buffer pool統計,少用慎用。

3.2.3 IO相關

    • io開頭的視圖
    • 等待IO情況/IO使用情況
    • 大致視圖如下(紅色為常用
      • The io_by_thread_by_latency and x$io_by_thread_by_latency Views
        • 各個IO線程的使用情況
      • The io_global_by_file_by_bytes and x$io_global_by_file_by_bytes Views
        • 各個資料庫文件的IO情況
      • The io_global_by_file_by_latency and x$io_global_by_file_by_latency Views
        • 各個資料庫文件的IO耗時情況
      • The io_global_by_wait_by_bytes and x$io_global_by_wait_by_bytes Views
        • 資料庫事件IO等待情況
      • The io_global_by_wait_by_latency and x$io_global_by_wait_by_latency Views
        • 資料庫事件IO等待耗時情況
      • The latest_file_io and x$latest_file_io Views
        • 當前正在讀寫文件的情況
    • 簡要介紹
      • 查看資料庫實例的IO分佈情況,及著重優化對象,可以使用 io_global_by_file_by_bytes

3.2.4 記憶體相關

    • memory開頭的視圖
    • 從主機/線程/用戶等角度展示記憶體的使用情況
      • The memory_by_host_by_current_bytes and x$memory_by_host_by_current_bytes Views
      • The memory_by_thread_by_current_bytes and x$memory_by_thread_by_current_bytes Views
      • The memory_by_user_by_current_bytes and x$memory_by_user_by_current_bytes Views
      • The memory_global_by_current_bytes and x$memory_global_by_current_bytes Views
      • The memory_global_total and x$memory_global_total Views
    • 簡要介紹
      • 當前記憶體使用情況,從 host、thread、user等角度來分別查看,對應各自的視圖即可。

3.2.5 連接與會話相關

    • 含有processlist和session的視圖
    • 會話相關的信息
    • 大致視圖如下(紅色為常用
      • The processlist and x$processlist Views
      • The session and x$session Views
      • The session_ssl_status View
    • 簡要介紹
      • 查看連接使用情況,session的結果跟processlist類似。查看連接情況,有非常多種方式,每種方式都有各自的使用情況,詳情可以查看上文說明。

3.2.6 表相關

    • schema_table開頭的視圖
    • 從全表掃描/innodb緩衝池表現表統計信息
    • 大致視圖如下(紅色為常用
      • The schema_table_lock_waits and x$schema_table_lock_waits Views
      • The schema_table_statistics and x$schema_table_statistics Views
      • The schema_table_statistics_with_buffer and x$schema_table_statistics_with_buffer Views
      • The schema_tables_with_full_table_scans and x$schema_tables_with_full_table_scans Views
      • The schema_auto_increment_columns View
    • 簡要介紹
      • 查看表格的update、delete、insert、select的IO情況,可以使用schema_table_statistics視圖
      • 查看表格的全表掃描情況,抓取需要重點優化的對象,可以使用視圖schema_tables_with_full_table_scans
      • 查看表格的自增長是否快達到瓶頸了,有些表格存在頻繁的刪除操作,可能導致自增ID的最大值跟表格數量極不相符合,為了避免問題,可以通過視圖 schema_auto_increment_columns,查看有哪些表格快要達到自增的瓶頸值

3.2.7 索引相關

    • 含有index的視圖
    • 大致視圖如下(紅色為常用,一不小心都加紅了
      • The schema_object_overview View
      • The schema_redundant_indexes and x$schema_flattened_keys Views
      • The schema_unused_indexes View
      • The schema_index_statistics and x$schema_index_statistics Views
    • 簡要介紹
      • 查看當前實例內各個數據的對象及索引分佈情況,可以使用 schema_object_overview
      • 查看資料庫的冗餘索引情況,可以通過視圖 schema_redundant_indexes,但是請記住,不是所有冗餘索引都要刪除,請衡量實際的使用情況、索引大小、索引掃描情況後再決定。
      • 查看資料庫沒有使用的索引,可以使用 schema_unused_indexes
      • 查看索引的select \update\delete\insert情況,可以使用schema_index_statistics

3.2.8 語句相關

    • statement開頭的視圖
    • 錯誤數、警告數、執行全表掃描、使用臨時表、執行排序等信息
    • 大致視圖如下(紅色為常用,功能蠻強大,就是實際還蠻少用到的
      • The statement_analysis and x$statement_analysis Views
      • The statements_with_errors_or_warnings and x$statements_with_errors_or_warnings Views
      • The statements_with_full_table_scans and x$statements_with_full_table_scans Views
      • The statements_with_runtimes_in_95th_percentile and x$statements_with_runtimes_in_95th_percentile Views
      • The statements_with_sorting and x$statements_with_sorting Views
      • The statements_with_temp_tables and x$statements_with_temp_tables Views
    • 簡要描述
      • 彙總SQL中錯誤數、警告數、執行全表掃描、使用臨時表、執行排序等信息,sql語句也是使用 format_statement() 函數做了長度限制,如果想查看完整的SQL,可以通過 這個表格的這一列查看performance_schema`.`events_statements_summary_by_digest`.`DIGEST_TEXT`,關聯的添加列是 DIGEST

3.2.9 用戶相關

    • user開頭的視圖
    • 用戶使用的文件IO/執行語句的統計信息
    • 大致視圖如下(紅色為常用
      • The user_summary and x$user_summary Views
      • The user_summary_by_file_io and x$user_summary_by_file_io Views
      • The user_summary_by_file_io_type and x$user_summary_by_file_io_type Views
      • The user_summary_by_stages and x$user_summary_by_stages Views
      • The user_summary_by_statement_latency and x$user_summary_by_statement_latency Views
      • The user_summary_by_statement_type and x$user_summary_by_statement_type Views
    • 簡要介紹
      • 從用戶的角度,分別統計文件的IO情況、sql執行情況,如果資料庫的用戶是按照業務模塊來劃分的,那麼則可以清晰的看到哪些業務耗費資源較多

3.2.10 等待信息

    • wait開頭的視圖
      • The wait_classes_global_by_avg_latency and x$wait_classes_global_by_avg_latency Views
        • 按事件event分組,統計各個event的平均延遲時長
      • The wait_classes_global_by_latency and x$wait_classes_global_by_latency Views
        • 按事件event分組,統計各個event的總延遲時長
      • The waits_by_host_by_latency and x$waits_by_host_by_latency Views
      • The waits_by_user_by_latency and x$waits_by_user_by_latency Views
      • The waits_global_by_latency and x$waits_global_by_latency Views
        • 所有event的延遲情況
    • 簡要介紹
      • 等待類視圖,分別從事件、主機、用戶等角度,進行查詢分析。
 
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • SharedPreferences是Android四種數據存儲技術中的一種,它是一種輕型的數據存儲方式,它的本質是基於XML文件存儲key-value鍵值對數據,通常用來存儲一些簡單的配置信 息,其對象本身只能獲取數據,不支持存儲和修改,存儲和修改需要通過 Edit 對象來實現,例如用戶登錄時對賬號 ...
  • 1. Android中如何從一個Activity中ArrayList<HashMap<String,Object>>傳遞到另一個activity? eg: 存:intent.putExtra("arrayList", dataList); 取(記得強制類型轉換): ArrayList<HashMap ...
  • 學習了一個月的Android,接觸了人生中第一個安卓項目,對於一個小白來說,總結是很重要的學習方法,以下我把學到的東西總結以下: 1. 1》okhttp3用法解析(邊貼代碼邊熟悉) 同步Get 下載一個文件,列印他的響應頭,以string形式列印響應體。 響應體的 string() 方法對於小文檔來 ...
  • 1.創建一個APPLE ID,然後進入這個鏈接(企業開發者申請鏈接): https://developer.apple.com/programs/enterprise/ 2.點擊下圖按鈕 3.進入以下頁面 這裡只介紹怎樣成為企業開發者,關於鄧白氏如何申請另外文檔中再詳細介紹(鄧白氏查詢鏈接:http ...
  • 創建並啟動 先創建線程,再啟動 // 創建 NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(run:) object:nil]; // 啟動 [thread start]; 創建並啟動 [NSTh ...
  • 1.背景 寫博客快兩年了,寫了100+的文章,最火的文章也是大家最關註的就是如何實現android系統截屏。其實我們google android_screen_shot就會找到很對辦法,但那些都是很多年前的了,在android4.*版本後,android對於源碼進行了更正,使得以前的方法都不能夠使用 ...
  • 一致性非鎖定讀(consistent nonlocking read) 一致性非鎖定讀是值InnoDB存儲引擎通過多版本控制(multi versioning)的方式來讀取當前執行時間資料庫中的數據。如果被讀的數據行被加了排他鎖,在讀取這行數據的時候並不會等待鎖釋放,而是讀取該行的一個快照數據。 之 ...
  • 在SSIS工程的開發過程中,OLEDB 數據源和目標組件是最常用的數據流組件。從功能上講,OLEDB 數據源組件用於從OLEDB 提供者(Provider)中獲取數據,傳遞給下游組件,OLEDB提供者是外部數據源,SQL Server是其中一種OLEDB提供者;OLEDB目標組件用於把數據流插入到關 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...