搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
Gausst松鼠会
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
Ubuntu22.04本地部署qwen模型、jupyterlab开发环境、LoRA微调全流程-续
2
vue附件上传和展示_vue 详情种附件展示
3
基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的吸烟检测系统(深度学习+Python代码+PySide6界面+训练数据集)_yolov7吸烟检测
4
Anaconda与pycharm安装,以及python解释器环境配置_pycharm anaconda解释器
5
常用idea快捷键筛选推荐_idea筛选
6
mysql8.0(安装含踩坑内容)
7
turtle库是python的第三方库_python--turtle库
8
ora-12545错误解决方法
9
echo命令详解 Linux:用于输出文本内容_echo 输出文件内容
10
AUTOSAR 面试问题7:AUTOSAR OS的basic task,extend task。 ISR category 1, ISR category 2_autosar面试
当前位置:
article
> 正文
MySql采用的存储引擎MyISAM和InnoDB
作者:Gausst松鼠会 | 2024-05-20 01:41:13
赞
踩
MySql采用的存储引擎MyISAM和InnoDB
MySql
体系结构
图
MySql插拔式的存储引擎
插拔式引擎式Mysql中非常优秀设计,它可以动态的卸载加载存储引擎,通过一种插件化的方式进行加载,在mysql当中有非常多的存储引擎比如:MyISAM,InnoDB,Cluster等等存储引擎。
在上面图片中Memory旁边有个索引Index。index索引的落地并非是MySql来实现的。是通过不同的存储引擎来实现的索引机制。
MyISAM是MySql5.5以前默认的存储引擎,InnoDB是5.5以后的默认版本存储引擎。存储引擎是用来修饰表的,一张表有且只能有一种存储引擎来修饰它,一个数据库有很多表,每个表都可以允许使用不同的存储引擎组成,但是不推荐这也使用。然而每张表必须要有一个存储引擎存储,在我们创建表的时候它会采用默认存储引擎。
MyISAM引擎落地
如果一个表同时有3个你上面说的文件,则存储引擎是myisam,其中可以简单理解成这样:
frm–表定义,是描述表结构的文件。
MYD–"D"数据信息文件,是表的数据文件。
MYI–"I"索引信息文件,是表数据文件中任何索引的数据树。
根据上图显示,假设我们有一个User表,User表是根据MyISAM引擎修饰的,它会有两个文件MYI和MYD,MYI表示索引文件,在User这张表当中所有的index索引都存储在这个文件当中,MYD当中存储的是我们的数据,然后每条数据当中都会存储我们的磁盘指针。
假设我们根据id索引1来查找,它会基于MYI当中的B+树去查询找,当找到我们末尾节点上的数据,该数据对应的是指针,当我们拿到指针后可以快速的去MYD上找到对应的行数据返回给我们的请求中。MyISAM当中支持创建多个MYI索引文件,会根据你创建多个索引文件生成多个B+树。
Myisam特点:
较快的数据插入和读取性能
较小的磁盘占用【相较于Innodb】
支持表级别的锁,不支持事务
数据文件与索引文件分开存储【MYD和MYI】
Myisam的统计count方法可以通过额外的常量进行返回
InnoDB引擎
Innodb是没有MYD文件,Innodb是采用聚集索引,innodb当中有且只有一个主键索引,其他的都是非聚集索引,聚集索引在B+树末尾的子节点上存储的是它的行记录(表当中的每一行的数据)。比如id为1,在1xx当中存储的就是(1,zhangsan等等)它的索引和数据组织了在一起,以主键的索引组织在一起,这就叫做聚集索引。
Innodb本质上是不能没有主键的,假设你没有设置主键它默认采用roId来当主键。所以它是不可能没有主键索引。
InnoDB特点:
支持事务
行级锁
聚集索引
数据行内容与索引结构在一个文件当中【IBD】
外键支持,保证数据的完整性
MySQL中的myisam与Innodb的区别:
Innodb支持事务,而MyISAM不支持事务;
Innodb支持行级锁,而MyISAM支持表级锁;
Innodb支持MVCC,而MyISAM不支持;
Innodb支持外键,而MyISAM不支持;
Innodb不支持全文索引,而MyISAM支持;
select count(*) myisam更快,因为myisam内部维护了一个计算器,可以直接调取。
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/595470
推荐阅读
article
mysql
表级
锁
之
读
锁
、写
锁
_
lock
read
和
write
mysql
...
语法
lock
tables tablename
read
/
write
或
lock
table tablename
read
...
赞
踩
article
MySQL
--深入理解
MVCC
机制原理_
mysql
mvcc
了解吗?展开
说
说
...
Read View 是事务执行快照读产生的视图,在事务执行快照读的时候,系统会以当前时刻生成一个快照,以此来维护系统此时...
赞
踩
article
【
MySQL
】深入理解
MVCC
与
BufferPoll
缓存
机制
_
buffer
pool
机制
...
MVCC
就是多版本并发控制
机制
MySQL
在隔离级别下如何保证事务较高的隔离性?同样的SQL查询语句,就算对数据有也当前事...
赞
踩
article
MySQL
内存管理:
Buffer
Pool
Flush
机制_
mysql
flush
线程...
本文聚焦于InnoDB中的
Buffer
Pool
的核心功能,首先从宏观上介绍其背景,包括设计目标、接口、遇到的问题及替换...
赞
踩
article
【MySQL进阶(三)】
InnoDB
体系架构之内存池(
buffer
pool
)_
mysql
inn...
InnoDB
存储
引擎
是基于磁盘进行
存储
的,并将其中的记录按照页的方式进行管理。由于【磁盘速度】和【内存速度】相比根本不...
赞
踩
article
Mysql
-
MVCC
多
版本
并发控制
机制
_
mysql
mvcc
--多
版本
并发控制
机制
...
MVCC
多
版本
并发控制
机制
什么是
MVCC
MVCC
的作用
MVCC
还涉及到RR、RC等相关问题什么是
MVCC
MVCC
,全称M...
赞
踩
article
MySQL
Buffer
Pool
解析:
原理
、
组成及作用...
当我们谈论
MySQL
的性能优化时,InnoDB存储引擎的缓冲池(
Buffer
Pool
)是一个无法忽视的关键组件。作为内...
赞
踩
article
mysql
Buffer
Pool详解...
Mysql
Buffer
Pool_
mysql
buffer pool
mysql
buffer pool ...
赞
踩
article
【
MySQL
】一文带你学透
函数
_
mysql
函数
字符
转换
...
嗨咯!各位小伙伴好呀!今天我们来学习
MySQL
数据库新的一个章节就是
函数
了,
函数
在整个
MySQL
数据库中是非常重要的,比...
赞
踩
article
MySQL
bin
log
、
redo
log
,请管管你家
buffer
_
mysql
的
log
buffer
...
以前聊过
bin
log
和
redo
log
,没有涉及
bin
log
buffer
和
redo
log
buffer
,主要是因为在...
赞
踩
article
InnoDB
之 Log
Buffer
...
参考资料:参考视频https://www.bilibili.com/video/BV1jA411A7qo?p=118学习...
赞
踩
article
MySQL~
Redo
刷盘
策略、LogBuffer缓存池和LogFile
日志
文件理解_每次
commit
...
文章目录
刷盘
策略不同
刷盘
策略演示
Redo
log
buffer
缓存区
Redo
log
file
日志
文件总结
刷盘
策略Inn...
赞
踩
article
MySQL
中的
Buffer
pool
,以及各种
buffer
_
buffer
pool
mysql
...
buffer
pool
是一块内存区域,是一种“降低磁盘访问机制”,
buffer
pool
缓存数据表和索引数据,吧磁盘上的...
赞
踩
article
MySQL
8.0
InnoDB
架构之 日志
缓冲区
(
Log
Buffer)和重做日志(
Redo
L...
【免责声明】文章仅供学习交流,观点代表个人,与任何公司无关。编辑|SQL和数据库技术(ID:SQLplusDB)_inn...
赞
踩
article
MySQL
之 InnoDB引擎
Log
Buffer
...
Log
Buffer
(日志缓冲区)是一块内存区域用来保存要写入磁盘上的日子文件的数据。
Log
Buffer
的大小由in...
赞
踩
article
MySQL
(八):
InnoDB
日志
缓冲区
(Log
Buffer
)...
1、简述当在
MySQL
中对
InnoDB
表进行更改时,这些更改首先存储在
InnoDB
日志
缓冲区
的内存中,然后写入通常称为重...
赞
踩
article
mysql
innodb
_
log
_
buffer
_
size
_
innodb
日志机制及优化...
一、
innodb
重做日志当更新数据时,
innodb
内部的操作流程大致是:将数据读入
innodb
buffer
po...
赞
踩
article
MySQL:
redo
log
buffer
...
什么是
redo
log
buffer
我们平时执行完增删改之后,要写入磁盘的
redo
log,其实应该是先进入
redo
l...
赞
踩
article
Spring
Boot
入门(07):
整合
MySQL
和
Druid
数据源
| 全网最详细保姆级教学...
在
Spring
Boot
中,
整合
MySQL
和
Druid
数据源
是不可或缺的一步。本文将为您介绍最详细的保姆级教学,从配置p...
赞
踩
article
如何使用
docker
pull
命令从
腾讯
云
镜像
加速
源拉取
镜像
,以提高
下载速度
?_
docker
pul...
首先,确保你的Docker
镜像
源已经启用了
腾讯
云
镜像
加速
功能。命令时,如果你的
镜像
源没有使用
腾讯
云
镜像
加速
,
下载速度
可能...
赞
踩
相关标签
mysql
oracle
数据库
MVCC
undo版本链
readview
图灵
架构
mvcc
java
sql
缓存
数据结构