溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么理解并掌握mysql中的information_schema

發(fā)布時(shí)間:2021-11-08 11:25:35 來(lái)源:億速云 閱讀:112 作者:iii 欄目:MySQL數(shù)據(jù)庫(kù)

本篇內(nèi)容介紹了“怎么理解并掌握mysql中的information_schema”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

| 什么是information_schema

information_schema提供了對(duì)數(shù)據(jù)庫(kù)元數(shù)據(jù)、統(tǒng)計(jì)信息、以及有關(guān)MySQL Server的信息訪問(wèn)(例如:數(shù)據(jù)庫(kù)名或表名,字段的數(shù)據(jù)類型和訪問(wèn)權(quán)限等)。該庫(kù)中保存的信息也可以稱為MySQL的數(shù)據(jù)字典或系統(tǒng)目錄。

  • 在每個(gè)MySQL 實(shí)例中都有一個(gè)獨(dú)立的information_schema,用來(lái)存儲(chǔ)MySQL實(shí)例中所有其他數(shù)據(jù)庫(kù)的基本信息。information_schema數(shù)據(jù)庫(kù)下包含多個(gè)只讀表(非持久表),所以在磁盤中的數(shù)據(jù)目錄下沒(méi)有對(duì)應(yīng)的關(guān)聯(lián)文件,且不能對(duì)這些表設(shè)置觸發(fā)器。雖然在查詢時(shí)可以使用USE語(yǔ)句將默認(rèn)數(shù)據(jù)庫(kù)設(shè)置為information_schema,但該庫(kù)下的所有表是只讀的,不能執(zhí)行INSERT、UPDATE、DELETE等數(shù)據(jù)變更操作。

針對(duì)information_schema下的表的查詢操作可以替代一些show查詢語(yǔ)句(例如:SHOW DATABASES,SHOW TABLES等),與使用show語(yǔ)句相比,通過(guò)查詢information_schema下的表獲取數(shù)據(jù)有以下優(yōu)勢(shì):

  • 它符合"Codd法則",所有的訪問(wèn)都是基于表的訪問(wèn)完成的。

  • 可以使用SELECT語(yǔ)句的SQL語(yǔ)法,只需要學(xué)習(xí)你要查詢的一些表名和列名的含義即可

  • 基于SQL語(yǔ)句的查詢,對(duì)來(lái)自information_schema中的查詢結(jié)果可以做過(guò)濾、排序、聯(lián)結(jié)操作,查詢的結(jié)果集格式對(duì)應(yīng)用程序來(lái)說(shuō)更友好

  • 這種技術(shù)實(shí)現(xiàn)與其他數(shù)據(jù)庫(kù)系統(tǒng)中類似的實(shí)現(xiàn)更具互操作性。例如:Oracle數(shù)據(jù)庫(kù)的用戶熟悉查詢Oracle數(shù)據(jù)字典中的表,那么在MySQL中查詢數(shù)據(jù)字典的表也可以使用同樣的方法來(lái)執(zhí)行查詢獲取想要的數(shù)據(jù)

訪問(wèn)information_schema需要的權(quán)限

  • 所有用戶都有訪問(wèn)information_schema下的表權(quán)限(但只能看到這些表中用戶具有訪問(wèn)權(quán)限的對(duì)象相對(duì)應(yīng)的數(shù)據(jù)行),但只能訪問(wèn)Server層的部分?jǐn)?shù)據(jù)字典表,Server層中的部分?jǐn)?shù)據(jù)字典表以及InnoDB層的數(shù)據(jù)字典表需要額外授權(quán)才能訪問(wèn),如果用戶權(quán)限不足,當(dāng)查詢Server層數(shù)據(jù)字典表時(shí)將不會(huì)返回任何數(shù)據(jù),或者某個(gè)列沒(méi)有權(quán)限訪問(wèn)時(shí),該列返回NULL值。當(dāng)查詢InnoDB數(shù)據(jù)字典表時(shí)將直接拒絕訪問(wèn)(要訪問(wèn)這些表需要有process權(quán)限,注意不是select權(quán)限)

  • 從information_schema中查詢相關(guān)數(shù)據(jù)需要的權(quán)限也適用于SHOW語(yǔ)句。無(wú)論使用哪種查詢方式,都必須擁有某個(gè)對(duì)象的權(quán)限才能看到相關(guān)的數(shù)據(jù)。

