基础概念

  • 在文件系统中,MySQL 将每个数据库(也成为 schema)保存为数据目录下的一个子目录。
  • 创建表时,MySQL 会在数据库子目录下创建一个同名的 .frm 文件保存表定义。
  • MySQL 使用文件系统的目录和文件拉保存数据库和表的定义,意味着表的大小写敏感依平台相关。
    • 如:Windows 中大小写不敏感;而类 Unix 中则是敏感的。
  • 表的的定义是在 MySQL 服务层统一处理。

表信息

可以使用 SHOW TABLE STATUS 命令显示表的信息。

MySQL 5.0 以后,也可通过查询 INFORMATION_SCHEMA 中查看对应表。

示例:查看 u% 表的信息

  1. mysql> use mysql;
  2. mysql> show table status like 'us%' \G;
  3. *************************** 1. row ***************************
  4. Name: user
  5. Engine: MyISAM
  6. Version: 10
  7. Row_format: Dynamic
  8. Rows: 89
  9. Avg_row_length: 125
  10. Data_length: 11188
  11. Max_data_length: 281474976710655
  12. Index_length: 4096
  13. Data_free: 0
  14. Auto_increment: NULL
  15. Create_time: 2019-11-11 11:00:25
  16. Update_time: 2021-07-09 10:13:26
  17. Check_time: NULL
  18. Collation: utf8_bin
  19. Checksum: NULL
  20. Create_options:
  21. Comment: Users and global privileges
  22. 1 row in set (0.00 sec)

输出的结果含义:

字段 含义
Name 表名
Engine 存储引擎;旧版本名字为 Type
Version 版本
Row_format 行的格式。
- 对于 MyISAM 表,可选值为 Dynamic、Fixed 或 Compressed。
- Dynamic 的行长度可变,一般包含可变长度的字段,如 Varchar 或 Blob。
- Fixed 的行则是固定,只包含固定长度的列,如 Char 或 INTERGER。
- Compressed 的行则只在压缩表中存在。
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 使用 CHECK TABLE 命令或者 myisamchk 工具最后检查的时间
Collation 表的默认字符集和字符列排序规则
Checksum 如果启用,保存的是整个表的实时校验和
Create_options 创建表时指定的其他选项
Comment 包含了额外信息,对于 MyISAM 表,保存的是注释。
如果是 InnoDB 表,保存的是剩余空间信息。如果是一个视图,则包含“VIEW”字样。