mysql
文章平均质量分 62
Kieran_s
这个作者很懒,什么都没留下…
展开
-
MySQL MVCC机制解析
1、MVCC机制多版本并发控制机制,专门控制多个事物并发运行的时候,互相之间会如何影响。MVCC机制 = undo log多本本链条+ReadView机制1)ReadView:执行一个事务,会生成一个ReadView关键的四个字段m_ids:有哪些事务在MySQL里执行还没提交 min_trx_id:m_ids里最小的值 max_trx_id:mysql下一个要生成的事务id,最大的事务id creator_trx_id:现在事务的id假设原来数据库有一行数据,事务id是32,他原创 2021-08-26 15:51:49 · 233 阅读 · 0 评论 -
MySQL undo版本链解析
数据库的每条字段都有两个隐藏字段,一个是trx_id,一个是roll_pointer,trx_id是最近一次更新事务的id,roll_pointer指向更新这个事务之前生成的undo log。举例:假设有一个事务A(id=50),插入一条数据,此时这条数据的隐藏字段以及指向的undo log 如下图所示,插入的这条数据的值是值A,因为事务A的id是50,所以这条数据的txr_id就是50,roll_pointer指向一个空的undo log,因为在id=50之前是没有数据的。如果有一个事务B修.原创 2021-08-26 09:29:31 · 384 阅读 · 0 评论 -
事务的4个隔离级别
1、RU(read uncommitted):读未提交不允许发生脏写,可能发生脏读、不可重复读,幻读。两个事务不可能没提交的情况下更新同一行数据。2、RC(read committed):读已提交不允许发生脏写,脏读,可能发生不可重复读,幻读。事务没提交的情况下修改的值,绝对读不到。3、RR(rpeatable read):可重复读不允许发生脏写、脏读,不可能重复读,可能发生幻读。事务一单开始,多查询一个值,会一直读到同一个值。4、serializable:串行化不允许事务并发执原创 2021-08-25 15:28:11 · 466 阅读 · 0 评论 -
MySQL的脏写、脏读、不可重复读、幻读 解读
1、脏写两个事务没提交的状况下,都修改统一条数据,结果一个事务回滚了,把另外一个事务修改的值也撤销了,所谓脏写就是两个事务没提交状态下修改同一个值。示例:事务A和事务B同事在更新一条数据,事务A先把他更新为A值,事务B紧接着就把他更新为B值,如下图所示:事务A先更新数据值为A,事务B再更新数据值为B,此时事务A突然回滚,回滚为A之前的数据因为事务A回滚数据导致事务B的值也变回了A之前的数据2、脏读你修改了一条数据的值,还没有提交,另一个事务就读到了你修改的值,然后你回滚了,.原创 2021-08-25 15:03:58 · 2315 阅读 · 0 评论 -
MySQL的free、flush、LRU链表
1、各个链表的作用free链表:存放空的缓存页 flush链表:存放使用到的缓存页 LRU(least recently uesd)链表:存放所有缓存页,将缓存页的使用次数进行排序,当缓存页不够的时候,不常用的缓存也刷入磁盘,清理出的缓存页也供使用2、free链表的使用当数据库启动的时候,mysql会去操作系统申请一块内存空间用来做buffer pool,将磁盘中的数据页缓存在buffer pool中,也就是缓存页,这个时候,缓存页都是空的,因为还没有对数据库进行crud操作,这些缓存页会储存原创 2021-08-24 17:26:24 · 908 阅读 · 2 评论 -
mysql Buffer Pool内存结构
1、Buffer pool核心组件buffer pool是mysql的一个核心组件,数据的curd都是用到了它,视同配合了redo log,undo log,bin log,刷磁盘等机制的运行2、数据库的核心数据模型数据库的核心数据模型是表+字段+行的概念,也就是说数据库中有一个个的表,一个表有很多字段,并且有很多行数据,每行数据都有对应的字段值,例如:name = "Lucry"很多行数据在一个数据页中,当buffer pool从磁盘中缓存数据时,也是缓存的一个个数据页。这些数据页经原创 2021-08-24 16:08:42 · 234 阅读 · 0 评论 -
MySQL的binlog
1、biglog是什么 redo log属于InnoDB存储引擎特有的log,而binlog叫做归档日志,里面记录的是偏向于逻辑性的日志,类似“对users表中的id=10的一行数据做了更新操作,更新以后的值是什么”binlog不是InnoDB储存引擎特有的日志文件,是属于mysq server自己的日志文件2、提交事务写入binlog提交事务的时候会将redo log日志写入磁盘文件中,同时还会将这次更新对应的binlog日志写入到磁盘文件中。如图所示:从磁盘加载数据—>..原创 2021-08-24 15:43:56 · 205 阅读 · 0 评论 -
mysql的undo、redo日志
msql的存储引擎又分为多种,常见的有InnoDB、MyISAM、Memery,InnoDB最为常见1、InnoDB的重要内存结构:缓冲池(Buffer Pool)InnoDB存储引擎中有一个非常重要的放在内存里的组件,就是缓冲池(Buffer Pool),便于查询数据,如果内存缓冲池里有数据,可以直接冲缓冲池取数,不需要去查磁盘对数据进行修改的时候,会对此条数据加入独占锁,避免修改的时候其他人修改。例如:id=10,name=‘Lucky’2、undu日志文件:更新的数据写入un.原创 2021-08-24 15:17:02 · 1272 阅读 · 0 评论