- InnoDB存储引擎
- InnoDB中,创建的表的表结构存储在.frm文件中(我觉得是frame的缩写吧)。数据和索引存储在innodb_data_home_dir和innodb_data_file_path定义的表空间中。
- InnoDB的优势在于提供了良好的事务处理、崩溃修复能力和并发控制,支持外键。缺点是读写效率较差,占用的数据空间相对较大。
- MyISAM存储引擎
- MyISAM是MySQL中常见的存储引擎,曾经是MySQL的默认存储引擎。MyISAM是基于ISAM引擎发展起来的,增加了许多有用的扩展。
- MyISAM的表存储成3个文件。文件的名字与表名相同。拓展名为frm存储表的结构、MYD存储数据、MYI存储索引
- 支持3种存储格式:包括静态型、动态型和压缩型。
- 静态型是MyISAM的默认存储格式,它的字段是固定长度的;
- 动态型包含变长字段,记录的长度不是固定的;
- 压缩型需要用到myisampack工具,占用的磁盘空间较小。
- MyISAM的优势在于占用空间小,处理速度快。缺点是不支持事务的完整性和并发性。
- MEMORY存储引擎
- MEMORY是MySQL中一类特殊的存储引擎。它使用存储在内存中的内容来创建表,而且数据全部放在内存中
- MEMORY存储引擎的表实际对应一个磁盘文件。该文件的文件名与表名相同,类型为frm类型只存储表的结构。而其数据文件,都是存储在内存中。有利于数据的快速处理,提高整个表的效率。但内存出现异常,重启或者关机会影响数据
- MEMORY默认使用哈希索引。速度比使用B型树索引快。如果你想用B型树索引,可以在创建索引时指定。
- 怎样选择存储引擎
- InnoDB:
- 支持事务处理,支持外键,支持崩溃修复能力和并发控制。
- 如果需要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择InnoDB有很大的优势。
- 如果需要频繁的更新、删除操作的数据库,也可以选择InnoDB,因为支持事务的提交(commit)和回滚(rollback)。
- MyISAM:
- 插入数据快,空间和内存使用比较低。
- 如果表主要是用于插入新记录和读出记录,那么选择MyISAM能实现处理高效率。
- 如果应用的完整性、并发性要求比 较低,也可以使用。
- MEMORY:
- 所有的数据都在内存中,数据的处理速度快,但是安全性不高。
- 如果需要很快的读写速度,对数据的安全性要求较低,可以选择MEMOEY。
- 它对表的大小有要求,不能建立太大的表。所以,这类数据库只使用在相对较小的数据库表
- InnoDB: