本文只是概要地描述MySQL香港服务器租用的存储引擎,而不会涉及太多细节。因为关于存储引擎的讨论及其相关特性将会贯穿全文,而且本文也不是存储引擎的完全指南,所以有必要读相关存储引擎的官方文档。
在文件系统中,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' G
********************** 1.row ************************
Name: user
Engine: MyISAM
Row format: Dynamic
Rows;
Avg_ row length: 59
Data length:; 356
Max_ data length: 4294967295
Index_ length; 2048
Data free: 0
Auto increment: NULL
Create time: 2002 -01-24 18:07:17
Update time: 2002-01-24 21:56:29
Check time: NULI
Collation; utf8 bin
Checksum: NULL
Create options:
Comment: Users and global privileges
1 row in set (0.00 sec)
输出的结果表明,这是一个MylsAM .输出中还有很多其他信息以及统计信息。下面简单介绍一下每一行的含义。
Name
表名。
Engine
表的存储引擎类型。在旧版本中,该列的名字叫Type,而不是Engine,
Row_format
行的格式。对于MyIsAM表,可选的值为Dynamic、Dynamic的行长度是可变的,一般包含可变长度的字段,如VARCHAR或BLOB。Fixed的行长度则是固定的,只包含固定长度的列,如OWR和INTEGER, 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
使用CKECKTABLE命令或者myisamchk工具最后-次检查表的时间。
Collation
表的默认字符集和字符列排序规则。
Checksum
如果启用,保存的是整个表的实时校验和。
Create_options
创建表时指定的其他选项。
Comment
该列包含了一些其他的额外信息。对于MyISAM表,保存的是表在创建时带的注释。对于InnoDB表,则保存的是InnoDB 表空间的剩余空间信息。如果是一个视图,则该列包含“VIEW" 的文本字样。