MySql中的引擎
目录
引擎种类
- FEDERATED
- MRG_MYISAM
- MyISAM
- BLACKHOLE
- CSV
- MEMORY
- ARCHIVE
- InnoDB
- PERFORMANCE_SCHEMA
- 输入show storage Engines,可以看到当前mysql的所有引擎,本文主要讲常用的两种索引MyISAM和InnoDB
引擎使用
- 查看表的引擎,show create table table_name ,可以看到表的引擎
- 在创建表的时候,我们就可以设置表的的引擎
CREATE TABLE user (id INT NOT NULL AUTO_INCREMENT, username VARCHAR(50) NOT NULL,password VARCHAR (50) NOT NULL DEFAULT 1,PRIMARY KEY(id)) ENGINE =INNODB
- 修改表的引擎 alter table note engine=myisam;
比较
项 | MyISAM | InnoDB |
---|---|---|
文件 | 三个文件组成。.frm(存储表定义).MYD (存储数据文件)。.MYI (存储索引)。 | 所有的表都保存在同一个数据文件中(也可能是多个文件,或者是独立的表空间文件),InnoDB表的大小只受限于操作系统文件的大小,一般为2GB。 |
外键 | 不支持 | 支持 |
事务 | 不支持 | 支持 |
自增长列 | 必须是索引列,不需要一定是组合索引的第一列 | 必须是索引,如果是组合索引,必须是组合索引的第一列 |
查找行数 | 存储了表的行数,查找时候很快 | 必须扫描全表 |
增删该查 | select更适合 | insert 和 update更适合 |
锁 | 表锁 | 既支持行锁也支持表锁 |
删表 | 重建表 | 一行一行删 |
存储空间 | 表支持3种存储格式,静态表(默认存储格式,每条记录固定长度),动态表(每条记录不是固定长度,存储的空间减少了),压缩表(每条记录被单独压缩,占据空间更少) | 需要更多的内存和存储,它会在主内存中建立其专用的缓冲池用于高速缓冲数据和索引 |
可移植性 | 数据以文件形式存储,跨平台转移方便 | 所有表都保存在同一个数据文件(也可能是多个文件),相对来说不好备份 |
引擎选择
- 选择密集还是更新密集,MyISAM读操作性能更好,InnoDb写操作更好
- 并发度如何,InnoDB支持事务,并发下表现更好
- 是否需要外键支持