存储引擎
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表的集合作为一个单个表。因此,你 phperz.com
可在某些操作中避开最大文件大小限制。
5 BDB--这种类型的表是事务安全的,也就是说,它们可以提供COMMIT秋ROLLBACK功能
,但使用起来比MyISAM表速度慢,但是可以提供使用事务的所有优点。这些表格都是基于
Berkeley DB的。
6 InnoDB--这种类型的表是事务安全的。它与BDB类型具有相同的特性。它们还支持外键。
InnoDB表格速度很快,具有比BDB还丰富的特性,因此如果需要一个事务安全的存储引擎,
建议使用它。
在大多数Web应用程序中,通常都会使用MyISAM或InnoDB表格或者二者的结合。
当对一个表格使用大量的SELECT或INSERT语句(或者二者的结合)时,应该使用MyISAM
表格,因为在执行这两种命令时,MyISAM是最快的。对于许多Web应用程序(例如分类)来说
,MyISAM是最佳选择。如果需要全文搜索功能,也应该使用MyISAM。当事务非常重要(例如存
储财务数据的表格),或在INSERT和SELECT语句是交错执行的情况下(例如在线论坛系统),
应该使用InnlDB.对于临时表格或要是实现视图,可以使用MEMORY表格。如果需要处理大量的MyISAM表格,可以使用MERGE表格。
使用ALTER TABLE语句,可以在创建表格后修改表格的类型,如下所示:
php程序员站
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)的结尾时,老式的行为仍然是存在。
phperz.com