1.1 Mysql存储引擎概述
Mysql支持多种存储引擎,在处理不同类型的应用时,可以通过选择不同的存储引擎提高应用的效率,或者提供灵活的存储。
包括:MyISAM、InnoDB、BDB、MEMORY、MERGE、EXAMPLE、NDB Cluster、ARCHIVE、CSV等,其中InnoDB、BDB提供安全事务表,其他引擎都是非事务安全表。
1.2 各种存储引擎的特性
特点 | Myisam | BDB | Memory | InnoDB | Archive |
存储限制 | 没有 | 没有 | 有 | 64TB | 没有 |
事务安全 |
| 支持 |
| 支持 |
|
锁机制 | 表锁 | 页锁 | 表锁 | 行锁 | 行锁 |
B树索引 | 支持 | 支持 | 支持 | 支持 |
|
哈希索引 |
|
| 支持 | 支持 |
|
全文索引 | 支持 |
|
|
|
|
集群索引 |
|
|
| 支持 |
|
数据缓存 |
|
|
| 支持 |
|
索引缓存 |
|
| 支持 | 支持 |
|
数据可压缩 | 支持 |
|
|
| 支持 |
空间使用 | 低 | 低 | 不消耗空间 | 高 | 低 |
内存使用 | 低 | 低 | 中等 | 高 | 非常高 |
批量插入速度 | 高 | 高 | 高 | 低 | 非常高 |
支持外键 |
|
|
| 支持 |
|
最常用的存储引擎:
1. Myisam存储引擎:每个Myisam在磁盘上存储成三个文件。文件名都和表名相同,扩展名分别为.frm(存储表定义)、.MYD(存储数据)、.MYI(存储索引)。数据文件和索引文件可以放置在不同目录,平均分布io,获得更快的速度。
2. InnoDB存储引擎:具有提交、回滚、奔溃恢复能力的事务安全。与Myisam相比,InnoDB的写效率差一些并且会占用更多的磁盘空间以保留数据和索引。
1.3 如何选择合适的引擎
下面是常用存储引擎适用的环境:
1. Myisam:它是在Web、数据仓储和其他应用环境下最常使用的存储引擎。
2. InnoDB:用于事务处理应用程序,具有更多特性,包括ACID事务特性。
3. Memory:所有数据都存储在Ram中,在需要快速查找引用和其他类似数据环境下,可以极速访问。
4. Merge:允许Mysql DBA(数据库管理人)或开发人员将一系列等同的MyISAM表以逻辑方式组合在一起,并作为1个对象引用他们。对于世界仓储等环境十分合适。