PS:

  • 在MySQL 5.6版本中總共有59張表,其中10張MyISAM引擎臨時(shí)表(數(shù)據(jù)字典表),49張Memory引擎臨時(shí)表(保存統(tǒng)計(jì)信息和一些臨時(shí)信息)。在MySQL 5.7版本中,該schema下總共有61張表,其中10個(gè)InnoDB存儲(chǔ)引擎臨時(shí)表(數(shù)據(jù)字典表),51個(gè)Memory引擎臨時(shí)表。在MySQL 8.0中該schema下數(shù)據(jù)字典表(包含部分原memory引擎臨時(shí)表)都遷移到了mysql schema下,且在mysql schema下這些數(shù)據(jù)字典表被隱藏,無(wú)法直接訪問(wèn),需要通過(guò)information_schema下的同名表進(jìn)行訪問(wèn)(統(tǒng)計(jì)信息表保留在information_schema下且仍然為Memory引擎)

  • 雖然直接通過(guò)查詢information_schema中的表獲取數(shù)據(jù)有眾多優(yōu)勢(shì),但是因?yàn)镾HOW語(yǔ)法已經(jīng)耳熟能詳且被廣泛使用,所以SHOW語(yǔ)句仍然是一個(gè)備選方法,且隨著information_schema的實(shí)現(xiàn),SHOW語(yǔ)句中的功能還有所增強(qiáng)(可以使用like或where子句進(jìn)行過(guò)濾),例如:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

# 語(yǔ)法

Syntax:

SHOW [GLOBAL | SESSION] VARIABLES

[LIKE 'pattern' WHERE expr]

# 示例1

root@localhost : information_schema 12:20:31> show variables like '%log_bin%';

+---------------------------------+----------------------------------------------------+

| Variable_name                  | Value                                              |

+---------------------------------+----------------------------------------------------+

| log_bin                        | ON                                                |

| log_bin_basename                | /home/mysql/data/mysqldata1/binlog/mysql-bin      |

| log_bin_index                  | /home/mysql/data/mysqldata1/binlog/mysql-bin.index |

| log_bin_trust_function_creators | ON                                                |

| log_bin_use_v1_row_events      | OFF                                                |

| sql_log_bin                    | ON                                                |

+---------------------------------+----------------------------------------------------+

rows in set (0.00 sec)

# 實(shí)例2

root@localhost : information_schema 12:21:41> show variables where Variable_name like 'log_bin%' and Value='ON';

+---------------------------------+-------+

| Variable_name                  | Value |

+---------------------------------+-------+

| log_bin                        | ON    |

| log_bin_trust_function_creators | ON    |

+---------------------------------+-------+

rows in set (0.00 sec)

# 注意,likewhere子句可單獨(dú)使用,但要同時(shí)使用wherelike子句時(shí),like子句必須在where之后

| information_schema 組成對(duì)象

information_schema下的所有表都是使用的Memory和InnoDB存儲(chǔ)引擎,且都是臨時(shí)表,不是持久表,在數(shù)據(jù)庫(kù)重啟之后這些數(shù)據(jù)會(huì)丟失,在MySQL 的4個(gè)系統(tǒng)庫(kù)中,也是唯一一個(gè)在文件系統(tǒng)上沒(méi)有對(duì)應(yīng)庫(kù)表的目錄和文件的系統(tǒng)庫(kù)。

下面我們按照這些表的各自用途的相似度,我們把information_schema下的表做了如下歸類,本期我們先大致了解下information_schema系統(tǒng)庫(kù)中都有哪些表,這些表大致都有什么用途。

1. Server層統(tǒng)計(jì)信息字典表

COLUMNS:

  • 提供查詢表中的列(字段)信息

  • 該表為InnoDB 存儲(chǔ)引擎的臨時(shí)表

