当前位置:网站首页>MySQL进阶——存储引擎
MySQL进阶——存储引擎
2022-06-29 15:50:00 【白巧克力x】
目录
上篇文章我们学习了MySQL基础——事务,这篇文章学习MySQL进阶——存储引擎。
存储引擎
存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方法。其基于表的,而不是基于库的,所以存储引擎也称为表类型。
在建表的时候,不指定存储引擎的话,就会使用默认的存储引擎InnoDB,执行如下代码查看之前建表语句:
use mytest;
show create table account;如下图所示:

可以看到,该数据表的存储引擎为InnoDB。
在建表的时候,可以指定存储引擎,语法格式如下:
create table 表名(
字段1 字段1类型 [COMMENT 字段1注释],
....
字段n 字段n类型 [COMMENT 字段n注释],
)ENGINE = INNODB [COMMENT 表注释];注意:在指定存储引擎之前,需要查询当前数据库支持的存储引擎,代码如下:
show engines;如下图所示:

InnoDB
InnoDB是一种兼顾高可靠性和高性能的通用存储引擎,在MySQL5.5之后,InnoDB是默认的MySQL存储引擎。
其主要特点有:
DML操作遵循ACID模型,支持事务;
行级锁,提高并发访问性能;
支持外键FOREIGN KEY约束,保证数据的完整性和正确性;
其存储的磁盘文件后缀为.ibd,InnoDB引擎的每张表都会对应这样一个表空间文件,存储该表的表结构(frm、sdi)、数据和索引。
参数有innodb_file_per_table,该参数决定是一张表对应一个表空间文件还是多个表共享一个表空间文件。
查看该参数代码如下:
show variables like 'innodb_file_per_table';如下图所示:

可以看到innodb_file_per_table的值为ON,这就说明一张表对应一个表空间文件。
InnoDB逻辑存储结构如下:

其中:TableSpece表空间、Segment段、Extent区(固定大小1M)、Page页(固定大小16k)、Row行。
MyISAM
MyISAM是MySQL早期的默认存储引擎。
其主要特点:
不支持事务,不支持外键;
支持表锁,不支持行锁;
访问速度快。
在MyISAM涉及的磁盘空间文件后缀有:
.MYD:存储表数据;
.MYI:存储索引;
.sdi:存储表结构的信息。
Memory
Memory引擎的表数据是存储在内存中的,由于受到硬件问题、或断电问题的影响,只能将这些表作为临时表或缓存使用。
其主要特点有:
内存存放,访问速度快;
支持hash索引。
其文件后缀为sdi,该文件存储表结构信息。
选择
在选择存储引擎之前,我们首先对比这三种存储引擎的特点,如下表:
| 特点 | InnoDB | MyISAM | Memory |
|---|---|---|---|
| 存储限制 | 64TB | 有 | 有 |
| 事务安全 | 支持 | 不支持 | 不支持 |
| 锁机制 | 行锁 | 表锁 | 表锁 |
| B+tree索引 | 支持 | 支持 | 支持 |
| Hash索引 | 不支持 | 不支持 | 支持 |
| 全文索引 | 5.6版本之后支持 | 支持 | 不支持 |
| 空间使用 | 高 | 低 | N/A |
| 内存使用 | 高 | 低 | 中等 |
| 批量插入速度 | 低 | 高 | 高 |
| 支持外键 | 支持 | 不支持 | 不支持 |
存储引擎没有好坏之分,我们只需要根据系统特点选择合适的存储引擎,对于复杂的系统中,可以根据实际情况选择多种存储引擎进行组合。
InnoDB:是MySQL默认存储引擎,支持事务、外键。当应用对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询之外,还包含很多的更新、删除操作,那么InnoDB存储引擎是比较合适的选择。
MyISAM:当系统是以读操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完整性、并发性要求不是很高,那么选择MyISAM引擎。
Memory:将所有数据保存在内存中,访问速度快,通常用于临时表及缓存。Memory的缺陷是对表的大小有限制,太大的表无法缓存在内存中,而无法保障数据的安全性。
好了,MySQL进阶——存储引擎就学到这里了,下篇文章学习MySQL进阶——索引(结构及分类)。
边栏推荐
- Tutorial | fNIRS data processing toolkit homer2 download and installation
- 天龙八部TLBB系列 - 网单用数据库修改为其他门派
- 有哪些顶级水平的中国程序员?
- 基于JSP实现毕业设计选题系统
- The difference between Magento and WordPress
- three. JS and Gaode map are combined to introduce obj format model - effect demonstration
- 如何修复运行缓慢的 WordPress 网站?
- Science: the interrelated causes and consequences of sleep in the brain
- How to add a search box to your WordPress site
- 论文笔记:E(n) Equivariant Graph Neural Networks
猜你喜欢

华为云AOM 2.0版本发布

To prevent enterprise data leakage, use the fortress machine of network security products!

The latest agenda of dtcc2022 China database technology conference was released

UWB精准定位方案,厘米级高精度技术应用,智能配对感应技术

瓜分1000+万奖金池,昇腾AI创新大赛2022实力赋能开发者

面试官:说一下MySQL事务隔离级别?

leetcode:232. 用栈实现队列【双栈,一个辅助一个模拟队列】

leetcode:42. 接雨水【双指针很优雅】

基于JSP实现毕业设计选题系统

three. JS and Gaode map are combined to introduce obj format model - effect demonstration
随机推荐
Blue Bridge Cup 2015 CA provincial competition (filling the pit)
我想网上注册股票开户,如何操作?另外,手机开户安全么?
Pre war minesweeping: five measures for vulnerability management
隐私计算助力数据的安全流通与共享
A. Beat The Odds
关于组织开展2022年南京市创新产品(第一批)申报工作的通知
leetcode:232. 用栈实现队列【双栈,一个辅助一个模拟队列】
TLBB series of Tianlong Babu - online single use database modified to other sects
MATLAB给数据加噪声/扰动
wallys/m.2/Adapter card(one pcie1x to 4 x Mini PCIE)
ssl免费证书申请,免费的ssl证书实际效果怎么样啊?
locust性能压测工具
When easygbs calls the interface for obtaining real-time snapshots, how to solve the problem of white squares?
A. Marathon
如何在 WordPress 中创建联系表格?
UWB精准定位方案,厘米级高精度技术应用,智能配对感应技术
MySQL常用语句和命令汇总
高级性能测试工程师面试必问十大问题
按键精灵打怪学习-窗口绑定技能
Volcano engine was selected into the first "panorama of edge computing industry" in China