MySQL5.7 默認(rèn)的模式有:
information_schema疫诽, 具有 61個表鸯檬;
mysqL, 具有31個表;
performance_schema超升,具有87個表;
sys, 具有1個表嗓违, 100個視圖.
...
Information_schema數(shù)據(jù)庫是MySQL自帶的九巡,它提供了訪問數(shù)據(jù)庫元數(shù)據(jù)的方式。什么是元數(shù)據(jù)呢蹂季?元數(shù)據(jù)是關(guān)于數(shù)據(jù)的數(shù)據(jù)冕广,如數(shù)據(jù)庫名或表名疏日,列的數(shù)據(jù)類型,或訪問權(quán)限等撒汉。有些時候用于表述該信息的其他術(shù)語包括“數(shù)據(jù)詞典”和“系統(tǒng)目錄”沟优。
在 MySQL中,把 information_schema 看作是一個數(shù)據(jù)庫睬辐,確切說是信息數(shù)據(jù)庫挠阁。其中保存著關(guān)于MySQL服務(wù)器所維護(hù)的所有其他數(shù)據(jù)庫的信息。如數(shù)據(jù)庫名溉委,數(shù)據(jù)庫的表鹃唯,表欄的數(shù)據(jù)類型與訪問權(quán)限等。在INFORMATION_SCHEMA中瓣喊,有數(shù)個只讀表。它們實(shí)際上是視圖黔酥,而不是基本表藻三,因此,你將無法看到與之相關(guān)的任何文件
使用如下語句可以查看當(dāng)前數(shù)據(jù)庫的各IP連接數(shù)
select SUBSTRING_INDEX(host,':',1) as ip , count(*)
from information_schema.processlist group by ip
information_schema數(shù)據(jù)庫部分表說明
?SCHEMATA表:提供了當(dāng)前mysql實(shí)例中所有數(shù)據(jù)庫的信息跪者。是show databases的結(jié)果取之此表棵帽。
?TABLES表:提供了關(guān)于數(shù)據(jù)庫中的表的信息(包括視圖)。詳細(xì)表述了某個表屬于哪個schema渣玲,表類型逗概,表引擎,創(chuàng)建時間等信息忘衍。是show tables from schemaname的結(jié)果取之此表逾苫。
?COLUMNS表:提供了表中的列信息。詳細(xì)表述了某張表的所有列以及每個列的信息枚钓。是show columns from schemaname.tablename的結(jié)果取之此表铅搓。
?STATISTICS表:提供了關(guān)于表索引的信息。是show index from schemaname.tablename的結(jié)果取之此表搀捷。
?USER_PRIVILEGES(用戶權(quán)限)表:給出了關(guān)于全程權(quán)限的信息星掰。該信息源自mysql.user授權(quán)表。是非標(biāo)準(zhǔn)表嫩舟。
?SCHEMA_PRIVILEGES(方案權(quán)限)表:給出了關(guān)于方案(數(shù)據(jù)庫)權(quán)限的信息氢烘。該信息來自mysql.db授權(quán)表。是非標(biāo)準(zhǔn)表家厌。
?TABLE_PRIVILEGES(表權(quán)限)表:給出了關(guān)于表權(quán)限的信息播玖。該信息源自mysql.tables_priv授權(quán)表。是非標(biāo)準(zhǔn)表像街。
?COLUMN_PRIVILEGES(列權(quán)限)表:給出了關(guān)于列權(quán)限的信息黎棠。該信息源自mysql.columns_priv授權(quán)表晋渺。是非標(biāo)準(zhǔn)表。
?CHARACTER_SETS(字符集)表:提供了mysql實(shí)例可用字符集的信息脓斩。是SHOW CHARACTER SET結(jié)果集取之此表木西。
?COLLATIONS表:提供了關(guān)于各字符集的對照信息。
?COLLATION_CHARACTER_SET_APPLICABILITY表:指明了可用于校對的字符集随静。這些列等效于SHOW COLLATION的前兩個顯示字段八千。
?TABLE_CONSTRAINTS表:描述了存在約束的表。以及表的約束類型燎猛。
?KEY_COLUMN_USAGE表:描述了具有約束的鍵列恋捆。
?ROUTINES表:提供了關(guān)于存儲子程序(存儲程序和函數(shù))的信息。此時重绷,ROUTINES表不包含自定義函數(shù)(UDF)沸停。名為“mysql.proc name”的列指明了對應(yīng)于INFORMATION_SCHEMA.ROUTINES表的mysql.proc表列。
?VIEWS表:給出了關(guān)于數(shù)據(jù)庫中的視圖的信息昭卓。需要有show views權(quán)限愤钾,否則無法查看視圖信息。
?TRIGGERS表:提供了關(guān)于觸發(fā)程序的信息候醒。必須有super權(quán)限才能查看該表能颁。performance_schema數(shù)據(jù)庫部分表說明
PERFORMANCE_SCHEMA這個功能默認(rèn)是關(guān)閉的。需要設(shè)置參數(shù): performance_schema 才可以啟動該功能倒淫,這個參數(shù)是靜態(tài)參數(shù)伙菊,只能寫在my.cnf 中 不能動態(tài)修改。
setup_table : 設(shè)置表敌土,配置監(jiān)控選項(xiàng)镜硕。
current_events_table : 記錄當(dāng)前那些thread 正在發(fā)生什么事情。
history_table : 發(fā)生的各種事件的歷史記錄表
summary_table : 對各種事件的統(tǒng)計(jì)表
setup_consumers\ Setup_instruments : 描述各種事件, 設(shè)置哪些事件能夠被收集
setup_instruments : 描述這個數(shù)據(jù)庫下的表名以及是否開啟監(jiān)控纯赎。
setup_timers : 描述 監(jiān)控選項(xiàng)已經(jīng)采樣頻率的時間間隔
Threads : 監(jiān)控服務(wù)器所有連接
Performance_timers : 設(shè)置一些監(jiān)控信息, 指定mysql服務(wù)可用的監(jiān)控周期谦疾,CYCLE表示按每秒檢測2603393034次, 目前 performance-schema 只支持 ‘wait’ 時間的監(jiān)控,代碼樹上 wait/ 下的函數(shù)都可以監(jiān)控到犬金。mysql數(shù)據(jù)庫部分表說明
在mysql數(shù)據(jù)庫中念恍,有mysql_install_db腳本初始化權(quán)限表,存儲權(quán)限的表有:
1晚顷、user表: 用戶列峰伙、權(quán)限列、安全列该默、資源控制列
2瞳氓、db表 : 用戶列、權(quán)限列
3栓袖、host表
4匣摘、table_priv表
5店诗、columns_priv表
6、proc_priv表sys數(shù)據(jù)庫表說明
sys_config : 這是在這個系統(tǒng)庫上存在的唯一一個表了, 表結(jié)構(gòu)如下:
CREATE TABLE sys_config
(
variable
varchar(128) NOT NULL,
value
varchar(128) DEFAULT NULL,
set_time
timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
set_by
varchar(128) DEFAULT NULL,
PRIMARY KEY (variable
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
? variable : 配置選項(xiàng)名稱
? value : 配置選項(xiàng)值
? set_time: 該行配置修改的時間
? set_by : 該行配置信息修改者音榜,如果從被安裝沒有修改過庞瘸,那么這個數(shù)據(jù)應(yīng)該為NULL
以上值的會話變量為@sys.+表中variable字段,譬如:@sys.statement_truncate_len
可以set @sys.statement_truncate_len = 32 臨時改變值赠叼,在會話中會一直使用這個值擦囊,如果想要恢復(fù)使用表的默認(rèn)值,只需要將這個會話值設(shè)置為null嘴办;set @sys.statement_truncate_len = null;
? diagnostics.allow_i_s_tables : 默認(rèn)為OFF 瞬场,如果開啟表示允許diagnostics() 存儲過程執(zhí)行掃描information_schema.tables 表,如果表很多涧郊,那么可能會很耗性能贯被,
? diagnostics.include_raw : 默認(rèn)為OFF , 開啟將會從metrics 視圖輸出未加工處理的數(shù)據(jù) 底燎。
? statement_performance_analyzer.limit : 視圖在沒有加limit限制時刃榨,返回的最大行數(shù)
? statement_performance_analyzer.view
? statement_truncate_len : 通過format_statement()函數(shù)返回值的最大長度
這個表非默認(rèn)選項(xiàng)還有一個@sys.debug參數(shù) , 可以手動加入:
INSERT INTO sys_config (variable, value) VALUES('debug', 'ON');
UPDATE sys_config SET value = 'OFF' WHERE variable = 'debug';
SET @sys.debug = NULL;
5.1、關(guān)于這個表有兩個觸發(fā)器
5.1.1 sys_config_insert_set_user觸發(fā)器
如果加入新行通過insert語句双仍,那么這個觸發(fā)器會把set_by列設(shè)置為當(dāng)前操作者
5.1.2 sys_config_update_set_user觸發(fā)器
如果加入新行通過update語句,那么這個觸發(fā)器會把set_by列設(shè)置為當(dāng)前操作者
5.2.視圖 : 以下部分只介紹不包含x$的視圖內(nèi)容
5.2.1 host_summary (主機(jī)概要)
? host : 監(jiān)聽連接過的主機(jī)
? statements : 當(dāng)前主機(jī)執(zhí)行的語句總數(shù)
? statement_latency : 語句等待時間(延遲時間)
? statement_avg_latency : 執(zhí)行語句平均延遲時間
? table_scans : 表掃描次數(shù)
? file_ios : io時間總數(shù)
? file_io_latency : 文件io延遲
? current_connections : 當(dāng)前連接數(shù)
? total_connections : 總鏈接數(shù)
? unique_users : 該主機(jī)的唯一用戶數(shù)
? current_memory : 當(dāng)前賬戶分配的內(nèi)存
? total_memory_allocated : 該主機(jī)分配的內(nèi)存總數(shù)
5.2.2 The host_summary_by_file_io_type
?host : 主機(jī)
?event_name : IO事件名稱
?total : 該主機(jī)發(fā)生的事件
?total_latency : 該主機(jī)發(fā)生IO事件總延遲時間
?max_latency : 該主機(jī)IO事件中最大的延遲時間
5.2.3 The host_summary_by_file_io
?host : 主機(jī)
?ios : IO事件總數(shù)
?io_latency : IO總的延遲時間
5.2.4 The host_summary_by_stages
? host :主機(jī)
? event_name :名稱
? total :發(fā)生的總數(shù)
? total_latency : 總的延遲時間
? avg_latency :平均延遲時間
5.2.5 The host_summary_by_statement_latency
? host : 主機(jī)
? total : 這個主機(jī)的語句總數(shù)
? total_latency : 這個主機(jī)總的延遲時間
? max_latency : 主機(jī)最大的延遲時間
? lock_latency : 等待鎖的鎖延遲時間
? rows_sent : 該主機(jī)通過語句返回的總行數(shù)
? rows_examined : 在存儲引擎上通過語句返回的行數(shù)
? rows_affected : 該主機(jī)通過語句影響的總行數(shù)
? full_scans : 全表掃描的語句總數(shù)
5.2.6 The host_summary_by_statement_type 這個表示總結(jié)描述執(zhí)行語句信息的桌吃,通常按照主機(jī)和聲明類型進(jìn)行分組朱沃。默認(rèn)情況下是按照主機(jī)排序
? host: 主機(jī)
? statement: 最后的語句事件名稱
? total: sql語句總數(shù)
? total_latency: sql語句總延遲數(shù)
? max_latency: 最大的sql語句延遲數(shù)
? lock_latency: 鎖延遲總數(shù)
? rows_sent: 語句返回的行總數(shù)
? rows_examined: 通過存儲引擎的sql語句的讀取的總行數(shù)
? rows_affected: 語句影響的總行數(shù)
? full_scans : 全表掃描的語句事件總數(shù)
5.2.7 The innodb_buffer_stats_by_schema 這個表是通過數(shù)據(jù)庫統(tǒng)計(jì)innodb引擎的innodb緩存
? object_schema: 數(shù)據(jù)庫名稱
? allocated: 分配給當(dāng)前數(shù)據(jù)庫的總的字節(jié)數(shù)
? data: 分配給當(dāng)前數(shù)據(jù)庫的數(shù)據(jù)字節(jié)數(shù)
? pages: 分配給當(dāng)前數(shù)據(jù)庫的總頁數(shù)
? pages_hashed: 分配給當(dāng)前數(shù)據(jù)庫的hash頁數(shù)
? pages_old: 分配給當(dāng)前數(shù)據(jù)庫的舊頁數(shù)
? rows_cached: 當(dāng)前數(shù)據(jù)庫緩存的行數(shù)
5.2.8 The innodb_buffer_stats_by_table 這個表是通過每個表innodb引擎的innodb緩存
? object_schema: 數(shù)據(jù)庫名稱
? object_name: 表名稱
? allocated: 分配給表的總字節(jié)數(shù)
? data: 分配該表的數(shù)據(jù)字節(jié)數(shù)
? pages: 分配給表的頁數(shù)
? pages_hashed: 分配給表的hash頁數(shù)
? pages_old : 分配給表的舊頁數(shù)
? rows_cached : 表的行緩存數(shù)
5.2.9 The innodb_lock_waits 這個表其實(shí)從視圖的語句來看就是information_schema這個數(shù)據(jù)庫中的innodb_locks、innodb_trx這兩個表的整合茅诱,能夠更清晰的顯示當(dāng)前實(shí)例的鎖情況
? wait_started : 鎖等待發(fā)生的時間
? wait_age : 鎖已經(jīng)等待了多長時間
? wait_age_secs : 以秒為單位顯示鎖已經(jīng)等待的時間(5.7.9中添加此列)
? locked_table : 被鎖的表
? locked_index : 被鎖住的索引
? locked_type : 鎖類型
? waiting_trx_id : 正在等待的事務(wù)ID
? waiting_trx_started : 等待事務(wù)開始的時間
? waiting_trx_age : 已經(jīng)等待事務(wù)多長時間
? waiting_trx_rows_locked : 正在等待的事務(wù)被鎖的行數(shù)量
? waiting_trx_rows_modified : 正在等待行重定義的數(shù)量
? waiting_pid : 正在等待事務(wù)的線程id
? waiting_query : 正在等待鎖的查詢
? waiting_lock_id : 正在等待鎖的ID
? waiting_lock_mode : 等待鎖的模式
? blocking_trx_id : 阻塞等待鎖的事務(wù)id
? blocking_pid : 正在鎖的線程id
? blocking_query : 正在鎖的查詢
?blocking_lock_id : 正在阻塞等待鎖的鎖id.
?blocking_lock_mode : 阻塞鎖模式
? blocking_trx_started : 阻塞事務(wù)開始的時間
? blocking_trx_age : 阻塞的事務(wù)已經(jīng)執(zhí)行的時間
? blocking_trx_rows_locked : 阻塞事務(wù)鎖住的行的數(shù)量
? blocking_trx_rows_modified : 阻塞事務(wù)重定義行的數(shù)量
? sql_kill_blocking_query : kill 語句殺死正在運(yùn)行的阻塞事務(wù)逗物, 在mysql5.7.9中被加入
? sql_kill_blocking_connection : kill 語句殺死會話中正在運(yùn)行的阻塞事務(wù),在mysql5.7.9中被加入
5.2.10 The io_by_thread_by_latency 這個過程主要信息是通過IO的消耗展示IO等待的時間
? user : 對于當(dāng)前線程來說瑟俭,這個值是線程被分配的賬戶翎卓,對于后臺線程來講,就是線程的名稱
? total : IO事件的總數(shù)
? total_latency : IO事件的總延遲
? min_latency : 單個最小的IO事件延遲
? avg_latency : 平均IO延遲
? max_latency : 最大IO延遲
? thread_id : 線程ID
? processlist_id : 對于當(dāng)前線程就是此時的ID摆寄,對于后臺就是null