翻譯|使用教程|編輯:莫成敏|2019-10-11 11:44:13.237|閱讀 1438 次
概述:每個MySQL實例中都有一個INFORMATION_SCHEMA。它包含幾個只讀表,您可以查詢這些表以獲得所需的信息。在今天的文章中,我們將探討INFORMATION_SCHEMA的一些實際用法,例如使用Navicat Premium。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
Navicat Premium 是一套數(shù)據(jù)庫管理工具,讓你使用一個程序即可同時連接到 MySQL、MariaDB、SQL Server、SQLite、Oracle 和 PostgreSQL 數(shù)據(jù)庫。快速管理不同類型的數(shù)據(jù)庫。
在關系數(shù)據(jù)庫中,數(shù)據(jù)庫元數(shù)據(jù)(例如有關MySQL服務器的信息、數(shù)據(jù)庫或表的名稱、列的數(shù)據(jù)類型或訪問特權)存儲在數(shù)據(jù)字典和/或系統(tǒng)目錄中。MySQL在名為INFORMATION_SCHEMA的特殊模式中提供數(shù)據(jù)庫元數(shù)據(jù)。每個MySQL實例中都有一個INFORMATION_SCHEMA。它包含幾個只讀表,您可以查詢這些表以獲得所需的信息。在今天的文章中,我們將探討INFORMATION_SCHEMA的一些實際用法,例如使用Navicat Premium。
獲取表信息
information_schema.tables表包含有關表的元數(shù)據(jù),您猜對了!除了表名之外,您還可以檢索其類型(基本表或視圖)和引擎:
SELECT table_name, table_type, engine FROM information_schema.tables WHERE table_schema = 'sakila' ORDER BY table_name;
這是上面的查詢和Navicat的結果:
您還可以查詢information_schema.tables以獲取表的大小:
SELECT table_name AS `Table`, round(((data_length + index_length) / 1024 / 1024), 2) `Size in MB` FROM information_schema.TABLES WHERE table_schema = "sakila" AND table_name = "film";
以下是Navicat Premium的結果:
通過一些調(diào)整,您可以列出每個數(shù)據(jù)庫中每個表的大小:
SELECT table_schema as `Database`, table_name AS `Table`, round(((data_length + index_length) / 1024 / 1024), 2) `Size in MB` FROM information_schema.TABLES ORDER BY (data_length + index_length) DESC;
您甚至可以使用information_schema.tables列出MySQL實例中每個數(shù)據(jù)庫的大小!
SELECT table_schema as `Database`, table_name AS `Table`, round(((data_length + index_length) / 1024 / 1024), 2) `Size in MB` FROM information_schema.TABLES ORDER BY (data_length + index_length) DESC;
查看表統(tǒng)計信息
INFORMATION_SCHEMA.STATISTICS表包含緩存的值。因此,這些默認情況下會在24小時后過期。如果沒有緩存的統(tǒng)計信息或統(tǒng)計信息已過期,則在查詢表統(tǒng)計信息列時將從存儲引擎檢索統(tǒng)計信息。
INFORMATION_SCHEMA.STATISTICS表的一種用途是查看特定模式中所有表的索引:
SELECT DISTINCT TABLE_NAME, INDEX_NAME FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_SCHEMA = 'your_schema';
以下是Navicat中sakila數(shù)據(jù)庫提供的結果:
您只需刪除where子句即可查看所有架構中的所有索引。在這種情況下,您可能還需要添加數(shù)據(jù)庫名稱:
SELECT DISTINCT stat.TABLE_SCHEMA as 'DATABASE', TABLE_NAME, INDEX_NAME FROM INFORMATION_SCHEMA.STATISTICS stat;
結論
在今天的文章中,我們學習了許多使用MySQL INFORMATION_SCHEMA來獲取有關MySQL實例中各種對象的元數(shù)據(jù)信息,從數(shù)據(jù)庫到表、列、索引等數(shù)據(jù)庫的方法。盡管查詢是在Navicat Premium中運行的,但適用于Navicat for MySQL也可以正常使用!
相關內(nèi)容推薦:
想要購買該產(chǎn)品正版授權,或了解更多產(chǎn)品信息請點擊
本站文章除注明轉載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn