MySQL学习笔记-存储引擎
存储引擎
一. MySQL体系结构#
- MySQL Server
- 连接层:连接的处理、认证授权、安全方案、检查是否超过最大连接数等。
- 服务层:SQL接口、解析器、查询优化器、缓存
- 引擎层:引擎是数据存储和提取的方式,引擎层有许多引擎可供使用,也可以自定义引擎。索引是在存储引擎层实现的。
- 存储层:存储数据库的相关数据,包括数据与日志等。
二. 存储引擎简介#
什么是存储引擎?
存储引擎是存储数据、建立索引、更新/查询数据等技术的实现方式。
存储引擎是基于表的,而不是基于库的,所以存储引擎也可被称为表类型。
- MySQL 5.5 之后默认存储引擎为InnoDB。
1. 在创建表时指定存储引擎#
create table {表名}(
...
)engine = {存储引擎} ...;
2. 查看当前数据库支持的存储引擎#
show engines;
三. 存储引擎特点#
1. InnoDB#
InnoDB是一种兼顾高可靠性和高性能的通用存储引擎,在MySQL 5.5 之后,InnoDB是默认的MySQL存储引擎。
1.1 特点#
- DML操作遵循ACID模型,支持事务;
- 行级锁,提高并发访问性能;
- 支持外键FOREIGN KEY约束,保证数据的完整性和准确性;
1.2 文件#
xxx.ibd:xxx代表表名,innoDB引擎的每张表都会对应这样一个表空间文件,存储该表的表结构(frm、sdi)、数据和索引。
- 参数:innodb_file_per_table:决定是多张表共用一个共享表空间还是每个表都对应一个表空间,目前默认是打开的(每个表都对应一个表空间文件)
1.3 逻辑存储结构#
- TableSpace:表空间
- Segment:段
- Extent:区(大小固定:1M)(一个区包含64个页)
- Page:页(大小固定:16K)
- Row:行
2. MyISAM#
MyISAM是MySQL早期的默认存储引擎
2.1 特点#
- 不支持事务,不支持外键
- 支持表锁,不支持行锁
- 访问速度快
2.2 文件#
- .MYD:表中存放的数据
- .MYI:索引
- .sdi:存储表结构信息
3. Memory#
Memory引擎的表数据是存储在内存中的,由于受到硬件问题、或断电问题的影响,只能将这些表作为临时表或缓存使用。
3.1 特点#
- 内存存放(快)
- hash索引(默认)
3.2 文件#
xxx.sdi:存储表结构信息
数据索引在内存中。
四. 存储引擎选择#
选择存储引擎时,应该根据应用系统的特点选择合适的存储引擎。
对于复杂的应用系统,还可以根据实际情况选择多种存储引擎进行组合。
作者:YellowSea
出处:https://www.cnblogs.com/yellowsea/p/17266163.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!