存储引擎定义
存储引擎是指表的类型,在具体开发时为了提高MySQL数据库管理系统的使用效率和灵活性,可以根据实际需要来选择存储引擎。因为存储引擎指定了表的类型,即如何存储和索引数据、是否支持事务等,同时存储引擎也决定了表在计算机的存储方式。
InnoDB 存储引擎
InnoDB给MySQL的表提供了事务、回滚、崩溃修复能力和多版本并发控制的事务安全,它是MySQL第一个提供外键约束的表引擎,而且InnoDB对事务的处理能力也是MySQL其他存储引擎无法比拟的。
MySQL 5.6版本之后,除系统数据库之外,默认的存储引擎由MyISAM改为InnoDB,MySQL8.0版本在原先的基础上,将系统数据库的存储引擎也改为了InnoDB。
InnoDB支持自动增长列AUTO_INCREMENT,支持外键(FOREIGN KRY)。
查看MySQL数据库管理系统支持的引擎
SHOW ENGINES
DEFAULT表示系统默认支持的存储引擎
MyISAM 存储引擎
MyISAM 存储引擎是MySQL种最常用的存储引擎,MyISAM 存储引擎是基于ISAM存储引擎发展起来的,MyISAM 增加了许多有用的扩展。
MyISAM 存储引擎的表存储成三个文件,文件的名字与表名相同,或站名包括fm、MYD和MYI。
基于MyISAM 存储引擎的表支持三种存储格式,包括静态型、动态型和压缩型。
InnoDB与MyISAM的对比
InnoDB存储引擎的优势在于提供了良好的事务管理、崩溃修复能力和并发控制:缺点是其读写效率稍差,占用的数据空间相对比较大。
MyISAM存储引擎的优势在于占用空间小,处理速度快:缺点是不支持事务的完整性和并发性。
特性 | InnoDB | MyISAM |
事务安全 | 支持 | 无 |
存储显示 | 64TB | 有 |
空间使用 | 高 | 低 |
内存使用 | 高 | 低 |
插入数据速度 | 低 | 高 |
锁机制 | 行锁 | 表锁 |
对外键的支持 | 支持 | 无 |
数据可压缩 | 无 | 支持 |
批量插入速度 | 低 | 高 |
如果对事务的完整性要求比较高,要求实现并发控制,那么选择InnoDB会有很大的优势,如果需要进行频繁的更新、删除的数据库,也可以选择InnoDB。
如果表主要是用于插入新纪录和读出记录,那么选择MyISAM能实现处理的高效率,如果应用的完整性、并发性要求很低,也可以选择MyISAM。
修改MySQL的默认存储引擎。
SET DEFAULT_STORAGE_ENGINE=MYISAM
SHOW ENGINES