四、存储引擎1.MySQL体系结构存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表而不是基于库的所以存储引擎也可以被称为表引擎。默认存储引擎是InnoDB2.相关语句创建表时指定存储引擎CREATE TABLE 表名( ... ) ENGINEINNODB;查看当前数据库支持的存储引擎show engines;3.InnoDBInnoDB 是一种兼顾高可靠性和高性能的通用存储引擎在 MySQL 5.5 之后InnoDB 是默认的 MySQL 引擎。3.1 特点DML 操作遵循 ACID 模型支持事务行级锁提高并发访问性能支持外键约束保证数据的完整性和正确性3.2 文件xxx.ibdxxx代表表名InnoDB 引擎的每张表都会对应这样一个表空间文件存储该表的表结构frm、sdi、数据和索引。 参数innodb_file_per_table决定多张表共享一个表空间OFF还是每张表对应一个表空间ON查看MySQL变量show variables like innodb_file_per_table;从idb文件提取表结构数据在cmd执行ibd2sdi 表名.ibd3.3 InnoDB 逻辑存储结构4.MyISAMMyISAM 是 MySQL 早期的默认存储引擎。4.1 特点不支持事务不支持外键支持表锁不支持行锁访问速度快4.2 文件表名.sdi存储表结构信息表名.MYD存储数据表名.MYI存储索引5.MemoryMemory 引擎的表数据是存储在内存中的受硬件问题、断电问题的影响只能将这些表作为临时表或缓存使用。5.1 特点存放在内存中速度快hash索引默认5.2 文件表名.sdi存储表结构信息6.存储引擎的比较特点InnoDBMyISAMMemory存储限制64TB有有事务安全支持--锁机制行锁表锁表锁Btree索引支持支持支持Hash索引--支持全文索引支持5.6版本之后支持-空间使用高低N/A内存使用高低中等批量插入速度低高高支持外键支持--7.存储引擎的选择在选择存储引擎时应该根据应用系统的特点选择合适的存储引擎。对于复杂的应用系统还可以根据实际情况选择多种存储引擎进行组合。InnoDB: 如果应用对事物的完整性有比较高的要求在并发条件下要求数据的一致性数据操作除了插入和查询之外还包含很多的更新、删除操作则 InnoDB 是比较合适的选择MyISAM: 如果应用是以读操作和插入操作为主只有很少的更新和删除操作并且对事务的完整性、并发性要求不高那这个存储引擎是非常合适的。Memory: 将所有数据保存在内存中访问速度快通常用于临时表及缓存。Memory 的缺陷是对表的大小有限制太大的表无法缓存在内存中而且无法保障数据的安全性电商中的足迹和评论适合使用 MyISAM 引擎缓存适合使用 Memory 引擎。