1. 程式人生 > >MySQL- 5.7 sys schema筆記

MySQL- 5.7 sys schema筆記

    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 
    • 系統變量表格
    • 關注點: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的延遲情況
    • 簡要介紹
      • 等待類檢視,分別從事件、主機、使用者等角度,進行查詢分析。

相關推薦

MySQL- 5.7 sys schema筆記

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

效能優化利器:剖析MySQL 5.7新特徵 sys schema

 導讀:很多團隊在評估合適的時機切換到 MySQL 5.7,本文是李春在高可用架構群的分享,介紹 MySQL 5.7 新的效能分析利器。 李春,現任沃趣科技 MySQL 負責人,高階 MySQL 資料庫專家,從事 MySQL 開發和運維工作 8 年。在阿里巴巴擔任 MySQL 資料庫

mysql 5.7.10 啟動多實例筆記

tin strong oca error datadir mysqld default init ini 1. 復制配置文件 cp /etc/my.cnf /etc/my3308.cnf 2. 修改配置文件 3. 創建目錄, 並賦予權限 4.

通過 SYS 查看 MySQL 5.7 的鎖

wait ffffff 分享圖片 lec tex src log 5.7 mar select * from sys.innodb_lock_waits\G 通過 SYS 查看 MySQL 5.7 的鎖

mysql 5.7.18 原始碼安裝筆記

之所以貼出這樣一篇筆記呢?主要是因為很久之前,原始碼安裝MySQL的時候,碰到了太多太多的坎坷。 如果你有興趣進行原始碼安裝,那麼請不要以這篇文章為標準,因為每個人的及其環境等其他因素還是差距比較大的。 但可以作為一篇流程參考文件,其中的坑點總結,希望能幫助大家繞過一些不

windows 下mysql-5.7.20-winx64安裝筆記

windows mysql-5.7.20-winx64 1、mysql根目錄建立:my.ini [mysqld] #繫結IPv4 bind-address = 0.0.0.0 # 設定mysq

ubuntu 16.04上 mysql 5.7 安裝筆記

ble amp rep date tle uid 沒有 post 成功 一 安裝 ubuntu 采用APT安裝方式,可參考: Ubuntu 安裝mysql和簡單操作 Ubuntu 16.04安裝MySQL(5.7.18) A Quick Guide to Using the

MySQL 5.7新增sys.session表檢視系統執行狀態

在MySQL 5.6以前,我們通過show processlist\G命令檢視系統中正在執行的所有程序,從5.7開始,我們又可以通過sys.session表來檢視系統正在執行的所有程序,而且該表中的記錄相對processlist比較完善:mysql> SELECT

MySQL 5.7 從零開始學》筆記-資料表基本操作

在資料庫中,資料表是資料庫中最重要、最基本的操作物件,是資料儲存的基本單位。資料表被定義為列的集合,資料在表中是按照行和列的格式來儲存的。每一行代表一條唯一的記錄,每一列代表記錄中的一個域。 建立資料表 所謂建立資料表,指的是在已經建立好的資料庫中建立新

MySQL 5.7sys是一個MySQL自帶的系統庫

MySQL 5.7中引入了一個新的sys schema,sys是一個MySQL自帶的系統庫,在安裝MySQL 5.7以後的版本,使用mysqld進行初始化時,會自動建立sys庫, sys庫裡面的表、檢視、函式、儲存過程可以使我們更方便、快捷的瞭解到MySQL的一些資訊,比

mysql 5.7.3.0-m13安裝教程

com 處理 技術分享 mysql 5.7 bench aid target 驗證 htm 安裝mysql百度經驗地址:(默認安裝,除了選擇不更新和選擇保存路徑,其它基本是下一步下一步) http://jingyan.baidu.com/article/7e4409

windows下mysql 5.7的配置全過程

希望 圖片 all str success ans bst alt database 這是一套在好多次的安裝下總結出來的經驗,包括很多種遇到的問題,查過很多資料,特此總結一下。 一、從官網下載MySQL的zip(免安裝的) 解壓mysql-5.7.11-winx64.zip

在CentOS 7上源碼編譯安裝MySQL 5.7

mysql source cmake 1.系統環境[[email protected]/* */ ~]# uname -r3.10.0-514.el7.x86_64 [[email protected]/* */ ~]# cat /etc/redhat-release

yum && 編譯 安裝mysql 5.7 多實例

name mon symbol server-id service lin extra safe min yum安裝 [[email protected]/* */ ~]# wget http://repo.mysql.com/mysql57-community

MySql-5.7.17 -winx64的安裝配置

mysql一、下載軟件1. 進入mysql官網,登陸自己的Oracle賬號(沒有賬號的自己註冊一個),下載Mysql-5.7.17,下載地址:http://dev.mysql.com/downloads/mysql/2.將下載好的文件解壓到指定目錄,解壓在E:\mysql-5.7.17-winx64二、安裝

MySQL 5.7.10最新版本號源碼安裝具體過程

ngs htm org ear xpl can 數據文件 private which 1,下載地址:安裝包下載地址:http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.10.tar.gz能夠wget下載,也能夠在p

JDBC——Mysql 5.7綠色版配置安裝過程

5.6 配置文件 mov 新版 否則 download 查看系統 管理員 then 前言: JDBC是Java鏈接數據庫總要接口; 學習JDBC之前最重要的是要配置好數據庫(Mysql); 以下是配置Mysql步驟; 本章大體分為 下載 和 配置安裝過程

MySQL的show profile簡介以及該功能在MySQL 5.7中performance_schema中的替代

資源 指標 context 繼續 過程 tar view update 語句 本文出處:http://www.cnblogs.com/wy123/p/6979499.html   show profile 命令用於跟蹤執行過的sql語句的資源消耗信息,可以幫

mysql 5.7 解決 set global slow_query_log=on;報錯

mysql 工作中,需要查看mysql的top 20 慢sql,逐個進行優化,加上必要的索引。 但發現慢查詢日誌沒有開啟: mysql> show variables like "%query%";+------------------------------+-----------------

centos 7 + mysql 5.7.13 重置數據庫的root密碼

linux centos7 系統 centos 7 + mysql 5.7.13重置root密碼步驟: # vi /etc/my.cnf # [mysqld]下skip-grant-tables 內容前添加# # mysql -uroot -p 連續輸入enter 進入 # use mysql