日期:2014-05-16 浏览次数:20883 次
MySQL中的数据用各种不同的技术存储在文件(或者内存)中,这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。
在我安装的 6.0.11-alpha-community MySQL Community Server (GPL)中,有以下几种引擎:
mysql> show engines;
+------------+---------+----------------------------+--------------+------+------------+
| Engine ? ? | Support | Comment ? ? ? ? | Transactions | XA ? | Savepoints |
+------------+---------+----------------------------+--------------+------+------------+
| MEMORY ? ? | YES ? ? | Hash based, stored in memory, useful for temporary tables ? ? ?| NO ? ? ? ? ? | NO ? | NO ? ? ? ? |
| BLACKHOLE ?| YES ? ? | /dev/null storage engine (anything you write to it disappears) | NO ? ? ? ? ? | NO ? | NO ? ? ? ? |
| MRG_MYISAM | YES ? ? | Collection of identical MyISAM tables ? ? ? ? | NO ? ? ? ? ? | NO ? | NO ? ? ? ? |
| MARIA ? ? ?| YES ? ? | Crash-safe tables with MyISAM heritage ? ? ? ? | YES ? ? ? ? ?| NO ? | NO ? ? ? ? |
| CSV ? ? ? ?| YES ? ? | CSV storage engine ? ? ? ? | NO ? ? ? ? ? | NO ? | NO ? ? ? ? |
| FEDERATED ?| NO ? ? ?| Federated MySQL storage engine ? ? ? ? | NULL ? ? ? ? | NULL | NULL ? ? ? |
| ARCHIVE ? ?| YES ? ? | Archive storage engine ? ? ? ? | NO ? ? ? ? ? | NO ? | NO ? ? ? ? |
| InnoDB ? ? | DEFAULT | Supports transactions, row-level locking, and foreign keys ? ? | YES ? ? ? ? ?| YES ?| YES ? ? ? ?|
| MyISAM ? ? | YES ? ? | Default engine as of MySQL 3.23 with great performance ? ? ? ? | NO ? ? ? ? ? | NO ? | NO ? ? ? ? |
+------------+---------+----------------------------+--------------+------+------------+
9 rows in set (0.07 sec)
?
MYSQL的默认存储引擎为:InnoDB,除非我们显示的指定存储引擎,如:
mysql> CREATE TABLE mytable (id int, title char(20)) ENGINE = MEMORY;?
?
?
? ? 每个MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。.frm文件存储表定义。数据文件的扩展名为.MYD (MYData)。索引文件的扩展名是.MYI (MYIndex)。
这种引擎提供了最佳的性能和功能的组合,尽管它缺少事务处理功能(使用InnoDB或者BDB引擎)并且使用表级锁定。测试中发现一个问题,MyISAM引擎的表的INSERT速度远远大于InnoDB引擎。所以,我们如果在使用非事物处理的表(也就是一些只有单用户使用的表)