常见存储引擎
设置存储引擎
# 查看支持的存储引擎
show engines;
# 查看系统默认的存储引擎,5.7和8.0是Innodb
SELECT @@default_storage_engine;
# 修改默认存储引擎,建议在my.cfg改,百度下怎么改
SET DEFAULT_STORAGE_ENGINE=MyISAM;
# 为不同的表设置不同的存储引擎
CREATE TABLE 表名(
建表语句;
) ENGINE = 存储引擎名称;
# 或者
ALTER TABLE engine_demo_table ENGINE = InnoDB
Innodb(*5:行锁、事务->db恢复、外键、聚簇索引->缓存真实数据、数据文件结构)
- 除非有非常特别的原因需要使用其他的存储引擎,否则应该优先考虑InnoDB引擎。
- 支持行锁,因此InnoDB是 为处理巨大数据量的最大性能设计 。
- 事务型引擎 ,它被设计用来处理大量的短期(short-lived)事务。可以确保事务的完整提交(Commit)和回滚(Rollback)。
支持事务带来的好处:对修改和删除操作更加友好,数据库维护成本低(崩溃直接回到崩溃前的提交点) - 使用聚簇索引。缓存数据时,缓存索引还要缓存真实数据,对内存要求较高,而且内存大小对性能有决定性的影响
- 文件结构上,在以前的版本中,字典数据以元数据文件、非事务表等来存储。现在这些元数据文件被删除 了。比如: .frm , .par , .trn , .isl , .db.opt 等都在MySQL8.0中不存在了。
MyISAM (*4:以SELECT、INSERT为主的或者数据规模较小应用,count系统变量,全文索引、前缀压缩索引等特性,数据文件结构)
-
MyISAM提供了大量的特性,包括**全文索引、压缩、空间函数(GIS)**等,但MyISAM 不支持事务、行级 锁、外键 ,有一个毫无疑问的缺陷就是崩溃后无法安全恢复 。
myisam使用前缀压缩来减少索引的大小,从而让更多的索引可以放入内存中[mysql myisam 压缩_mysql索引之八:myisam压缩(前缀压缩)索引-CSDN博客](https://blog.csdn.net/weixin_29560063/article/details/113432367#:~:text=myisam使用前缀压缩来减少索引的大小,从而让更多的索引可以放入内存中,默认只压缩字符串,但通过参数配置也可以对整数做压缩,myisam压缩每个索引块的方法是,先完全保存索引块中的第一个值,然后将其他值和第一个值进行比较得到相同前缀的字节数 (长度)和剩余的不同后缀部分,(即把相同部分去掉),把这部分存储起来即可 (相同前缀长度和不同后缀部分字符串)。)
-
5.5之前默认的存储引擎 优势是访问的 速度快 ,对事务完整性没有要求或者以SELECT、INSERT为主的应用
-
针对数据统计有额外的常数存储。故而 count(*) 的查询效率很高
-
数据文件结构:表名.frm 存储表结构 、表名.MYD 存储数据 (MYData)、 表名.MYI 存储索引 (MYIndex)
-
应用场景:只读应用或者以读为主的业务
Memory 引擎:置于内存的表
Memory采用的逻辑介质是 内存 , 响应速度很快 ,但是当mysqld守护进程崩溃的时候 数据会丢失