KEY_COLUMN_USAGE:

  • 提供查詢哪些索引列存在約束條件

  • 該表中的信息包含主鍵、唯一索引、外鍵等約束的信息,例如:所在庫(kù)表列名,引用的庫(kù)表列名等。表中的信息與TABLE_CONSTRAINTS表中記錄的信息有些類似,但TABLE_CONSTRAINTS表中沒(méi)有記錄約束引用的庫(kù)表列信息。但是卻記錄了TABLE_CONSTRAINTS表中所沒(méi)有的約束類型信息

  • 該表為Memory引擎臨時(shí)表

REFERENTIAL_CONSTRAINTS:

  • 提供查詢關(guān)于外鍵約束的一些信息

  • 該表為Memory引擎臨時(shí)表

STATISTICS:

  • 提供查詢關(guān)于索引的一些統(tǒng)計(jì)信息,一個(gè)索引對(duì)應(yīng)一行記錄

  • 該表為Memory引擎臨時(shí)表

TABLE_CONSTRAINTS:

  • 提供查詢表相關(guān)的約束信息

  • 該表為Memory引擎臨時(shí)表

FILES:

  • 提供查詢MySQL的數(shù)據(jù)表空間文件相關(guān)的信息,包含InnoDB存儲(chǔ)引擎和NDB存儲(chǔ)引擎相關(guān)的數(shù)據(jù)文件信息,由于NDB存儲(chǔ)引擎在國(guó)內(nèi)較少使用,我們大多數(shù)場(chǎng)景(95%以上場(chǎng)景InnoDB存儲(chǔ)引擎都滿可以使用)都是使用InnoDB存儲(chǔ)引擎

  • 該表為Memory存儲(chǔ)引擎表

ENGINES:

  • 提供查詢MySQL Server支持的引擎相關(guān)的信息

  • 該表為Memory引擎臨時(shí)表

TABLESPACES:

  • 提供查詢關(guān)于活躍表空間的相關(guān)信息(主要記錄的是NDB存儲(chǔ)引擎表空間信息)

  • 注意:該表不提供有關(guān)InnoDB存儲(chǔ)引擎的表空間的信息。 對(duì)于InnoDB表空間元數(shù)據(jù)信息,請(qǐng)查詢INNODB_SYS_TABLESPACES和INNODB_SYS_DATAFILES表。另外,從MySQL 5.7.8開(kāi)始,INFORMATION_SCHEMA.FILES表也提供查詢InnoDB表空間的元數(shù)據(jù)信息

  • 該表為Memory引擎臨時(shí)表。

SCHEMATA:

  • 提供查詢MySQL Server中的數(shù)據(jù)庫(kù)列表信息,一個(gè)schema就代表一個(gè)database

  • 該表為Memory引擎臨時(shí)表

2. Server層表級(jí)別對(duì)象字典表

VIEWS:

  • 提供查詢數(shù)據(jù)庫(kù)中的視圖相關(guān)的信息,查詢?cè)摫淼膸ぬ?hào)需要擁有show view權(quán)限

  • 該表為InnoDB引擎臨時(shí)表

TRIGGERS:

  • 提供查詢關(guān)于某個(gè)數(shù)據(jù)庫(kù)下的觸發(fā)器相關(guān)的信息,要查詢某個(gè)表的觸發(fā)器,查詢的賬戶必須要有trigger權(quán)限

  • 該表為InnoDB引擎臨時(shí)表

TABLES:

  • 提供查詢數(shù)據(jù)庫(kù)內(nèi)的表相關(guān)的基本信息

  • 該表為Memory引擎臨時(shí)表

ROUTINES:

  • 提供查詢關(guān)于存儲(chǔ)過(guò)程和存儲(chǔ)函數(shù)的信息(不包括用戶自定義函數(shù)UDF),該表中的信息與“mysql.proc”中記錄的信息相對(duì)應(yīng)(如果該表中有值的話)

  • 該表為InnoDB引擎臨時(shí)表

PARTITIONS:

  • 提供查詢關(guān)于分區(qū)表的信息

  • 該表為InnoDB引擎臨時(shí)表

EVENTS:

  • 提供查詢計(jì)劃任務(wù)事件相關(guān)的信息

  • 該表是InnoDB引擎臨時(shí)表

