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

