1. 程式人生 > >mysql系統數據庫

mysql系統數據庫

database p s pan pri 外部 安裝mysql eve 引擎 script

mysql系統數據庫主要存儲了一些存儲MySQL服務的系統信息表。一般情況下mysql庫的表都是MYASIM引擎,除非個別情況。mysql庫的表的作用大致可以分為以下幾類: (1)授權系統表 (2)系統對象信息系統表 (3)日誌系統表 (4)服務器端輔助系統表 (5)time zone系統表 (6)復制相關系統表 (7)optimizer相關系統表 (8)其他系統表,下面詳細看一看 下面詳細講: 一:授權系統表(Grant System Tables) 授權的一些表主要有以下幾個:
user: User accounts, global privileges, and
other non-privilege columns. db: Database-level privileges. tables_priv: Table-level privileges. columns_priv: Column-level privileges. procs_priv: Stored procedure and function privileges. proxies_priv: Proxy-user privileges.

基本上每一個系統表都會包含有權限列和範圍列,也就包含一些授權的主要信息表。

user表控制了用戶是否能夠連接,如果可以連接,則會指出此用戶的權限的信息,這個表適用於實例上的所有的數據庫。 db表範圍列決定哪些用戶可以訪問哪些數據庫從哪個主機。權限列決定允許的操作。在數據庫級別授予的權限適用於數據庫和數據庫中的所有對象,如表和存儲程序。 tables_priv和columns_priv表控制的權限就更為細致了,到了表級別和列級別。 procs_priv 表適用於存儲例程(過程和函數)。在常規級別授予的權限只適用於一個單一的過程或函數。 proxies_priv 指出那個用戶可以作為代理,或者是用戶是否有權限給別的用戶代理權限。 二:系統對象信息系統表 event: event的系統表,每一次系統啟動都會重新load一遍,除非指定 --skip-grant-tables參數啟動,不然都是要load的 func: 存放關於用戶定義的方法,除非指定 --skip-grant-tables參數啟動,不然每一次系統啟動都會重新load一遍。 plugin: 存放有關服務器插件的相關信息,除非指定 --skip-grant-tables參數啟動,不然每一次系統啟動都會重新load一遍。默認的存儲引擎是INNODB proc:存放存儲過程和方法的系統表。 三:日誌系統表,一般情況下我看了看都是NULL的
general_log: The general query log
table. slow_log: The slow query log table.

這兩張系統表可以將慢日誌和日誌按照表格的形式存儲下來,但是相對來說帶來對性能和存儲空間的使用更大,一般生產環境我們都建議設置為外部文件。

四:服務器端輔助系統表
help_category: Information about help categories.
help_keyword: Keywords associated with help topics.
help_relation: Mappings between help keywords and topics.
help_topic: Help topic contents.

這些表存儲了mysql幫助的基本信息,我們都可以用HELP +列 來查看具體的幫助信息。

例如: 五:time zone的相關系統表
time_zone: Time zone IDs and whether they use leap seconds.
time_zone_leap_second: When leap seconds occur.
time_zone_name: Mappings between time zone IDs and names.
time_zone_transition, time_zone_transition_type: Time zone descriptions.

設置時區用以下方式:SET GLOBAL time_zone = timezone;

可以用以下方式查看:SELECT @@global.time_zone, @@session.time_zone; 六:復制相關的表 gtid_executed: 存儲了復制執行的GTID的信息。 ndb_binlog_index: slave_master_info, slave_relay_log_info, slave_worker_info: 只有mysql作為slave的時候才會存儲相關信息 七:optimizer相關系統表 innodb_index_stats, innodb_table_stats: 顯示的是索引的信息 Table 15.3 Columns of innodb_table_stats
Column name Description
database_name Database name
table_name Table name, partition name, or subpartition name
last_update A timestamp indicating the last time that InnoDB updated this row
n_rows The number of rows in the table
clustered_index_size The size of the primary index, in pages
sum_of_other_index_sizes The total size of other (non-primary) indexes, in pages
Table 15.4 Columns of innodb_index_stats
Column name Description
database_name Database name
table_name Table name, partition name, or subpartition name
index_name Index name
last_update A timestamp indicating the last time that InnoDB updated this row
stat_name The name of the statistic, whose value is reported in the stat_value column
stat_value The value of the statistic that is named in stat_name column
sample_size The number of pages sampled for the estimate provided in the stat_value column
stat_description Description of the statistic that is named in the stat_name column
兩個表的last_update 這列都記錄了最後一次索引更改的時間。而且這兩張表都是可以手動進行更新的,修改這兩個表可以強制某個查詢的執行計劃,或者測試替代計劃,優點是不需要修改數據庫相關信息。更新統計信息需要使用FLUSH TABLE tbl_name來更新統計信息。可以查詢某張表的索引信息:
SELECT SUM(stat_value) pages, index_name, SUM(stat_value)*@@innodb_page_size size FROM mysql.innodb_index_stats WHERE table_name=t1 AND stat_name = size GROUP BY index_name;
SELECT index_name, stat_name, stat_value, stat_description FROM mysql.innodb_index_stats WHERE table_name like t1;
SELECT index_name, stat_name, stat_value, stat_description FROM mysql.innodb_index_stats WHERE table_name like t1 AND stat_name LIKE n_diff%;

server_cost:服務器操作的成本估算信息

engine_cost: 指定存儲引擎的成本估算信息 FLUSH OPTIMIZER_COSTS命令可以重新開始讀取記錄信息。 八:其他的一些系統表 audit_log_filter, audit_log_user: 這兩個表提供的是mysql審計相關的信息,如果沒有安裝的話是沒有這兩個表的。 firewall_users, firewall_whitelist: 要安裝mysql企業防火墻才可以使用。 servers: 主要是 FEDERATED 引擎使用。不做介紹了。 這是一個mysql系統庫的大概介紹,感覺比較需要我們掌握的就是關於授權,系統表,日誌表,優化表和復制相關的表。後面可以看一看mysql的日誌類型等和優化相關的方面深入了解一下。

mysql系統數據庫