PARAMETERS:

  • 提供有關(guān)存儲(chǔ)過(guò)程和函數(shù)的參數(shù)信息,以及有關(guān)存儲(chǔ)函數(shù)的返回值的信息。 這些參數(shù)信息與mysql.proc表中的param_list列記錄的內(nèi)容類似

  • 該表為InnoDB引擎臨時(shí)表

3. Server 層混雜信息字典表

GLOBAL_STATUS、GLOBAL_VARIABLES、SESSION_STATUS、SESSION_VARIABLES:

  • 提供查詢?nèi)帧?huì)話級(jí)別的的狀態(tài)變量與系統(tǒng)變量信息,這些表為Memory引擎臨時(shí)表

OPTIMIZER_TRACE:

  • 提供優(yōu)化程序跟蹤功能產(chǎn)生的信息。

  • 跟蹤功能默認(rèn)關(guān)閉,使用optimizer_trace系統(tǒng)變量啟用跟蹤功能。如果開(kāi)啟該功能,則每個(gè)會(huì)話只能跟蹤他自己執(zhí)行的語(yǔ)句,不能看到其他會(huì)話執(zhí)行的語(yǔ)句,且每個(gè)會(huì)話只能記錄最后一個(gè)跟蹤的SQL語(yǔ)句

  • 該表為InnoDB引擎臨時(shí)表

PLUGINS:

  • 提供查詢關(guān)于MySQL Server中支持哪些插件的信息

  • 該表為InnoDB引擎臨時(shí)表

PROCESSLIST:

  • 提供查詢一些關(guān)于線程運(yùn)行過(guò)程中的狀態(tài)信息

  • 該表為InnoDB引擎臨時(shí)表

PROFILING:

  • 提供查詢關(guān)于語(yǔ)句性能分析的信息。其記錄內(nèi)容對(duì)應(yīng)于SHOW PROFILES和SHOW PROFILE語(yǔ)句產(chǎn)生的信息。該表需要在會(huì)話變量 profiling=1時(shí)才會(huì)記錄語(yǔ)句性能分析信息,否則該表不記錄。

  • 注意:從MySQL 5.7.2開(kāi)始,此表不再推薦使用,在未來(lái)的MySQL版本中刪除。改用Performance Schema;代替

  • 該表為Memory引擎臨時(shí)表

CHARACTER_SETS:

  • 提供查詢MySQL Server支持的可用字符集有哪些

  • 該表為Memory引擎臨時(shí)表

COLLATIONS:

  • 提供查詢MySQL Server支持的可用校對(duì)規(guī)則有哪些

  • 該表為Memory引擎臨時(shí)表

COLLATION_CHARACTER_SET_APPLICABILITY:

  • 提供查詢MySQL Server中哪種字符集適用于什么校對(duì)規(guī)則。查詢結(jié)果集相當(dāng)于從SHOW COLLATION獲得的結(jié)果集中的前兩個(gè)字段值。該表目前并沒(méi)有發(fā)現(xiàn)有太大作用,為Memory引擎臨時(shí)表

COLUMN_PRIVILEGES:

  • 提供查詢關(guān)于列(字段)的權(quán)限信息,表中的內(nèi)容來(lái)自mysql.column_priv列權(quán)限表(需要針對(duì)一個(gè)表的列單獨(dú)授權(quán)之后才會(huì)有內(nèi)容)

  • 該表為Memory引擎臨時(shí)表

SCHEMA_PRIVILEGES:

  • 提供查詢關(guān)于庫(kù)級(jí)別的權(quán)限信息,每種類型的庫(kù)級(jí)別權(quán)限記錄一行信息,該表中的信息來(lái)自mysql.db表

  • 該表為Memory引擎臨時(shí)表

TABLE_PRIVILEGES:

  • 提供查詢關(guān)于表級(jí)別權(quán)限信息,該表中的內(nèi)容來(lái)自mysql.tables_priv

  • 該表為Memory引擎臨時(shí)表

USER_PRIVILEGES:

  • 提供查詢?nèi)謾?quán)限的信息,該表中的信息來(lái)自mysql.user表

  • 該表為Memory引擎臨時(shí)表

4. InnoDB 層系統(tǒng)字典表

