1.5. MySQL存储引擎本节主要针对MySQL的存储引擎做一个大致的介绍。在这一节,我们不会太深入细节,因为我们将在整本书中来讨论存储引擎和它们各自的一些行为。但是......
1.5. MySQL存储引擎
本节主要针对MySQL的存储引擎做一个大致的介绍。在这一节,我们不会太深入细节,因为我们将在整本书中来讨论存储引擎和它们各自的一些行为。但是本书不会是一个完整的源代码文档,如果你一旦决定使用某种存储引擎的话,你应该去看这个存储引擎对应的MySQL官方文档。MySQL针对每个存储引擎也有各自的论坛,论坛上通常会有一些有趣和有用的链接。
如果你只是想要在一个比较高的层面来比较一下各个存储引擎,你可以直接跳到表1-3。
MySQL在底层的文件系统上将每个数据库(也被称为schema)的数据文件夹存储为单独的子文件。当你创建一个表时,MySQL将这个表的定义存储在一个后缀为frm的文件里,文件名即是表名。因此当你创建一个名为MyTable的表时,MySQL将这个表的定义存储在文件MyTable.frm中。因为MySQL利用底层文件系统来保存数据库名和表定义,因此是否大小写敏感取决于使用的平台。在一个基于Windows的MySQL实例上,表和数据库名是大小写不敏感的;而在类Unix系统上,它们是大小写敏感的。每一种存储引擎对于数据和索引的存储是不一样的,但是关于表的定义却是由服务器层来完成的。
如果想要确定一张指定表的存储引擎是什么,可以使用SHOW TABLE STATUS命令来决定。例如,想要确定mysql数据库中的user表的存储引擎,可以执行如下命令:
输出显示这是一个MyISAM表。你可能也注意到了许多许多的信息以及一些统计结果。我们来简单地看一下每一行都代表什么意思:
Name
表的名称
Engine
表的存储引擎。在早些的MySQL版本中,这一列被称为Type而不是Engine。
Row_format
行的格式。对于一个MyISAM表来说,这个项的取值可能为Dynamic,Fixed或者Compressed。动态行(Dynamic)表示它的一行数据的长度是可变的,因为它包含了一个变长的字段类型,比如VARCHAR或者BLOB。固定行(Fixed)有固定的大小,均是由不可变长度的类型组成的,比如CHAR和INTEGER。压缩行(Compressed)只存在于压缩的表中,详细的信息可以查看“压缩的MyISAM表”。
1/9 1 2 3 4 5 6 下一页 尾页 |