存储引擎
MySQL支持许多不同的存储引擎,有时候也称作表格类型。数据库每个表可以有不同的存储引擎
,而且可以轻松地对它们进行转换。
CREATE TABLE tablename TYPE=typename
可能的表格类型包括:
1 MyISAM--这是默认类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method(有索引的顺序访问方法)的缩写,它是存储记录和文件的标准方法。与其它存储引擎相比较,MyISAM具有和修复表格的大多数工具。MyISAM表格可以被压缩,而且它们支持全文搜
索。它们不是事务安全的(关于事务的概念,稍后会讲),而且也不支持外键。
2 ISAM--如上所描述的。ISAM表格的使用已经被废弃了。
3 MEMORY(也就是以前的HEAP)--该类的表存储在内存中,表的索引是哈希分布的。这使
得MEMORY表格非常快,但是如果发生崩溃,数据将丢失。这些特性使得MEMORY表非常适合保
存临时数据或者派生的数据。应该在CREATE TABLE语句中指定MAX_ROWS,否则这些表可
能会吞噬所有的内存。同样,它们也不能具有BLOB、TEXT或AUTO INCREMENT列。
4 MERGE--这些表允许你为了查询的目的,把MyISAM表的集合作为一个单个表。因此,你
ISAM 原来的表处理器
MyISAM 全新二进制可移植的表处理器
HEAP 用于该表的数据仅仅存储在内存中
MyISAM
在MySQL 3.23中,MyISAM是缺省表格类型,它是基于ISAM代码并且有很多有用的扩展。索引存储在一个有.MYI(MYindex)扩展名的文件并且数据存储在有.MYD(MYData)扩展名的文件中。你能用myisamchk实用程序检查/修复MyISAM表。见13.4 对崩溃恢复使用myisamchk。下列几点在MyISAM中是全新的:
不用删除行,可以在表中INSERT一个新行,在其他线程从表中正在读取的同时。
在支持大文件的文件系统/操作系统上支持大文件(63位)。
所有的数据首先存储低字节,这使数据独立于机器和OS,唯一的要求是机器使用补2有符号整数(就像最近20年时间内的每台机器)和IEEE浮点格式(也在主流机器上完全主导地位)。不能支持二进制兼容性的机器的唯一领域是嵌入式系统(因为他们有时有古怪的处理器)。
所有的数字键先存储高字节以获得更高的索引压缩。
AUTO_INCREMENT列的内部处理。MyISAM将自动地在INSERT/UPDATE时更新它。 AUTO_INCREMENT值可以用myisamchk重新设置,这将使得AUTO_INCREMENT列更快速并且原来的数将不象老的ISAM那样被重新使用。注意,当一个AUTO_INCREMENT定义在一个多部键值(multi-part-key)的结尾时,老式的行为仍然是存在。