INNODB_SYS_DATAFILES:

  • 提供查詢InnoDB file-per-table和常規(guī)表空間數(shù)據(jù)文件的路徑信息,等同于InnoDB數(shù)據(jù)字典中SYS_DATAFILES表中的信息

  • 該表中的信息包含InnoDB所有表空間類型的元數(shù)據(jù),包括獨(dú)立表空間、常規(guī)表空間、系統(tǒng)表空間、臨時(shí)表空間和undo表空間(如果開(kāi)啟了獨(dú)立表空間的話)

  • 該表為memory引擎臨時(shí)表,查詢?cè)摫淼挠脩粜枰衟rocess權(quán)限。

INNODB_SYS_VIRTUAL:

  • 提供查詢有關(guān)InnoDB虛擬生成列和與之關(guān)聯(lián)的列的元數(shù)據(jù)信息,等同于InnoDB數(shù)據(jù)字典內(nèi)部SYS_VIRTUAL表中的信息。INNODB_SYS_VIRTUAL表中展示的行信息是虛擬生成列相關(guān)聯(lián)列的每個(gè)列的信息。

  • 該表為memory引擎臨時(shí)表,查詢?cè)摫淼挠脩粜枰衟rocess權(quán)限

INNODB_SYS_INDEXES:

  • 提供查詢有關(guān)InnoDB索引的元數(shù)據(jù)信息,等同于InnoDB數(shù)據(jù)字典內(nèi)部SYS_INDEXES表中的信息

  • 該表為memory引擎臨時(shí)表,查詢?cè)摫淼挠脩粜枰哂衟rocess權(quán)限

INNODB_SYS_TABLES:

  • 提供查詢有關(guān)InnoDB表的元數(shù)據(jù),等同于InnoDB數(shù)據(jù)字典內(nèi)部SYS_TABLES表的信息。

  • 該表為memory引擎臨時(shí)表,查詢?cè)摫淼挠脩粜枰衟rocess權(quán)限

INNODB_SYS_FIELDS:

  • 提供查詢有關(guān)InnoDB索引鍵列(字段)的元數(shù)據(jù)信息,等同于InnoDB數(shù)據(jù)字典內(nèi)部SYS_FIELDS表的信息

  • 該表為memory引擎臨時(shí)表,查詢?cè)摫淼挠脩粜枰衟rocess權(quán)限

INNODB_SYS_TABLESPACES:

  • 提供查詢有關(guān)InnoDB獨(dú)立表空間和普通表空間的元數(shù)據(jù)信息(也包含了全文索引表空間),等同于InnoDB數(shù)據(jù)字典內(nèi)部SYS_TABLESPACES表中的信息

  • 該表為memory引擎臨時(shí)表,查詢?cè)摫淼挠脩粜枰衟rocess權(quán)限

INNODB_SYS_FOREIGN_COLS:

  • 提供查詢有關(guān)InnoDB外鍵列的狀態(tài)信息,等同于InnoDB數(shù)據(jù)字典內(nèi)部SYS_FOREIGN_COLS表的信息

  • 該表為memory引擎臨時(shí)表,查詢?cè)摫淼挠脩粜枰衟rocess權(quán)限

INNODB_SYS_COLUMNS:

  • 提供查詢有關(guān)InnoDB表列的元數(shù)據(jù)信息,等同于InnoDB數(shù)據(jù)字典內(nèi)部SYS_COLUMNS表的信息

  • 該表為memory引擎臨時(shí)表,查詢?cè)摫淼挠脩粜枰哂衟rocess權(quán)限

INNODB_SYS_FOREIGN:

  • 提供查詢有關(guān)InnoDB外鍵的元數(shù)據(jù)信息,等同于InnoDB數(shù)據(jù)字典內(nèi)部SYS_FOREIGN表的信息

  • 該表為memory引擎臨時(shí)表,查詢?cè)摫淼挠脩粜枰衟rocess權(quán)限

