存储引擎特性
特点 | MyIsam | BDB | Memory | InnoDB | Archive |
---|
存储限制 | 没有 | 没有 | 有 | 64TB | 没有 |
事务安全 | | 支持 | | 支持 | |
锁机制 | 表锁 | 页锁 | 表锁 | 行锁 | 行锁 |
B树索引 | 支持 | 支持 | 支持 | 支持 | |
哈希索引 | | | 支持 | 支持 | |
全文索引 | 支持 | | | | |
集群索引 | | | | 支持 | |
数据缓存 | | | 支持 | 支持 | |
索引缓存 | 支持 | | 支持 | 支持 | |
数据可压缩 | 支持 | | | | 支持 |
空间使用 | 低 | 低 | N/A | 高 | 非常低 |
内存使用 | 低 | 低 | 中等 | 高 | 低 |
批量插入速度 | 高 | 高 | 高 | 低 | 非常高 |
支持外键 | | | | 支持 | |
引擎选择
常用引擎的适用环境
引擎 | 适用环境 |
---|
MyIsam | 默认的mysql插件式存储引擎,它是在web、数据仓储和其他应用环境下 |
InnoDB | 用于事务处理应用程序,具有众多特性,包含ACID事务支持 |
Memory | 将所有数据保存在RAM中,在需要快速查找引用和其他类似数据的环境下,可提供极快的访问速度 |
Merge | 允许mysql dba或开发人员将一系列等同的MyISAM表以逻辑方式组合在一起,并作为一个对象引用他们,对于诸如数据仓储等VLDB环境十分合适 |
数据类型选择
引擎 | 建议的数据类型 |
---|
MyISAM | 固定长度的数据列代替可变长度的数据列 |
Memory | 该引擎目前全部使用固定长度的数据列,变长类型会被当成固定长度处理 |
InnoDB | 建议使用varchar类型 |
对于InnoDB数据表,内部的行存储格式没有区分固定长度和可变长度列(所有数据行
都使用指向数据列值的头指针) ,因此在本质上,使用固定长度的 CHAR列不一定比使
用可变长度VARCHAR列简单。 因而, 主要的性能因素是数据行使用的存储总量。 由于CHAR
平均占用的空间多于VARCHAR, 因 此使用VARCHAR来最小化需要处理的数据行的存储总
量和磁盘I/O是比较好的