MySQL5.7 常用系统表大全
MySQL5.7 默認的模式有:information_schema, 具有 61個表; m ysqL, 具有31個表; performance_schema,具有87個表; sys, 具有1個表, 100個視圖.
? ? ? Information_schema數據庫是MySQL自帶的,它提供了訪問數據庫元數據的方式。什么是元數據呢?元數據是關于數據的數據,如數據庫名或表名,列的數據類型,或訪問權限等。有些時候用于表述該信息的其他術語包括“數據詞典”和“系統(tǒng)目錄”。
? ? ? 在 MySQL中,把 information_schema 看作是一個數據庫,確切說是信息數據庫。其中保存著關于MySQL服務器所維護的所有其他數據庫的信息。如數據庫名,數據庫的表,表欄的數據類型與訪問權限等。在INFORMATION_SCHEMA中,有數個只讀表。它們實際上是視圖,而不是基本表,因此,你將無法看到與之相關的任何文件
1. MYSQL SHOW 命令
desc 表名; ? ? ? // 表信息
show columns from 表名; ? ? ? // 表字段
describe 表名; ? ? ? // 表信息
show create table 表名; ? ? ? ?// 表創(chuàng)建語句
show create database 數據庫名; ? ? ? ?// 顯示數據庫 信息
show table status from 數據庫名; ? ? ? ?// 數據庫狀態(tài)
show tables或show tables from database_name; ? ? ? // 顯示當前數據庫中所有表的名稱
show databases; ? ? ? // 顯示mysql中所有數據庫的名稱
show processlist; ? ? ? // 顯示系統(tǒng)中正在運行的所有進程,也就是當前正在執(zhí)行的查詢。大多數用戶可以查看他們自己的進程,但是如果他們擁有process權限,就可以查看所有人的進程,包括密碼。
show table status; ? ? ? // 顯示當前使用或者指定的database中的每個表的信息。信息包括表類型和表的最新更新時間
show columns from table_name from database_name; ? ? ? ?// 顯示表中列名稱
show columns from database_name.table_name; ? ? ? ?// 顯示表中列名稱
show grants for user_name@localhost; ? ? ? ?// 顯示一個用戶的權限,顯示結果類似于grant 命令
show index from table_name; ? ? ? ?// 顯示表的索引 show status;解釋:顯示一些系統(tǒng)特定資源的信息,例如,正在運行的線程數量
show variables; ? ? ? ?// 顯示系統(tǒng)變量的名稱和值 show privileges;解釋:顯示服務器所支持的不同權限
show create database database_name ; ? ? ? // 顯示create database 語句是否能夠創(chuàng)建指定的數據庫
show create table table_name; ? ? ? // 顯示create database 語句是否能夠創(chuàng)建指定的數據庫
show engies; ? ? ? ?// 顯示安裝以后可用的存儲引擎和默認引擎。
show innodb status ; ? ? ? ?// 顯示innoDB存儲引擎的狀態(tài)
show logs; ? ? ? ?// 顯示BDB存儲引擎的日志
show warnings; ? ? ? //顯示最后一個執(zhí)行的語句所產生的錯誤、警告和通知
show errors; ? ? ? // 只顯示最后一個執(zhí)行語句所產生的錯誤
使用如下語句可以查看當前數據庫的各IP連接數
select SUBSTRING_INDEX(host,':',1) as ip , count(*)
from information_schema.processlist group by ip
1
2
2. information_schema數據庫部分表說明
?SCHEMATA表:提供了當前mysql實例中所有數據庫的信息。是show databases的結果取之此表。
?TABLES表:提供了關于數據庫中的表的信息(包括視圖)。詳細表述了某個表屬于哪個schema,表類型,表引擎,創(chuàng)建時間等信息。是show tables from schemaname的結果取之此表。
?COLUMNS表:提供了表中的列信息。詳細表述了某張表的所有列以及每個列的信息。是show columns from schemaname.tablename的結果取之此表。
?STATISTICS表:提供了關于表索引的信息。是show index from schemaname.tablename的結果取之此表。
?USER_PRIVILEGES(用戶權限)表:給出了關于全程權限的信息。該信息源自mysql.user授權表。是非標準表。
?SCHEMA_PRIVILEGES(方案權限)表:給出了關于方案(數據庫)權限的信息。該信息來自mysql.db授權表。是非標準表。
?TABLE_PRIVILEGES(表權限)表:給出了關于表權限的信息。該信息源自mysql.tables_priv授權表。是非標準表。
?COLUMN_PRIVILEGES(列權限)表:給出了關于列權限的信息。該信息源自mysql.columns_priv授權表。是非標準表。
?CHARACTER_SETS(字符集)表:提供了mysql實例可用字符集的信息。是SHOW CHARACTER SET結果集取之此表。
?COLLATIONS表:提供了關于各字符集的對照信息。
?COLLATION_CHARACTER_SET_APPLICABILITY表:指明了可用于校對的字符集。這些列等效于SHOW COLLATION的前兩個顯示字段。
?TABLE_CONSTRAINTS表:描述了存在約束的表。以及表的約束類型。
?KEY_COLUMN_USAGE表:描述了具有約束的鍵列。
?ROUTINES表:提供了關于存儲子程序(存儲程序和函數)的信息。此時,ROUTINES表不包含自定義函數(UDF)。名為“mysql.proc name”的列指明了對應于INFORMATION_SCHEMA.ROUTINES表的mysql.proc表列。
?VIEWS表:給出了關于數據庫中的視圖的信息。需要有show views權限,否則無法查看視圖信息。
?TRIGGERS表:提供了關于觸發(fā)程序的信息。必須有super權限才能查看該表。
3. performance_schema數據庫部分表說明
? ? PERFORMANCE_SCHEMA這個功能默認是關閉的。需要設置參數: performance_schema 才可以啟動該功能,這個參數是靜態(tài)參數,只能寫在my.cnf 中 不能動態(tài)修改。
setup_table : 設置表,配置監(jiān)控選項。
current_events_table : 記錄當前那些thread 正在發(fā)生什么事情。
history_table : 發(fā)生的各種事件的歷史記錄表
summary_table : 對各種事件的統(tǒng)計表
setup_consumers\ Setup_instruments : 描述各種事件, 設置哪些事件能夠被收集
setup_instruments : 描述這個數據庫下的表名以及是否開啟監(jiān)控。
setup_timers : 描述 監(jiān)控選項已經采樣頻率的時間間隔
Threads : 監(jiān)控服務器所有連接
Performance_timers : 設置一些監(jiān)控信息, 指定mysql服務可用的監(jiān)控周期,CYCLE表示按每秒檢測2603393034次, 目前 performance-schema 只支持 ‘wait’ 時間的監(jiān)控,代碼樹上 wait/ 下的函數都可以監(jiān)控到。
4. mysql數據庫部分表說明
在mysql數據庫中,有mysql_install_db腳本初始化權限表,存儲權限的表有:
1、user表: 用戶列、權限列、安全列、資源控制列
2、db表 : 用戶列、權限列
3、host表
4、table_priv表
5、columns_priv表
6、proc_priv表
5. sys數據庫表說明
sys_config : 這是在這個系統(tǒng)庫上存在的唯一一個表了, 表結構如下:
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
1
2
3
4
5
6
7
? variable : 配置選項名稱
? value : 配置選項值
? set_time: 該行配置修改的時間
? set_by : 該行配置信息修改者,如果從被安裝沒有修改過,那么這個數據應該為NULL
以上值的會話變量為@sys.+表中variable字段,譬如:@sys.statement_truncate_len
可以set @sys.statement_truncate_len = 32 臨時改變值,在會話中會一直使用這個值,如果想要恢復使用表的默認值,只需要將這個會話值設置為null;set @sys.statement_truncate_len = null;
? diagnostics.allow_i_s_tables : 默認為OFF ,如果開啟表示允許diagnostics() 存儲過程執(zhí)行掃描information_schema.tables 表,如果表很多,那么可能會很耗性能,
? diagnostics.include_raw : 默認為OFF , 開啟將會從metrics 視圖輸出未加工處理的數據 。
? statement_performance_analyzer.limit : 視圖在沒有加limit限制時,返回的最大行數
? statement_performance_analyzer.view
? statement_truncate_len : 通過format_statement()函數返回值的最大長度
這個表非默認選項還有一個@sys.debug參數 , 可以手動加入:
INSERT INTO sys_config (variable, value) VALUES('debug', 'ON');
UPDATE sys_config SET value = 'OFF' WHERE variable = 'debug';
SET @sys.debug = NULL;
1
2
3
5.1、關于這個表有兩個觸發(fā)器
5.1.1 sys_config_insert_set_user觸發(fā)器
如果加入新行通過insert語句,那么這個觸發(fā)器會把set_by列設置為當前操作者
5.1.2 sys_config_update_set_user觸發(fā)器
如果加入新行通過update語句,那么這個觸發(fā)器會把set_by列設置為當前操作者
5.2.視圖 : 以下部分只介紹不包含x$的視圖內容
5.2.1 host_summary (主機概要)
? host : 監(jiān)聽連接過的主機
? statements : 當前主機執(zhí)行的語句總數
? statement_latency : 語句等待時間(延遲時間)
? statement_avg_latency : 執(zhí)行語句平均延遲時間
? table_scans : 表掃描次數
? file_ios : io時間總數
? file_io_latency : 文件io延遲
? current_connections : 當前連接數
? total_connections : 總鏈接數
? unique_users : 該主機的唯一用戶數
? current_memory : 當前賬戶分配的內存
? total_memory_allocated : 該主機分配的內存總數
5.2.2 The host_summary_by_file_io_type
?host : 主機
?event_name : IO事件名稱
?total : 該主機發(fā)生的事件
?total_latency : 該主機發(fā)生IO事件總延遲時間
?max_latency : 該主機IO事件中最大的延遲時間
5.2.3 The host_summary_by_file_io
?host : 主機
?ios : IO事件總數
?io_latency : IO總的延遲時間
5.2.4 The host_summary_by_stages
? host :主機
? event_name :名稱
? total :發(fā)生的總數
? total_latency : 總的延遲時間
? avg_latency :平均延遲時間
5.2.5 The host_summary_by_statement_latency
? host : 主機
? total : 這個主機的語句總數
? total_latency : 這個主機總的延遲時間
? max_latency : 主機最大的延遲時間
? lock_latency : 等待鎖的鎖延遲時間
? rows_sent : 該主機通過語句返回的總行數
? rows_examined : 在存儲引擎上通過語句返回的行數
? rows_affected : 該主機通過語句影響的總行數
? full_scans : 全表掃描的語句總數
5.2.6 The host_summary_by_statement_type 這個表示總結描述執(zhí)行語句信息的,通常按照主機和聲明類型進行分組。默認情況下是按照主機排序
? host: 主機
? statement: 最后的語句事件名稱
? total: sql語句總數
? total_latency: sql語句總延遲數
? max_latency: 最大的sql語句延遲數
? lock_latency: 鎖延遲總數
? rows_sent: 語句返回的行總數
? rows_examined: 通過存儲引擎的sql語句的讀取的總行數
? rows_affected: 語句影響的總行數
? full_scans : 全表掃描的語句事件總數
5.2.7 The innodb_buffer_stats_by_schema 這個表是通過數據庫統(tǒng)計innodb引擎的innodb緩存
? object_schema: 數據庫名稱
? allocated: 分配給當前數據庫的總的字節(jié)數
? data: 分配給當前數據庫的數據字節(jié)數
? pages: 分配給當前數據庫的總頁數
? pages_hashed: 分配給當前數據庫的hash頁數
? pages_old: 分配給當前數據庫的舊頁數
? rows_cached: 當前數據庫緩存的行數
5.2.8 The innodb_buffer_stats_by_table 這個表是通過每個表innodb引擎的innodb緩存
? object_schema: 數據庫名稱
? object_name: 表名稱
? allocated: 分配給表的總字節(jié)數
? data: 分配該表的數據字節(jié)數
? pages: 分配給表的頁數
? pages_hashed: 分配給表的hash頁數
? pages_old : 分配給表的舊頁數
? rows_cached : 表的行緩存數
5.2.9 The innodb_lock_waits 這個表其實從視圖的語句來看就是information_schema這個數據庫中的innodb_locks、innodb_trx這兩個表的整合,能夠更清晰的顯示當前實例的鎖情況
? wait_started : 鎖等待發(fā)生的時間
? wait_age : 鎖已經等待了多長時間
? wait_age_secs : 以秒為單位顯示鎖已經等待的時間(5.7.9中添加此列)
? locked_table : 被鎖的表
? locked_index : 被鎖住的索引
? locked_type : 鎖類型
? waiting_trx_id : 正在等待的事務ID
? waiting_trx_started : 等待事務開始的時間
? waiting_trx_age : 已經等待事務多長時間
? waiting_trx_rows_locked : 正在等待的事務被鎖的行數量
? waiting_trx_rows_modified : 正在等待行重定義的數量
? waiting_pid : 正在等待事務的線程id
? waiting_query : 正在等待鎖的查詢
? waiting_lock_id : 正在等待鎖的ID
? waiting_lock_mode : 等待鎖的模式
? blocking_trx_id : 阻塞等待鎖的事務id
? blocking_pid : 正在鎖的線程id
? blocking_query : 正在鎖的查詢
?blocking_lock_id : 正在阻塞等待鎖的鎖id.
?blocking_lock_mode : 阻塞鎖模式
? blocking_trx_started : 阻塞事務開始的時間
? blocking_trx_age : 阻塞的事務已經執(zhí)行的時間
? blocking_trx_rows_locked : 阻塞事務鎖住的行的數量
? blocking_trx_rows_modified : 阻塞事務重定義行的數量
? sql_kill_blocking_query : kill 語句殺死正在運行的阻塞事務, 在mysql5.7.9中被加入
? sql_kill_blocking_connection : kill 語句殺死會話中正在運行的阻塞事務,在mysql5.7.9中被加入
5.2.10 The io_by_thread_by_latency 這個過程主要信息是通過IO的消耗展示IO等待的時間
? user : 對于當前線程來說,這個值是線程被分配的賬戶,對于后臺線程來講,就是線程的名稱
? total : IO事件的總數
? total_latency : IO事件的總延遲
? min_latency : 單個最小的IO事件延遲
? avg_latency : 平均IO延遲
? max_latency : 最大IO延遲
? thread_id : 線程ID
? processlist_id : 對于當前線程就是此時的ID,對于后臺就是null
?
總結
以上是生活随笔為你收集整理的MySQL5.7 常用系统表大全的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 宠物管理系统mysql_基于java+M
- 下一篇: MySQL源码解读之数据结构-LF_DY