INNODB_SYS_TABLESTATS:

  • 提供查詢有關(guān)InnoDB表的較低級(jí)別的狀態(tài)信息視圖。 MySQL優(yōu)化器會(huì)使用這些統(tǒng)計(jì)信息數(shù)據(jù)來(lái)計(jì)算并確定在查詢InnoDB表時(shí)要使用哪個(gè)索引。這些信息保存在內(nèi)存中的數(shù)據(jù)結(jié)構(gòu)中,與存儲(chǔ)在磁盤上的數(shù)據(jù)無(wú)對(duì)應(yīng)關(guān)系。InnoDB內(nèi)部也無(wú)對(duì)應(yīng)的系統(tǒng)表。

  • 該表為memory引擎臨時(shí)表,查詢?cè)摫淼挠脩粜枰衟rocess權(quán)限

5. InnoDB 層鎖、事務(wù)、統(tǒng)計(jì)信息字典表

INNODB_LOCKS:

  • 提供查詢innodb引擎事務(wù)中正在請(qǐng)求的且并未獲得的且同時(shí)阻塞了其他事務(wù)的鎖信息(即沒(méi)有發(fā)生不同事務(wù)之間的鎖等待的鎖信息,在這里是查看不到的,例如,只有一個(gè)事務(wù)時(shí),該事務(wù)所加的鎖信息無(wú)法查看到)。該表中的內(nèi)容可以用于診斷高并發(fā)下的鎖爭(zhēng)用信息。

  • 該表為memory引擎臨時(shí)表,訪問(wèn)該表需要擁有具有process權(quán)限

INNODB_TRX:

  • 提供查詢當(dāng)前在InnoDB引擎中執(zhí)行的每個(gè)事務(wù)(不包括只讀事務(wù))的信息,包括事務(wù)是否正在等待鎖、事務(wù)什么時(shí)間點(diǎn)開(kāi)始、以及事務(wù)正在執(zhí)行的SQL語(yǔ)句文本信息等(如果有SQL的話)。

  • 該表為memory引擎臨時(shí)表,查詢?cè)摫淼挠脩粜枰衟rocess權(quán)限

INNODB_BUFFER_PAGE_LRU:

  • 提供查詢緩沖池中的頁(yè)面信息,與INNODB_BUFFER_PAGE表不同,INNODB_BUFFER_PAGE_LRU表保存有關(guān)innodb buffer pool中的頁(yè)如何進(jìn)入LRU鏈表以及在buffer pool不夠用時(shí)確定需要從緩沖池中逐出哪些頁(yè)

  • 該表為Memory引擎臨時(shí)表

INNODB_LOCK_WAITS:

  • 提供查詢關(guān)于每個(gè)被阻塞的InnoDB事務(wù)的鎖等待記錄,包括發(fā)生鎖等帶事務(wù)所請(qǐng)求的鎖和阻止該鎖請(qǐng)求被授予的鎖

  • 該表為memory引擎表,訪問(wèn)該表用戶需要有process權(quán)限

INNODB_TEMP_TABLE_INFO:

  • 提供查詢有關(guān)在InnoDB實(shí)例中當(dāng)前處于活動(dòng)狀態(tài)的用戶(已建立連接的用戶,斷開(kāi)的用戶連接對(duì)應(yīng)的臨時(shí)表會(huì)被自動(dòng)刪除)創(chuàng)建的InnoDB臨時(shí)表的信息。 它不提供查詢優(yōu)化器使用的內(nèi)部InnoDB臨時(shí)表的信息查詢。INNODB_TEMP_TABLE_INFO表在首次查詢時(shí)創(chuàng)建。

  • 該表為memory引擎臨時(shí)表,查詢?cè)摫淼挠脩粜枰衟rocess權(quán)限

INNODB_BUFFER_PAGE:

  • 提供查詢關(guān)于buffer pool中的頁(yè)相關(guān)的信息

  • 查詢?cè)摫硇枰脩艟哂蠵ROCESS權(quán)限,該表為Memory引擎臨時(shí)表

INNODB_METRICS:

  • 提供查詢InnoDB更為詳細(xì)細(xì)致的性能信息,是對(duì)InnoDB的PERFORMANCE_SCHEMA的補(bǔ)充。通過(guò)對(duì)該表的查詢,可用于檢查innodb的整體健康狀況。也可用于診斷性能瓶頸、資源短缺和應(yīng)用程序的問(wèn)題等。

  • 該表為memory引擎臨時(shí)表,查詢?cè)摫淼挠脩粜枰衟rocess權(quán)限

