MySQL的表的存储是有其存储引擎的,表分为表结构、表数据、表引擎与表中的索引等等信息。
1、存储引擎一般分几大类:
- InnoDB
- MyiASM
- Memery
- ...
2、InnoDB存储引擎
MySQL 5.7版本中业务表的默认存储引擎
- InnoDB给MySQL的表提供了事务、回滚、崩溃修复能力和多版本并发控制的事务安全。
- InnoDB支持自动增长列AUTO INCREMENT,支持外键FOREIGN KEY。
- InnoDB中,创建的表结构存储在.frm文件中,数据和索引存储在innodb_data_home_dir和innodb_data_file_path定义的表空间中。
- 此引擎缺陷在于其读写效率稍差,占用的数据空间相对较大。
3、MyISAM存储引擎
此引擎很常见,曾是MySQL的默认存储引擎。
(MySQL的系统表的默认存储引擎)
- MyISAM存储引擎的表存储成三个文件,文件的名字与表名相同,扩展名分别为frm、myd和myi,其中,frm文件存储表的结构,myd存储数据,myi存储索引。
- 基于MyISAM存储引擎的表支持三种不同的存储格式,包括静态性、动态性和压缩性,指的是字段的长度。
- MyISAM存储引擎的优势在于占用空间小、处理速度快,缺点在于不支持事务的完整性和并发性。
4、MEMORY存储引擎
此引擎较特殊,其使用存储在内存中的内容来创建表,而且将所有数据也放在内存中,因此,处理速度极快。但当内存出现异常将会影响到数据的完整性,因此基于此引擎的表的生命周期很短,一般都是一次性的,因此很少用到。
MEMORY存储引擎默认使用哈希索引。
5、存储引擎选择
- 一般来说,如果需要对事物的完整性要求表较高,要求实现并发控制,或者需要频繁的进行更新、删除操作的数据库,可以选择InnoDB;
- 如果主要用于插入新记录和读出记录,或者应用的完整性、并发性要求很低,可以选择MyISAM;
- 如需很快的读写速度、对数据的安全性要求较低,且相对较小的数据库表,可以选择MEMORY。
当然,同一个数据库中可以使用多种存储引擎的表。
欢迎关注,以后会不定时更新!
PS: 若你觉得可以、还行、过得去、甚至不太差的话,可以“关注”一下,就此谢过!