MySQL中SHOW TABLE STATUS的使用及說明
說明
該SQL輸出提供了很多關(guān)于每個非臨時表的信息。
您還可以使用mysqlshow --status db_name命令獲取此列表。
如出現(xiàn)類似子句,指示要匹配的表名。
可以使用where子句使用更一般的條件來選擇行,此語句還顯示有關(guān)視圖的信息。
語法格式
SHOW TABLE STATUS
[{FROM | IN} db_name]
[LIKE 'pattern' | WHERE expr]
-- 參數(shù):[FROM db_name] 可選,表示查詢哪個數(shù)據(jù)庫下面的表信息?!?
-- [LIKE 'pattern'] 可選,表示查詢哪些具體的表名。 輸出信息及解釋
Name
表名。
Engine
表的存儲引擎。舊版本中,叫Type。
Version
表的版本號
Row_format
行存儲格式(Fixed,Dynamic,Compressed,Redundant,Compact)。對于MyISAM表,動態(tài)對應(yīng)于myisamchk報告打包的內(nèi)容。
使用Antelope文件格式時,InnoDB表格式要么是Redundant的,要么是Compact的,要么使用Barracuda文件格式Compressed或Dynamic。
動態(tài)行的行長度可變,例如Varchar或Blob類型字段。固定行是指行長度不變,例如Char和Integer類型字段。Compressed的行則只在壓縮表中存在
Rows
表中的行數(shù)。一些存儲引擎,如MyISAM,存儲精確計數(shù)。
對于其他存儲引擎,如InnoDB,這個值是近似值,并且可能與實際值不同多達(dá)40%至50%。
在這種情況下,使用選擇count(*)來獲取精確計數(shù)。
Avg_row_length
平均每行包括的字節(jié)數(shù)
Data_length
對于MyISAM來說,Data_length是數(shù)據(jù)文件的長度,以字節(jié)為單位。
對于InnoDB來說,Data_length是為聚簇索引分配的空間的近似量,以字節(jié)為單位。
具體來說,它是聚簇索引大小,在頁面中,乘上InnoDB頁面大小。
整個表的數(shù)據(jù)量(單位:字節(jié))
Max_data_length
對于MyISAM來說,max_data_length是數(shù)據(jù)文件的最大長度。
這是可以存儲在表中的數(shù)據(jù)的總數(shù),因為使用了數(shù)據(jù)指針大小。
對InnoDB來說是沒有用的。
Index_length
對于MyISAM來說,Index_length_是索引文件的長度,以字節(jié)為單位。
對于InnoDB來說,Index_length是為非聚簇索引分配的空間的近似量,以字節(jié)為單位。
具體來說,它是非聚集索引大小的總和,在頁面中乘上InnoDB頁面大小。
Data_free
分配但未使用的字節(jié)數(shù)。InnoDB表表示表所屬的表空間的空閑空間。對于位于共享表空間中的表,這是共享表空間的空閑空間。如果您使用多個表空間,并且表有自己的表空間,那么唯一的空間僅為該表。
Data_free意味著字節(jié)數(shù)在完全自由范圍內(nèi)減去安全裕度。即使Data_free顯示為0,只要不需要分配新的區(qū)段,就可能插入行。對于NDB集群,data_free顯示磁盤上分配的磁盤數(shù)據(jù)表或磁盤上的磁盤數(shù)據(jù)表或片段所分配的空間。(Data_length列表示內(nèi)存數(shù)據(jù)資源使用情況)。
對于分區(qū)表,此值只是估計值,并且可能不是絕對正確的。在這種情況下獲取此信息的方法更準(zhǔn)確,就是查詢INFORMATION_SCHEMA分區(qū)表,如本示例所示:
SELECT SUM(DATA_FREE)
FROM INFORMATION_SCHEMA.PARTITIONS
WHERE TABLE_SCHEMA = 'mydb'
AND TABLE_NAME = 'mytable';Auto_increment
下一個Auto_increment的值
Create_time
表的創(chuàng)建時間,分區(qū)表是NULL
Update_time
表的最近更新時間。對于某些存儲引擎來說,此值為null。
例如,InnoDB在其系統(tǒng)表空間中存儲多個表,并且數(shù)據(jù)文件時間戳不適用。
即使使用file-per-table模式與每個InnoDB表在單獨的.ibd文件中,更改緩沖可以將寫入延遲到數(shù)據(jù)文件,因此文件修改時間不同于上次插入、更新或刪除時間。
對于MyISAM,使用了數(shù)據(jù)文件時間戳;但是,在windows上,時間戳不會更新,因此值是不準(zhǔn)確的。分區(qū)表是NULL。
Check_time
表上次檢查的時間。并非所有存儲引擎都更新了這個時間,在這種情況下,值總是空的。
對于分區(qū)的InnoDB表,check_time始終為null。
使用 check table 或myisamchk工具檢查表的最近時間
Collation
表的默認(rèn)字符集和字符排序規(guī)則
Checksum
如果有的話,則會返回一個實際校驗值。
Create_options
Create_options顯示分區(qū)表的分區(qū)。
當(dāng)創(chuàng)建strict模式禁用的表時,如果不支持指定行格式,則使用存儲引擎的默認(rèn)行格式。
表中的實際行格式是在row_format列中顯示的。Create_options顯示了在create表語句中指定的行格式。
更改表的存儲引擎時,表定義中保留了不適用于新存儲引擎的表選項,以便在必要時啟用將表與先前定義的選項還原到原始存儲引擎中。Create_options可能顯示保留選項。
指表創(chuàng)建時的其他所有選項
Comment
創(chuàng)建表時使用的注釋(或關(guān)于為什么mysql無法訪問表信息的信息)
注意
- 對于InnoDB表,SHOW TABLE STATUS 不會提供準(zhǔn)確的統(tǒng)計數(shù)據(jù),除了表保留的物理大小之外。
- 行計數(shù)只是SQL優(yōu)化中使用的粗略估計數(shù)。
- 對于NDB表,此語句的輸出顯示了的Avg_row_length和Data_length列的大概值,并且沒有考慮到blob列。
- 對于NDB表,Data_length僅包含存儲在主存中的數(shù)據(jù);max_data_length和data_free列適用于磁盤數(shù)據(jù)。
- 對于NDB集群磁盤數(shù)據(jù)表,max_data_length顯示了分配給磁盤數(shù)據(jù)表或片段的磁盤部分的空間。(data_length列顯示內(nèi)存數(shù)據(jù)資源使用情況)。
- 對于內(nèi)存表來說,data_length、max_data_length和index_length值近似于實際分配內(nèi)存的數(shù)量。分配算法保留內(nèi)存大量減少分配操作的數(shù)量。
- 對于視圖,顯示表狀態(tài)顯示的所有列都為null,除非該名稱指示視圖名稱和注釋表示視圖。
翻譯自MySQL官方手冊
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
- MySQL使用show?effective?grants查看權(quán)限官方解讀
- MySQL通過show status查看、explain分析優(yōu)化數(shù)據(jù)庫性能
- MySQL通過show processlist命令檢視性能的講解
- MySQL中使用SHOW PROFILE命令分析性能的用法整理
- Oracle中實現(xiàn)MySQL show index from table命令SQL腳本分享
- mysql show processlist 顯示mysql查詢進(jìn)程
- MySQL中show命令方法得到表列及整個庫的詳細(xì)信息(精品珍藏)
- MySQL中的SHOW FULL PROCESSLIST命令實現(xiàn)
相關(guān)文章
mysql重裝后出現(xiàn)亂碼設(shè)置為utf8可解決
mysql重裝后出現(xiàn)亂碼解決辦法:只能在配置文件中將database 和 server 字符集 設(shè)置為utf8 ,否則不起作用,具體如下感興趣的朋友可以參考下哈,希望對大家有所幫助2013-07-07
查看MySQL中已經(jīng)創(chuàng)建的存儲過程及其定義
在MySQL中,查看已創(chuàng)建存儲過程的方法包括使用SHOW CREATE PROCEDURE命令查看存儲過程定義,查詢INFORMATION_SCHEMA.Routines表或mysql.proc表獲取存儲過程信息,使用source命令執(zhí)行存儲過程創(chuàng)建腳本,或查看存儲過程的文檔注釋,這些方法有助于了解和管理數(shù)據(jù)庫中的存儲過程2024-11-11
MySQL 常見的數(shù)據(jù)表設(shè)計誤區(qū)匯總
雖然會有一些常規(guī)意義上的數(shù)據(jù)表錯誤設(shè)計和優(yōu)秀設(shè)計原則,但是同樣也會有 MySQL 特定的一些情況,這會導(dǎo)致我們犯一些 MySQL 特定的錯誤。本篇討論常見的設(shè)計誤區(qū)。2021-06-06
使用Shell腳本進(jìn)行MySql權(quán)限修改的實現(xiàn)教程
原先數(shù)據(jù)配置文件中有bind-address=127.0.0.1,注釋掉此配置后,原數(shù)據(jù)庫中默認(rèn)帶%root的權(quán)限,現(xiàn)在需要通過腳本實現(xiàn)白名單列表中的ip添加權(quán)限允許訪問數(shù)據(jù)庫,本文給大家介紹了使用Shell腳本進(jìn)行MySql權(quán)限修改的實現(xiàn)教程,需要的朋友可以參考下2024-03-03
將MySQL數(shù)據(jù)庫移植為PostgreSQL
PostgreSQL 作為功能最強(qiáng)勁的開源 OO 數(shù)據(jù)庫,仿佛一直不為國內(nèi)用戶所熟識。而我個人也僅是因為工作的緣故接觸到這款超經(jīng)典的數(shù)據(jù)庫,并深為之折服。2009-07-07
數(shù)據(jù)庫中update與delete使用表別名的深入研究
本文介紹了UPDATE和DELETE?SQL語句在Oracle,?SQLite,?PostgreSQL,?MYSQL,?mariadb等數(shù)據(jù)庫系統(tǒng)中的執(zhí)行差異,文中通過代碼介紹的非常詳細(xì),對數(shù)據(jù)庫開發(fā)和維護(hù)人員有指導(dǎo)意義,需要的朋友可以參考下2024-10-10