INNODB_BUFFER_POOL_STATS:

  • 提供查詢一些Innodb buffer pool中的狀態(tài)信息,該表中記錄的信息與SHOW ENGINE INNODB STATUS輸出的信息類似相同,另外,innodb buffer pool的一些狀態(tài)變量也提供了部分相同的值

  • 查看該表需要有process權(quán)限,該表為Memory引擎臨時(shí)表

6. InnoDB 層全文索引字典表

INNODB_FT_CONFIG:

  • 提供查詢有關(guān)InnoDB表的FULLTEXT索引和關(guān)聯(lián)的元數(shù)據(jù)信息。查詢此表之前,需要先設(shè)置innodb_ft_aux_table='db_name/tb_name',db_name/tb_name為包含全文索引的表名和庫(kù)名。

  • 查詢?cè)摫淼馁~戶需要有PROCESS權(quán)限,該表為Memory引擎臨時(shí)表

INNODB_FT_BEING_DELETED:

  • 該表僅在OPTIMIZE TABLE語(yǔ)句執(zhí)行維護(hù)操作期間作為INNODB_FT_DELETED表的快照數(shù)據(jù)存放使用。運(yùn)行OPTIMIZE TABLE語(yǔ)句時(shí),會(huì)先清空INNODB_FT_BEING_DELETED表中的數(shù)據(jù),保存INNODB_FT_DELETED表中的快照數(shù)據(jù)到INNODB_FT_BEING_DELETED表,并從INNODB_FT_DELETED表中刪除DOC_ID。由于INNODB_FT_BEING_DELETED表中的內(nèi)容通常生命周期較短,因此該表中的數(shù)據(jù)對(duì)于監(jiān)控或者調(diào)試來(lái)說(shuō)用處并不大。

  • 表中默認(rèn)不記錄數(shù)據(jù),需要設(shè)置系統(tǒng)配置參數(shù)innodb_ft_aux_table=string(string表示db_name.tb_name字符串),并創(chuàng)建好全文索引,設(shè)置好停用詞等。

  • 查詢?cè)摫淼馁~戶需要有PROCESS權(quán)限,該表為Memory引擎臨時(shí)表

INNODB_FT_DELETED:

  • 提供查詢從InnoDB表的FULLTEXT索引中刪除的行信息。它的存在是為了避免在InnoDB FULLTEXT索引的DML操作期間進(jìn)行昂貴的索引重組操作,新刪除的全文索引中單詞的信息將單獨(dú)存儲(chǔ)在該表中,在執(zhí)行文本搜索時(shí)從中過(guò)濾出搜索結(jié)果,該表中的信息僅在執(zhí)行OPTIMIZE TABLE語(yǔ)句時(shí)清空。

  • 該表中的信息默認(rèn)不記錄,需要使用innodb_ft_aux_table選項(xiàng)(該選項(xiàng)默認(rèn)值為空串)指定需要記錄哪個(gè)innodb引擎表的信息,例如:test/test。

  • 查詢?cè)摫淼馁~戶需要有PROCESS權(quán)限,該表為Memory引擎臨時(shí)表

INNODB_FT_DEFAULT_STOPWORD:

  • 該表為默認(rèn)的全文索引停用詞表,提供查詢停用詞列表值。啟用停用詞表需要開(kāi)啟參數(shù)innodb_ft_enable_stopword=ON,該參數(shù)默認(rèn)為ON,啟用停用詞功能之后,如果innodb_ft_user_stopword_table選項(xiàng)(針對(duì)指定的innodb引擎表中的全文索引生效)自定義了停用詞庫(kù)表名稱值,則停用詞功能使用innodb_ft_user_stopword_table選項(xiàng)指定的停用詞表,如果innodb_ft_user_stopword_table選項(xiàng)未指定,而innodb_ft_server_stopword_table選項(xiàng)(針對(duì)所有的innodb引擎表中的全文索引生效)自定義了停用詞庫(kù)表名稱值,則同停用詞功能使用innodb_ft_server_stopword_table選項(xiàng)指定的停用詞表,如果innodb_ft_server_stopword_table選項(xiàng)也未指定,則使用默認(rèn)的停用詞表,即INNODB_FT_DEFAULT_STOPWORD表。

  • 查詢?cè)摫硇枰~戶有PROCESS權(quán)限,該表為Memory引擎臨時(shí)表

