MySQL常见存储引擎

常见存储引擎
设置存储引擎

# 查看支持的存储引擎
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守护进程崩溃的时候 数据会丢失

你可能感兴趣的:(数据库,mysql)