MySQL 5.7中嶄新的 mysql sys schema
聲明:本文內(nèi)容來自于《MySQL運(yùn)維內(nèi)參》,筆者讀后整理的筆記,僅供學(xué)習(xí)使用。
以下內(nèi)容都是MySQL 5.7的新功能
一、 Performance Schema的改進(jìn)
1、元數(shù)據(jù)庫鎖
select * from performance_schema.metadata_locks;
通過該表可以看到:
a)、哪些會(huì)話擁有元數(shù)據(jù)鎖;
b)、哪些會(huì)話正在等待元數(shù)據(jù)鎖;
c)、哪些請(qǐng)求由于死鎖被殺掉,或者鎖等待超時(shí)而被丟棄。
2、進(jìn)程跟蹤
select * from performance_schema.events_stages_current;
通過該表可以跟蹤長(zhǎng)時(shí)間操作的進(jìn)度(比如ALTER TABLE):
備注:stages是階段的意思。
3、查看未提交事務(wù)
我們提供的服務(wù)有:成都做網(wǎng)站、成都網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、青山湖ssl等。為1000多家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的青山湖網(wǎng)站制作公司
從mysql 5.7開始,新增events_transactions_current表,通過該表查看當(dāng)前線上的事務(wù)的狀態(tài),如果線上數(shù)據(jù)庫遇到undo log大量增長(zhǎng),數(shù)據(jù)庫性能急劇下降,可以通過該表查看當(dāng)前是否存在處于未提交狀態(tài)的事務(wù)。如果發(fā)現(xiàn)的確有大量的事務(wù)的state處于active狀態(tài),這時(shí)可以確定數(shù)據(jù)庫的事務(wù)未提交。
二、SYS庫的介紹
performation schema使用起來不方便,mysql 5.7用sys庫來解決這個(gè)問題。
mysql sys庫本身不采集和存儲(chǔ)什么信息,而是將performance schema和infomation schema的數(shù)據(jù)以更加容易理解的方式總結(jié)歸檔出的視圖。
在sys庫中,沒有x$前綴的視圖提供了更加友好且易讀的數(shù)據(jù);x$前綴的視圖提供了原始數(shù)據(jù),需要加工才好看。
1)、主機(jī)相關(guān)信息:以host_summary開頭的視圖,從主機(jī)、文件時(shí)間類型、語句類型角度展示文件IO延遲的信息;
2)、innodb buffer pool和鎖的相關(guān)信息:以innodb開頭的視圖,匯總了innodb buffer page信息和事務(wù)等待鎖的信息;
3)、io使用情況:以io開頭的視圖,總結(jié)了io使用者的信息,包括等待io的情況、io使用量情況;
4)、 內(nèi)存使用情況:以memory開頭的視圖,從主機(jī)、線程、用戶、事件的角度展示了內(nèi)存使用情況;
5)、連接與會(huì)話信息:processlist和session總結(jié)了連接與會(huì)話信息;
6)、表相關(guān)信息:以schema_table開頭的視圖,從全表掃描、innodb緩沖池等方面展示了表統(tǒng)計(jì)信息;
7)、索引信息:其中包含index的視圖,統(tǒng)計(jì)了索引使用情況,以及重復(fù)索引和未使用索引情況;
8)、語句相關(guān)信息:以statement開頭的視圖,統(tǒng)計(jì)的規(guī)范化后的語句使用情況,包括錯(cuò)誤數(shù)、警告數(shù)、執(zhí)行全表掃描的、使用臨時(shí)表、執(zhí)行排序等信息;
9)、用戶的相關(guān)信息:以u(píng)ser開頭的視圖,統(tǒng)計(jì)了用戶使用文件IO、執(zhí)行的語句統(tǒng)計(jì)信息等;
10)、等待事件相關(guān)信息:以wait開頭的視圖,從主機(jī)和事件角度展示等待事件的延遲情況;
11)、鎖信息:innodb_lock_waits和schema_table_lock_waits展示了鎖信息
三、重點(diǎn)視圖與應(yīng)用場(chǎng)景
1、查看表訪問量
場(chǎng)景:查看每張表的讀寫次數(shù)
+--------------+----------------------+---------------+
| table_schema | table_name | io_to_request |
+--------------+----------------------+---------------+
| oa_2016 | form_trigger_record | | oa_2016 | form_log | | oa_2016 | ctp_content_all | | oa_2016 | org_relationship |
2、冗余索引和未使用的索引
通過sys庫中的schema_index_statistics 和schema_redundant_indexes兩個(gè)視圖,可以看到哪些索引沒有被使用過或者使用率低。
3、表自增id監(jiān)控
場(chǎng)景:知道哪張表有自增主鍵,并且監(jiān)控自增主鍵是否快要超過閾值
(root@localhost)[sys]> *************************** table_schema: oa_2016
table_name: ctp_content_all
data_type: column_type: is_signed: is_unsigned: max_value: auto_increment: auto_increment_ratio:
4、查看實(shí)例消耗的磁盤IO
(root@localhost)[sys]> +------------------------------------------------+--------+
+------------------------------------------------+--------+
| @@datadir/oa_2016/portal_link_space| @@datadir/oa_2016/pro_eipusercustomsort| @@datadir/oa_2016/ctp_dr_url_map| @@datadir/oa_2016/office_auto_applyinfo| @@datadir/oa_2016/edoc_exchange_turn_rec| @@datadir/oa_2016/portal_portlet_property| @@datadir/oa_2016/showpost_info| @@datadir/oa_2016/cip_agent| @@datadir/oa_2016/thirdparty_portal_config| @@datadir/oa_2016/portal_link_option+------------------------------------------------+--------+
DBA可以通過該查詢大致的了解磁盤IO消耗在哪里,哪些文件消耗的最多。DBA可以根據(jù)這些信息,針對(duì)某表,某庫進(jìn)行優(yōu)化。
5、監(jiān)控全表掃描的sql語句
通過sys.statements_with_full_table_scans來看全表掃描的sql語句:
root@localhost)[sys]> *************************** query: db: oa_2016
exec_count: total_latency: no_index_used_count: no_good_index_used_count: no_index_used_pct: rows_sent: rows_examined: rows_sent_avg: rows_examined_avg: first_seen: last_seen: digest:
通過上面可以看到,該sql語句總共執(zhí)行了5次,有5次都沒有使用索引,總共消耗了997.89 us。
6、操作風(fēng)險(xiǎn)
sys庫的視圖來源于performace_schema和information_schema,我們知道performace_schema開啟后,數(shù)據(jù)庫會(huì)有10%性能下降:
(root@localhost)[sys]> show variables +----------------------------------------------------------+-------+
| Variable_name | Value |
+----------------------------------------------------------+-------+
| performance_schema | ON |
所以,我們查詢sys或者performance_schema時(shí),要謹(jǐn)慎操作。
7參考
參考《mysql運(yùn)維內(nèi)參》一書
文章標(biāo)題:mysql5.7中嶄新的mysqlsysschema
URL標(biāo)題:
http://weahome.cn/article/iegjsi.html