INNODB_FT_INDEX_TABLE:

  • 提供查詢關(guān)于innodb表全文索引中用于反向文本查找的倒排索引的分詞信息。

  • 查詢?cè)摫淼馁~戶需要有PROCESS權(quán)限,該表為Memory引擎臨時(shí)表

INNODB_FT_INDEX_CACHE:

  • 提供查詢包含F(xiàn)ULLTEXT索引的innodb存儲(chǔ)引擎表中新插入行的全文索引標(biāo)記信息。它存在的目的是為了避免在DML操作期間進(jìn)行昂貴的索引重組,新插入的全文索引的單詞的信息被單獨(dú)存儲(chǔ)在該表中,直到對(duì)表執(zhí)行OPTIMIZE TABLE語(yǔ)句時(shí)、或者關(guān)閉服務(wù)器時(shí)、或者當(dāng)高速緩存中存放的信息大小超過(guò)了innodb_ft_cache_size或innodb_ft_total_cache_size系統(tǒng)配置參數(shù)指定的大小才會(huì)執(zhí)行清理。默認(rèn)不記錄數(shù)據(jù),需要使用innodb_ft_aux_table系統(tǒng)配置參數(shù)指定需要記錄哪個(gè)表中的新插入行的全文索引數(shù)據(jù)。

  • 查詢?cè)摫淼馁~戶需要有PROCESS權(quán)限,該表為Memory引擎臨時(shí)表

7. InnoDB 層壓縮相關(guān)字典表

INNODB_CMP和INNODB_CMP_RESET:

  • 這兩個(gè)表中的數(shù)據(jù)包含了與壓縮的InnoDB表頁(yè)有關(guān)的操作的狀態(tài)信息。表中記錄的數(shù)據(jù)為測(cè)量數(shù)據(jù)庫(kù)中的InnoDb表壓縮的有效性提供參考。

  • 查詢表的用戶必須具有PROCESS權(quán)限,該表為Memory引擎臨時(shí)表

INNODB_CMP_PER_INDEX和INNODB_CMP_PER_INDEX_RESET:

  • 這兩個(gè)表中記錄著InnoDB壓縮表數(shù)據(jù)和索引相關(guān)的操作狀態(tài)信息,對(duì)數(shù)據(jù)庫(kù)、表、索引的每個(gè)組合使用不同的統(tǒng)計(jì)信息,以便為評(píng)估特定表的壓縮性能和實(shí)用性提供參考數(shù)據(jù)。

  • 對(duì)于InnoDB壓縮表,會(huì)對(duì)表中的數(shù)據(jù)和所有二級(jí)索引都進(jìn)行壓縮。此時(shí)表中的數(shù)據(jù)被視為另一個(gè)索引(包含所有數(shù)據(jù)列的聚集索引)。

  • 注意:由于為每個(gè)索引收集單獨(dú)的度量值會(huì)導(dǎo)致性能大幅度降低,因此默認(rèn)情況下不收集INNODB_CMP_PER_INDEX和INNODB_CMP_PER_INDEX_RESET表統(tǒng)計(jì)信息。如果確有需要,啟用系統(tǒng)配置參數(shù)innodb_cmp_per_index_enabled即可(該配置參數(shù)為動(dòng)態(tài)變量,默認(rèn)為OFF)。

  • 查詢?cè)摫淼馁~戶需要有PROCESS權(quán)限,該表為Memory引擎臨時(shí)表

INNODB_CMPMEM和INNODB_CMPMEM_RESET:

  • 這兩個(gè)表中記錄著InnoDB緩沖池中壓縮頁(yè)上的狀態(tài)信息,為測(cè)量數(shù)據(jù)庫(kù)中InnoDB表壓縮的有效性提供參考

  • 查詢?cè)摫淼馁~戶需要有PROCESS權(quán)限,該表為Memory引擎臨時(shí)表

“怎么理解并掌握mysql中的information_schema”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI