mysql-innodb-事务
写在最前
这是读书笔记,Mysql,innodb系列一共3篇。
ACID
- A:原子性,要么成功,要么失败
- C:一致性,事务将数据库从一种状态转换为另一种稳定状态,不违反约束条件
- I:隔离性,多个事务互不影响
- D:持久性
事务的隔离级别
隔离级别 | 说明 |
READ UNCOMMITTED | 未提交读,会造成脏读,违反持久性D |
READ COMMITTED | 读已提交数据, 会造成幻读 违反一致性C |
REPEATABLE READ | 可重复读,默认隔离级别 |
SERIALIZABLE | 不会使用mysql的mvcc机制,而是在每一个select请求下获得读锁,在每一个update操作下尝试获得写锁 |
SELECT@@global.tx_isolation查看全局事务隔离级别
事务的实现
Force Log at Commit机制
- 当事务提交时,必须先将该事务的所有日志写入到日志文件进行持久化,之后进行COMMIT操作完成。
- 日志写入日志文件时,日志缓冲先写入文件系统缓存,为了确保写入磁盘,需要调用一次fsync操作。
- 由于fsync的效率取决于磁盘的性能,因此磁盘的性能决定了事务提交的性能,也就是数据库的性能。
3种日志文件
redolog
概念
log buffer刷新策略
innodb_flush_log_at_trx_commit值 | 说明 |
0 | 提交时,不写入日志文件 |
1 | 默认值,提交时调用一次fsync操作 |
2 | 提交时写日志文件,不进行fsync操作 |
log buffer刷新到磁盘的规则
- 事务提交时
- log buffer已经有一半空间被使用
- log checkpoint时
innodb恢复时如何使用redolog
undolog
基本概念
- 存储在undo段中,位于共享表空间,逻辑日志
- 支持mvcc,支持回滚
- undolog 会生产redo log
格式
类型 | 说明 |
insert undo log | insert产生,事务本身可见,其他事务不可见,commit后直接删除 |
update undo log | delete,update产生,其他事务可见,commit后放入列表中,供purge操作 比insert undo log大 |
commit后
binlog
purge
delay=((length(history_list)- innodb_max_purge_lag)*10)-5
group commit
综述:5.7版本innodb开启binlog的commit过程
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
C# 数据操作系列 - 19 FreeSql 入坑介绍
C# 数据操作系列 - 19 FreeSql 入坑介绍 前言前几天FreeSql的作者向我推荐了FreeSql框架,想让我帮忙写个文章介绍一下。嗯,想不到我也能带个货了。哈哈,开个玩笑~看了下觉得设计的挺有意思的,所以就谢了这篇文章。 简单介绍一下,FreeSql 是NCC组织的沙盒级项目,是一款功能强大的 ORM 组件,支持 .NET Core、.NET Framework 和 Xamarin。目前 FreeSql 支持以下数据库:MySQL、PostgreSQL、SqlServer、Oracle、Sqlite、Odbc、微软 Access 以及国产数据库达梦。 也就是说也是一个由国内优秀开发者维护的优秀项目,初步看了下功能很齐全。小伙伴们有时间可以取瞅瞅。下图是我从它GitHub仓库里复制过来的。可以看见支持的功能还是相当多的。 关于NCC社区,是.net core的一个开源社区,也是国内最大的.net core开源社区 初步使用照例,没安装就没有调用。所以,在创建项目之后,安装一下吧: dotnet add package FreeSql然后创建一个IFreeSql对象: pub...
- 下一篇
风铃虫 2.0.0 发布,新增抓取深度限制
风铃虫是一款轻量级的高效爬虫工具,配置简单,方便二次开发,能抓取js渲染的网页,可以抓取任何数据,支持保存网页快照,智能防封杀,天然适合分布式。 本次更新是一个重大的版本更新,在本次更新过程中,对大量代码进行重构,提升了代码质量,并新增了许多新功能。在保证稳定性的同时,将默认使用正则表达式匹配改为使用关键词匹配,使用门槛进一步降低。另外还新增了去重接口,使用户能够根据需要实现自定义去重逻辑。与此同时,本次更新还增加了深度限制功能,可以根据用户的设置来限制抓取深度。 本次更新点如下 重新定义任务调度器,优化调度相关算法 剥离请求去重模块,能自定义去重逻辑 优化实例别名设置,实现全局别名依赖 修复基于内存实现的请求记录器中的严重漏洞 增加请求深度限制机制,允许设置抓取深度 优化规则构造器,增加构造规则 优化同步启动接口 增加无查询参数去重器 修改XPATH提取内核 优化构造规则,规则组织更合理和人性化 优化定义内容解析器 优化定义链接解析器 优化测试系列接口 优化内容匹配默认设置 增加链接过滤规则,支持多种方式过滤链接 修复处理相对路径时的逻辑错误
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- 设置Eclipse缩进为4个空格,增强代码规范
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Hadoop3单机部署,实现最简伪集群