侧边栏壁纸
博主昵称
流苏小筑

步伐虽小,密而不止

InnoDB与MyISAM的对比

2023年06月22日 17阅读 0评论 0点赞

InnoDB与MyISAM的对比

为了方便管理,人们把连接管理,查询缓存,语法解析,查询优化这些不涉及真实数据存储的功能划分为MySQL Server的功能,把真是存取数据的功能划分为引擎功能。
所以在MySQL Server完成查询优化后,只需要按照引生成的执行计划,调用引擎提供的API,获取到数据返回给客户端就可以了。
存储引擎就是指表的类型,以前叫做表处理器,后来改名为存储引擎,它的功能就是接受上层传下来的命令,对数据进行提取获取写入操作。


1.查看表的引擎

show engines;

m4du05or.png


2.设置系统默认存储引擎

2.1 查看默认存储引擎

show variables like 'storage_engine';
或者
select @@default_storage_engine;
m4due3qz.png

2.2 设置默认存储引擎

set DEFAULT_STORAGE_ENGINE(注意大写) = InnoDB;
m4duehws.png
或者修改my.cnf
default-storage-engine=InnoDB

systemctl mysqld restart.service

3.设置表的存储引擎

3.1 创建表时指定存储引擎

creat table 表名 (
创建语句
)engine=存储引擎名;

3.2 修改表的存储引擎

alter table 表名 engine = 存储引擎名


4.引擎介绍

4.1 InnoDB引擎:具备外键支持功能的事物的存储引擎

● InnoDB支持事物。
MySQL5.5版本之前默认是MyISAM,之后,默认存储引擎是InnoDB。
● 除了增加和查询外,还需要修改和删除的,那么,应当优先使用InnoDB引擎。
● 除非有特殊原因需要使用其他引擎,否则应当优先使用InnoDB引擎。
● InnoDB是为处理巨大数据量的最大性能设计
○ 在8.0前的版本,字典数据以元数据文件,非事物表等存储,现在这些文件在8.0中都被删除了,比如:.frm,.idb,.par,.trn,.isl,.opt
● 对比MyISAM引擎,InnoDB写的效率差一些,并且占用更高的磁盘空间以保存索引和数据。
● 对比MyISAM引擎,MyISAM只缓存索引,不缓存数据,InnoDB缓存数据和索引,对内存要求高,而且内存大小对性能有决定性影响。

  • 数据文件结构
    ● 表名.frm ---存储表的结构
    ● 表名.idb ---存储表的数据和索引
  • InnoDB的优势
    操作便利,提高了数据库的性能,维护成本低。
    如过由于硬件或者软件问题导致数据库崩溃,那么再重启服务器之后不需要进行额外操作,InnoDB的崩溃恢复功能会自动将之前提交的内容定型,然后撤销没有提交的进程,重启后继续从崩溃的节点执行。

4.2MyISAM引擎:主要的非事物处理存储引擎

● MyISAM提供了大量的特性,包括全文索引,压缩,空间函数(GIS)等,但MyISAM不支持事物,行级锁,外键,崩溃后无法恢复。
● 5.5之前的默认引擎。
● 优势是访问速度快。
● 针对数据统计有额外的常数存储,所以count(*)的查询效率很高。
● 主要应用对事物没有要求或者以SELECT,INSERT为主的应用。
数据文件结构
● 表名.frm ---存储表的结构
● 表名.MYD ---存储表的数据
● 表名.MYI ---存储表的索引

4.3 MyISAM和InnoDB的区别

对比项MyISAMInnoDB
外键不支持支持
行锁不支持支持
表锁支持支持
缓存只缓存索引缓存索引和数据
自带系统表示用Y
关注点性能:节省资源,简单业务事物:并发写,事物,更大资源
默认安装YY
默认使用5.5之前5.5之后
0

—— 评论区 ——

昵称
邮箱
网址
取消