首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
小熙
掘友等级
Java
莫愁前路无知己
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
4
文章 4
沸点 0
赞
4
返回
|
搜索文章
最新
热门
Mysql的索引分析(2)
首先呢,现在假设我们需要搜索一个id=30对应的一行数据。我们应该先去顶层索引页(89)里去找,然后通过二分查找就找到下级索引页。如下图: 其实索引树内部对于同一层级的索引页间是基于指针,双向链表连接。其实数据页和索引页都是连在一起的不知道大家发现没有。在最底层的索引页与数据页…
Mysql的索引分析(1)
mysql存储在物理磁盘上时每个数据页是通过双向链表连接,数据页里的数据行通过单向链表连接,并将安装数据行id从小到大排列。而数据页中有一个页目录中存储了主键id->具体数据行槽位的的对应关系。如下图: 假设你现在一个表里没几条数据也就存储了一个数据页,现在要通过主键进行查找数…
Mysql中的锁
在mysql中如果需要修改一行数据那么会先看有没有被加锁,如果没有自己会创建一个锁里面包含(事务id、等待状态)然后把锁跟着行数据关联起来。同时我们更新的数据必须把数据页加载到内存中所以这行需要更新的数据和关联的锁结构都是在内存里发生的。 这里的锁状态是2说明在等待,而事务A的…
Mysql事务分析(2)
在上一篇中我们说到了undo-log版本链条,接下来我们分析一下ReadView机制是怎么基于undo-log链条实现的。 对于readView而言就是让你开启事务的时候就会生成一个readView里面包含4个东西。 现在我们举例说明一下这个readview怎么使用。假设现在我…
Mysql事务分析(1)
数据库在事务并发执行的时候可能产生脏写、脏读、不可重复读、幻读几种问题。为了解决这些问题SQL标准中制定了几种隔离级别。注意一下这里并不是说的Mysql里的隔离级别,说得是SQL标准中怎么规定的事务隔离级别。 在read uncommitted 隔离级别下不会发生脏写的情况,因…
Mysql的UndoLog分析
在redolog分析中我们讲了事务提交后会写入redo日志到磁盘,这样就算mysql宕机或服务器断电也可以根据redolog加载出来,在buffer-pool的缓存页进行数据重做最终将修改后的数据刷到数据页上。今天我们要分析的是undolog,它的作用就算用来进行事务回滚的。假…
Mysql的RedoLog分析
前面我们说到了RedoLog也就是当需要去修改一个数据如: update User name="张三" where id=2 从物理结构上说,我们首先是将这行数据所在的表空间找到然后找到数据区最后找到对应的数据页。 总的来说一个表空间内有很多组数据区,一组数据区下有256个数据…
Mysql如何存储一条数据
在mysql内存组件bufferPool中我们分析了数据修改、查询的时候是如果进行的,为什么mysql要设计一个bufferPool。为什么不直接在磁盘上操作数据? 其实技术上是可以的,这样做会对磁盘进行随机读写必然导致性能极差,稍微并发高一些就没办法提供服务了。 我们在创建表…
Mysql内存组件Buffer-Pool分析(3)
其实mysql为什么设计预读机制只不过是优化性能嘛。现在假设你访问了顺序访问了1-56的数据页。那么mysql会觉得你还会访问第60个数据页。它当然会把后面一个数据区的数据页加载到buffer-pool中了。那这个时候你再访问第60个数据页的时候是不是就可以在缓冲区(buffe…
Mysql内存组件Buffer-Pool分析(2)
在上一篇中描述了数据页是如何加载进入buffer-pool中的,总的来说查询数据的时候怎么判断缓存页是否存在,怎么利用free链表进行缓存页加载。那么下面有一个问题我们数据加载进入了缓存页,对它进行了修改成为了“脏缓存页”。其实只要缓存页上的数据和我们磁盘文件中的数据页的数据不…
下一页
个人成就
文章被点赞
25
文章被阅读
4,898
掘力值
308
关注了
9
关注者
2
收藏集
0
关注标签
1
加入于
2020-07-30