MySQL概述
基础篇
通用语法及分类
DCL
DQL
DML
DDL
函数
字符串函数
数值函数
日期函数
流程函数
约束
常用约束
外键约束
多表查询
多表关系
查询
内连接查询
外连接查询
自连接查询
联合查询
子查询
事务
进阶篇
存储引擎
性能分析
查看执行频次
慢查询日志
profile
explain
索引
索引结构
索引分类
语法
使用规则
设计原则
SQL 优化
插入数据
主键优化
order by优化
group by优化
limit优化
count优化
update优化(避免行锁升级为表锁)
视图
存储过程
触发器
锁
InnoDB 引擎
事务原理
MVCC
数据类型
权限一览表
图形化界面工具
存储引擎 - MySql学习文档 - 笔下光年
网站首页
存储引擎
MySQL体系结构: ![](/uploads/images/20240422/1e7a1b2f10a0ea5449e849926c404457.png) ![](/uploads/images/20240422/c84c2193cdb8cc1f56ef90b619447c85.png) ![](/uploads/images/20240422/a6b6c9c454ed819316a07c8951e23c7e.png) 存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表而不是基于库的,所以存储引擎也可以被称为表引擎。 默认存储引擎是InnoDB。 相关操作: ```mysql -- 查询建表语句 show create table account; -- 建表时指定存储引擎 CREATE TABLE 表名( ... ) ENGINE=INNODB; -- 查看当前数据库支持的存储引擎 show engines; ``` ### InnoDB InnoDB 是一种兼顾高可靠性和高性能的通用存储引擎,在 MySQL 5.5 之后,InnoDB 是默认的 MySQL 引擎。 特点: - DML 操作遵循 ACID 模型,支持**事务** - **行级锁**,提高并发访问性能 - 支持**外键**约束,保证数据的完整性和正确性 文件: - xxx.ibd: xxx代表表名,InnoDB 引擎的每张表都会对应这样一个表空间文件,存储该表的表结构(frm、sdi)、数据和索引。 参数:innodb_file_per_table,决定多张表共享一个表空间还是每张表对应一个表空间 知识点: 查看 Mysql 变量: `show variables like 'innodb_file_per_table';` 从idb文件提取表结构数据: (在cmd运行) `ibd2sdi xxx.ibd` InnoDB 逻辑存储结构: ![](/uploads/images/20240422/835ed29cd6cfd5d41f0962e6bab2c587.png) ### MyISAM MyISAM 是 MySQL 早期的默认存储引擎。 特点: - 不支持事务,不支持外键 - 支持表锁,不支持行锁 - 访问速度快 文件: - xxx.sdi: 存储表结构信息 - xxx.MYD: 存储数据 - xxx.MYI: 存储索引 ### Memory Memory 引擎的表数据是存储在内存中的,受硬件问题、断电问题的影响,只能将这些表作为临时表或缓存使用。 特点: - 存放在内存中,速度快 - hash索引(默认) 文件: - xxx.sdi: 存储表结构信息 ### 存储引擎特点 | 特点 | InnoDB | MyISAM | Memory | | ------------ | ------------ | ------------ | ------------ | | 存储限制 | 64TB | 有 | 有 | | 事务安全 | 支持 | - | - | | 锁机制 | 行锁 | 表锁 | 表锁 | | B+tree索引 | 支持 | 支持 | 支持 | | Hash索引 | - | - | 支持 | | 全文索引 | 支持(5.6版本之后) | 支持 | - | | 空间使用 | 高 | 低 | N/A | | 内存使用 | 高 | 低 | 中等 | | 批量插入速度 | 低 | 高 | 高 | | 支持外键 | 支持 | - | - | ### 存储引擎的选择 在选择存储引擎时,应该根据应用系统的特点选择合适的存储引擎。对于复杂的应用系统,还可以根据实际情况选择多种存储引擎进行组合。 - InnoDB: 如果应用对事物的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询之外,还包含很多的更新、删除操作,则 InnoDB 是比较合适的选择 - MyISAM: 如果应用是以读操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完整性、并发性要求不高,那这个存储引擎是非常合适的。 - Memory: 将所有数据保存在内存中,访问速度快,通常用于临时表及缓存。Memory 的缺陷是对表的大小有限制,太大的表无法缓存在内存中,而且无法保障数据的安全性 电商中的足迹和评论适合使用 MyISAM 引擎,缓存适合使用 Memory 引擎。
上一篇:
进阶篇
下一篇:
性能分析