MySQL 存储引擎
时间:2010-09-28 来源:wenchy
MySQL都把数据库以子目录的形式存放在它安装目录的data目录下。当你新建一张表,MySQL就生成一个和表名一样的文件存放在这个子目录中。于是,当你创建一个表为MyTable,MySQL存储这个表为
MyTable.frm文件。因为MySQL用文件系统来存储数据库和表定义的。是否区分大小写完全取决操作系统。在Windows上的MySQL就不会区分大小写。类Unix系统就会区分大小写。任何的存储引擎对于数据和
索引的存储都是不同的。但是操作表的定义是由服务器来做的。
要查看表的存储引擎是什么可以使用SHOW TABLE STATUS命令。一个例子,要查看mysql数据库下vpopmail表。执行以下命令
mysql> SHOW TABLE STATUS LIKE 'vpopmail' \G
*************************** 1. row ***************************
Name: vpopmail
Type: MyISAM
Row_format: Dynamic
Rows: 19159
Avg_row_length: 162
Data_length: 3119984
Max_data_length: 4294967295
Index_length: 1173504
Data_free: 0
Auto_increment: NULL
Create_time: 2005-04-07 14:47:44
Update_time: 2010-09-27 11:21:20
Check_time: 2005-04-26 16:27:44
Create_options:
Comment:
1 row in set (0.00 sec)
这个结果看的出来,存储引擎是MyISAM。你可能也想知道其他信息的意思。解释一下
Name 表的名称
Engine 表的存储引擎,旧的版本,这个不叫Engine叫做Type
Row_format 行的格式。对于MyISAM表,格式为三种,Dynamic,Fixed,Compressed。Dynamic行,在长度上是可变的。因为它包含了变量长度的字段如VARCHAR,BLOB. Fixed行,总是固定的长度。
字段是定长的。如CHAR,INTEGER。 Compressed行,仅仅可以应用在compressed tables。暂不介绍。
Rows 这个表的行数。对于非事物的表,这个数字是精确的。对于支持事物的表,这个值是估算的。
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或者myisamchk的时间。
Collation 表中的字符字段的默认字符集和排序
Checksum 如果enabled,就会计算这个表内容之和。
Create_options 当表创建时,所添加额外的参数。
Comment
表的额外信息。对于MyISAM表。它包含了评论,可以在表创建的时候添加任意的信息。如果InnoDB。会显示表空间的剩余空间。如果这个表是视图,这里显示"VIEW"