为了方便管理,人们把连接管理,查询缓存,语法解析,查询优化这些不涉及真实数据存储的功能划分为MySQL Server的功能,把真是存取数据的功能划分为引擎功能。
所以在MySQL Server完成查询优化后,只需要按照引生成的执行计划
,调用引擎提供的API,获取到数据返回给客户端就可以了。
存储引擎就是指表的类型,以前叫做表处理器,后来改名为存储引擎,它的功能就是接受上层传下来的命令,对数据进行提取获取写入操作。
show engines;
show variables like 'storage_engine';
或者
select @@default_storage_engine;
set DEFAULT_STORAGE_ENGINE(注意大写) = InnoDB;
或者修改my.cnf
default-storage-engine=InnoDB
creat table 表名 (
创建语句
)engine=存储引擎名;
alter table 表名 engine = 存储引擎名
● InnoDB支持事物。
● MySQL5.5版本之前默认是MyISAM,之后,默认存储引擎是InnoDB。
● 除了增加和查询外,还需要修改和删除的,那么,应当优先使用InnoDB引擎。
● 除非有特殊原因需要使用其他引擎,否则应当优先使用InnoDB引擎。
● InnoDB是为处理巨大数据量的最大性能设计
○ 在8.0前的版本,字典数据以元数据文件,非事物表等存储,现在这些文件在8.0中都被删除了,比如:.frm,.idb,.par,.trn,.isl,.opt
● 对比MyISAM引擎,InnoDB写的效率差一些
,并且占用更高的磁盘空间以保存索引和数据。
● 对比MyISAM引擎,MyISAM只缓存索引,不缓存数据,InnoDB缓存数据和索引,对内存要求高,而且内存大小对性能有决定性影响。
● MyISAM提供了大量的特性,包括全文索引,压缩,空间函数(GIS)等,但MyISAM不支持事物,行级锁,外键,崩溃后无法恢复。
● 5.5之前的默认引擎。
● 优势是访问速度快。
● 针对数据统计有额外的常数存储,所以count(*)的查询效率很高。
● 主要应用对事物没有要求或者以SELECT,INSERT为主的应用。
数据文件结构
● 表名.frm ---存储表的结构
● 表名.MYD ---存储表的数据
● 表名.MYI ---存储表的索引
对比项 | MyISAM | InnoDB | |
---|---|---|---|
外键 | 不支持 | 支持 | |
行锁 | 不支持 | 支持 | |
表锁 | 支持 | 支持 | |
缓存 | 只缓存索引 | 缓存索引和数据 | |
自带系统表示用 | Y | ||
关注点 | 性能:节省资源,简单业务 | 事物:并发写,事物,更大资源 | |
默认安装 | Y | Y | |
默认使用 | 5 | .5之前 | 5.5之后 |
—— 评论区 ——