- 論壇徽章:
- 2
|
本帖最后由 zhuzhu198711 于 2016-05-20 17:42 編輯
MySQL 5.7中引入了一個新的sys schema,sys是一個MySQL自帶的系統(tǒng)庫,在安裝MySQL 5.7以后的版本,
使用mysqld進行初始化時,會自動創(chuàng)建sys庫,sys庫里面的表、視圖、函數(shù)、存儲過程可以使我們更方便、快
捷的了解到MySQL的一些信息,比如哪些語句使用了臨時表、哪個SQL沒有使用索引、哪個schema中有冗余索
引、查找使用全表掃描的SQL、查找用戶占用的IO等。
sys庫里這些視圖中的數(shù)據(jù),都是從information_schema里面獲得的。
截止到現(xiàn)在(MySQL 5.7.12),sys中有1張表、52個視圖(我們可以從這些視圖中查找到上面說到的那些信
息,預計再以后的版本中,sys庫中的視圖數(shù)量還會再增加),這些信息都可以通過show tables;查看
或者在information_schema中查看:
select table_name,table_type,engine from
information_schema.tables where
table_schema='sys' order by table_name;
當你使用上面的方法查看時,你會發(fā)現(xiàn)一個很有趣的現(xiàn)象,比如咱們看下show tables;的一部分輸出:
MySQL 5.7中新增sys schema1.jpg (14.88 KB, 下載次數(shù): 60)
下載附件
2016-05-20 17:37 上傳
MySQL 5.7中新增sys schema2.jpg (13.31 KB, 下載次數(shù): 65)
下載附件
2016-05-20 17:37 上傳
上面,我們可以看出,這些視圖有2中表現(xiàn)形式,一種是host_summary,另一種是加上x$字樣的,
x$host_summary,這2種視圖里面的信息是一樣的,只是表現(xiàn)形式不一樣,前一種是便于我們閱讀,
格式化了時間和字節(jié)的單位,后一種形式是指以”x$”開頭的視圖名稱,是為了便于一些工具的數(shù)據(jù)處理。
MySQL 5.7中新增sys schema3.jpg (17.88 KB, 下載次數(shù): 65)
下載附件
2016-05-20 17:37 上傳
我們通過show create table命令分別查看上面2個視圖的創(chuàng)建語句,可以發(fā)現(xiàn),他們的創(chuàng)建是一樣的,
只是在定義io_latency列的時候,在host_summary_by_file_io中,使用了一個函數(shù)sys.format_time
來格式化時間格式:
`format_time`(sum(`performance_schema`.`events_
waits_summary_by_host_by_event_name`.`SUM_TI
MER_WAIT`)) AS `io_latency`
MySQL 5.7中新增sys schema4.jpg (5.25 KB, 下載次數(shù): 53)
下載附件
2016-05-20 17:37 上傳
而類似于sys.format_time這樣的函數(shù),也是伴隨sys庫一起創(chuàng)建的,我們可以使用以下命令查看:
select
routine_schema,routine_name,routine_type
from information_schema.routines where
routine_type='FUNCTION';
我們也可以使用show function status where db='sys'\G來查看這些函數(shù)是怎么創(chuàng)建的,具體的作
用,怎么使用等。
具體這些視圖都承載這哪些信息,我們可以從官方手冊獲得幫助,這個值得我們花費一些時間來研究
,
比如我們可以在schema_redundant_indexes中查看數(shù)據(jù)庫中冗余的索引,在statements_with_
full_table_scans中查看使用全表掃描的SQL:
|
|