mysql的count知识(MySQL中MTR的概念)
mysql的count知识
MySQL中MTR的概念MTR全称是Mini-Transaction,顾名思义,可以理解为"最小的事务",MySQL中把对底层页面的一次原子访问的过程称之为一个Mini-Transaction,这里的原子操作,指的是要么全部成功,要么全部失败,不存在中间状态。
MTR主要是被用在写undo log和redo log的场景下的。例如,我们要向一个B+树索引中插入一条记录,此时要么插入成功,要么插入失败,这个过程就可以称为一个MTR过程,这个过程中会产生一组redo log日志,这组日志在做MySQL的崩溃恢复的时候,是一个不可分割的整体。
假如我们有一个事务,事务中包含3条语句,那么MTR的概念图如下:
Mini-Transaction一般遵循三条原则:
- 1、the fix rules
- 2、WAL
- 3、force-log-at-commit
这里我们解释下这三条原则:
1、the fix rules
解释第一条规则之前,我们有必要了解下MySQL中的latch的概念,在MySQL中,latch是一种轻量级的锁,与lock不同,它锁定的时间特别短,在innodb中,latch又可以分为mutex(互斥量)和rwlock(读写锁)2种,它的目的在于保证并发线程操作临界资源的正确性。
理解了latch的概念,我们看看the fix rule规则:
修改一个数据页,需要获得这个数据页的x-latch;
访问一个页是需要获得s-latch或者x-latch;
持有该页的latch直到修改或者访问该页的操作完成才释放
2、WAL
WAL技术想必大家比较熟悉,它是Innodb存储引擎之所以支持崩溃恢复的根本,也就是持久化一个数据页之前,需要将内存中响应的日志页先持久化
3、force-log-at-commit
这条原则比较重要,它是指在事务提交的时候,其产生的所有MTR日志都要刷到持久化设备中,从而保证崩溃恢复的逻辑。
之所以介绍MTR,是为了后续介绍MySQL8.0的redo log 优化做准备,在MySQL5.7中,mtr保证了事务内部操作的原子性。当用户进行操作的时候,会更新数据页,同时写redo log,mtr是redo log的载体,存在每个连接会话的私有变量中。当mtr提交时,会将本地redo log拷贝到全局的log_buffer中,为了保证redo log的有序性,需要加锁来访问log_buffer,这把锁就是上面提到的mutex,在这个锁保护下,除了要将本地日志拷贝到全局buffer,还需要将数据页加入了flush_list,供后台线程刷脏,辅助数据库检查点持续往前推进,所以这个锁在旧版本的MySQL中竞争非常激烈。MySQL8.0将这个问题进行了优化,后面的文章中将着重分析。
以上就是MySQL中MTR的概念的详细内容,更多关于MySQL MTR的资料请关注开心学习网其它相关文章!
原文链接:https://cloud.tencent.com/developer/article/1668083
- navicatformysql怎么激活(一文读懂navicat for mysql基础知识)
- thinkphp伪静态实例(thinkPHP+mysql+ajax实现的仿百度一下即时搜索效果详解)
- 了解mysql数据自动备份(MySQL数据备份方法的选择与思考)
- php7用什么替代mysql(mysqli扩展无法在PHP7下升级问题的解决)
- mysql查询条件的优化(MySQL查询优化之查询慢原因和解决技巧)
- 怎么用docker中的mysql连接数据库(解决Docker之mysql容器数据库更改不生效的问题)
- 终于有人将mysql 索引讲清楚了(MySQL 索引的一些细节分享)
- mysql 使用小结(Mysql Online DDL的使用详解)
- mysql快速添加百万条记录(Mysql快速插入千万条数据的实战教程)
- mysql缓冲池(详解MySQL中的缓冲池buffer pool)
- mysql主从复制原理详解(详解MySQL kill 指令的执行原理)
- mysql主从复制时突然来了一批数据(MySQL主从复制断开的常用修复方法)
- mysql的limit的分页使用(获取 MySQL innodb B+tree 的高度的方法)
- 如何看idea连接mysql数据库(IDEA 链接Mysql数据库并执行查询操作的完整代码)
- mysql查看执行计划
- mysql建立索引的主要目的(浅谈Mysql哪些字段适合建立索引)
- 0 1 岁婴儿最强作息指南,照着做养出天使宝宝(01岁婴儿最强作息指南)
- 沪上这16所高校 萌新 礼包开箱 哪一款让你心动(沪上这16所高校萌新)
- 她救了被绑架的他,而这一切竟是一场阴谋...(她救了被绑架的他)
- 冬季养殖这6种阴生植物,方便又好养,你家有么(冬季养殖这6种阴生植物)
- 阴生植物为什么不怕照不到阳光(阴生植物为什么不怕照不到阳光)
- 阴生环境 耐阴地被植物,你知道哪些(阴生环境耐阴地被植物)
热门推荐
- django中的limit用法(如何在Django中添加没有微秒的 DateTimeField 属性详解)
- 正则表达式中/i,/g,/ig,/gi,/m的含义
- asp服务器记录怎么发布(asp服务器如何搭建)
- nginx流媒体服务搭建与应用(用nginx+FastDFS一步步搭建文件管理系统)
- python协程详解(为什么你还不懂得怎么使用Python协程)
- idea中tomcat快速部署(IDEA编辑器整合Apache Tomcat的详细教程)
- cent os7.0 安装mysql(mysql8.0.23 linuxcentos7安装完整超详细教程)
- 静态web服务器nginx(WEB服务器该选择 Apache 还是 Nginx?)
- dedecms手机独立域名(DedeCMS Wap.php 绑定域名的解决办法)
- C#中yield
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9