【MySQL】MySQL的存儲引擎 SHOW TABLE STATUS LIKE詳解

在文件系統中,MySQL將每個數據庫(也可以稱之爲schema)保存爲數據目錄下的一個子目錄。創建表時,MySQL會在數據庫子目錄下創建一個和表同名的.frm文件保存表的定義。例如創建一個名爲MyTable的表,MySQL會在MyTable.frm文件中保存該表的定義。因爲MySQL使用文件系統的目錄和文件來保存數據庫和表的定義,大小寫敏感性和具體的平臺密切相關。在Windows中,大小寫是不敏感的;而在類Unix中則是敏感的。不同的存儲引擎保存數據和索引的方式是不同的,但表的定義則是在MySQL服務層統一處理的。

可以使用SHOW TABLE STATUS命令(在MySQL 5.0以後的版本中,也可以查詢INFORMATION_SCHEMA中對應的表)顯示錶的相關信息。例如,對於mysql數據庫中的user表:

mysql> SHOW TABLE STATUS LIKE 'user_info';
+-----------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+
| Name      | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time         | Update_time | Check_time | Collation       | Checksum | Create_options | Comment |
+-----------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+
| user_info | InnoDB |      10 | Dynamic    |    0 |              0 |       16384 |               0 |        32768 |         0 |              1 | 2020-03-28 01:47:18 | NULL        | NULL       | utf8_general_ci |     NULL |                |         |
+-----------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+
1 row in set (0.07 sec)

輸出的結果表明,這是一個MyISAM表。輸出中還有很多其他信息以及統計信息。下面簡單介紹一下每一行的含義。

  • Name

    表名。

  • Engine

    表的存儲引擎類型。

  • Version

    This column is unused. With the removal of .frm files in MySQL 8.0, this column now reports a hardcoded value of 10, which is the last .frm file version used in MySQL 5.7.

    在8.0後是固定值10。

  • Row_format

    行的格式。對於MyISAM表,可選的值爲Dynamic、Fixed或者Compressed。Dynamic的行長度是可變的,一般包含可變長度的字段,如VARCHAR或BLOB。Fixed的行長度則是固定的,只包含固定長度的列,如CHAR和INTEGER。Compressed的行則只在壓縮表中存在,請參考第19頁“MyISAM壓縮表”一節。

  • Rows

    表中的行數。對於MyISAM和其他一些存儲引擎,該值是精確的,但對於InnoDB,該值是估計值。

  • Avg_row_length

    平均每行包含的字節數。

  • Data_length

    表數據的大小(以字節爲單位)。

  • Max_data_length

    表數據的最大容量,該值和存儲引擎有關。

  • Index_length

    索引的大小(以字節爲單位)。

  • Data_free

    對於MyISAM表,表示已分配但目前沒有使用的空間。這部分空間包括了之前刪除的行,以及後續可以被INSERT利用到的空間。

  • Auto_increment

    下一個AUTO_INCREMENT的值。

  • Create_time

    表的創建時間。

  • Update_time

    表數據的最後修改時間。

  • Check_time

    使用CKECK TABLE命令或者myisamchk工具最後一次檢查表的時間。

  • Collation

    表的默認字符集和字符列排序規則。

  • Checksum

    如果啓用,保存的是整個表的實時校驗和。

  • Create_options

    創建表時指定的其他選項。

  • Comment

    該列包含了一些其他的額外信息。對於MyISAM表,保存的是表在創建時帶的註釋。對於InnoDB表,則保存的是InnoDB表空間的剩餘空間信息。如果是一個視圖,則該列包含“VIEW”的文本字樣。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章