
MySQL
文章平均质量分 92
飞行模式、
这个作者很懒,什么都没留下…
展开
-
MySQL-锁
next-key lock 是包含间隙锁+记录锁的,如果一个事务获取了 X 型的 next-key lock,那么另外一个事务在获取相同范围的 X 型的 next-key lock 时,是会被阻塞的。当一个事务对一条记录加了 X 型记录锁后,其他事务既不可以对该记录加 S 型记录锁(S 型与 X 锁不兼容),也不可以对该记录加 X 型记录锁(X 型与 X 锁不兼容)。虽然相同范围的间隙锁是多个事务相互兼容的,但对于记录锁,我们是要考虑 X 型与 S 型关系,X 型的记录锁与 X 型的记录锁是冲突的。原创 2024-10-23 16:11:52 · 848 阅读 · 1 评论 -
MySQL-事务
MVCC多版本并发控制,作用就是对不同事务隔离级别生成不同的ReadView,来解决并发带来的事务问题.事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。事务操作前和操作后,数据满足完整性约束,数据库保持一致性状态。对未提交的事务中的数据进行修改, 事务最终提交,导致写失效.原子性 : 事务执行过程中,要么全部成功,要么全部失败。在一个事务内多次读取同一个数据,数据值不同.多个事务同时使用相同的数据时,不会相互干扰。读取未提交事务中的数据,就是脏数据.原创 2024-10-23 16:10:53 · 681 阅读 · 0 评论 -
MySQL-日志
redolog是物理日志,记录了某个数据页做了什么修改.事务提交,先将redolog持久化到磁盘,可以不需要等到缓存在BufferPool里的脏数据持久化到磁盘.当系统崩溃的时候,虽然脏数据页没有变化,但是redolog已经持久化了,MySQL重启后就会根据redoLog将数据恢复到最新状态.原创 2024-10-23 16:09:58 · 378 阅读 · 0 评论 -
BufferPool
注意: 我们写SQL时对应表 + 行,在MySQL内部是表空间 + 数据页。当我们操作增删改数据时,首先通过 “表空间号 + 数据页号” 作为key 去数据页缓存哈希表查一下,如果有说明已经缓存了,如果没有就读取数据页。读取数据页时:从free链表找到一个空闲的缓存页,从磁盘读取数据页到缓存页,写入描述数据,从free链表移除这个描述数据块。原创 2024-10-23 16:08:14 · 958 阅读 · 0 评论 -
MySQL-索引
索引是用来帮助存储引擎快速检索数据的一种数据结构;索引可以被称为数据的目录。在InnoDB中,数据是通过聚簇索引存储的,其他字段构成的索引是非聚簇索引存储的是主键的值。在MyISAM中,是非聚簇索引存储数据的地址,进而检索数据。Count(*)=Count(1)<Count(主键)<Count(字段)原创 2024-10-23 16:09:06 · 560 阅读 · 0 评论