mysql自动生成回滚语句_如何根据sql语句逆向生成回滚语句?
当启动Binlog后,事务会产生Binlog Event,这些Event被看做事务数据的一部分。因此要保证事务的Binlog Event和InnoDB引擎中的数据的一致性。所以带Binlog的CrashSafe要求MySQL宕机重启后能够保证:
- 所有已经提交的事务的数据仍然存在。
- 所有没有提交的事务的数据自动回滚。
- 所有已经提交了的事务的Binlog Event也仍然存在。
- 所有没有提交事务没有记录Binlog Event。
这些要求很好理解,如果重启后数据还在,但是Binlog Event没有了,就没办法复制到其他节点上了。如果重启后,数据没了,但是Binlog Event还在,那么不存在的数据就会被复制到其他节点上,从而导致主从的不一致。
为了保证带Binlog的CrashSafe,MySQL内部使用的两阶段提交(Two Phase Commit)。
2 - MySQL的Two Phase Commit(2PC)
在开启Binlog后,MySQL内部会自动将普通事务当做一个XA事务来处理:
- 自动为每个事务分配一个唯一的ID
- COMMIT会被自动的分成Prepare和Commit两个阶段。
- Binlog会被当做事务协调者(Transaction Coordinator),Binlog Event会被当做协调者日志。
想了解2PC,可以参考文档:【https://en.wikipedia.org/wiki/Two-phase_commit_protocol。】
- 分布式事务ID(XID)
使用2PC时,MySQL会自动的为每一个事务分配一个ID,叫XID。XID是唯一的&#
mysql自动生成回滚语句_如何根据sql语句逆向生成回滚语句?相关推荐
- mysql查询问题sql语句_询问一个SQL查询语句的有关问题,MYSQL的,来看看吧
询问一个SQL查询语句的问题,mysql的,来看看吧! 我的SQL语句如下 日中三个表数据量分别为 1700 13000 34 这样查询要40秒才会出来结果(我远程连的服务器MYSQL). 我表示压力 ...
- mysql注入如何读取本地文件_如何通过SQL注入获取服务器本地文件
写在前面的话 SQL注入可以称得上是最臭名昭著的安全漏洞了,而SQL注入漏洞也已经给整个网络世界造成了巨大的破坏.针对SQL漏洞,研究人员也已经开发出了多种不同的利用技术来实施攻击,包括非法访问存储在 ...
- java存储过程与sql语句_存储过程与SQL语句怎么选择
应用存储过程的优点: 1.具有更好的性能 存储过程是预编译的,只在创建时进行编译,以后每次执行存储过程都不需再重新编译, 而一般 SQL 语句每执行一次就编译一次,因此使用存储过程可以提高数据库执行速 ...
- java break语句_跟我学java编程—Java跳转语句—break语句
有时可能不知道循环将要执行的次数,终止循环的条件可在以后确定,所以需要提供一种机制在条件满足的时候跳出循环.有时候,我们需要根据条件跳过循环中的一些语句.Java语言提供了break和continue ...
- pdm生成mysql sql语句_如何用Powerdesigner的PDM生成数据库
展开全部 工具: Sybase PowerDesigner 15.1 Microsoft SQL Server 2005 第一步概要设计: 打开PowerDesigner软件,设计"概念数据 ...
- mysql自动添加多条数据_用一条mysql语句插入多条数据
这篇文章主要介绍了在mysql中使用一条sql语句插入多条数据,效率非常高,但是原理其实很简单,希望对大家有所帮助 假如有一个数据表A: id name title addtime 如果需要插入n条数 ...
- mysql中的级联删除的语句_级联删除sql语句-数据库级联删除语句-sql删除语句
SQl语句的级联删除问题 删除应该有顺序 1,删除link表 delete from ref,link where ref.link_code=link.link_code and link_id=? ...
- 查看mysql某人执行了什么语句_一条 SQL 语句是如何在 MySQL 中执行的
MySQL分为Server层和存储引擎层. Server层包括连接器.查询缓存.分析器.优化器.执行器等,涵盖MySQL的大多数核心功能,以及所有的内置函数(如时间.日期.数学和加密函数等),所有跨存 ...
- python创建数据库的sql语句_对python插入数据库和生成插入sql的示例讲解
如下所示: #-*- encoding:utf-8 -*- import csv import sys,os import pymysql def read_csv(filename): ''' 读取 ...
最新文章
- 苹果手机各种型号图片_洪湖苹果X尾插华强北档口诚信收购
- h5ai搭建自己的文件分享程序
- 通过QML定义对象类型
- .Net Core实现的文档数据库RavenDb
- C语言 | 函数执行成功时,return 1 还是return 0?
- 【报告分享】企鹅智家智慧社区解决方案2019.pdf(附下载链接)
- vue实现垂直无限滑动日历组件
- windows安装docker环境并配置镜像
- 调用百度语音合成API,Qt实现语音合成,Qt语音合成
- html用图片链接网址
- git+github+jenkins自动发布
- asp.net MVC三层结构代码生成器
- 数分下第4讲 (8.2节): 平面和直线
- 2016互联网金融安全峰会报名
- 服务器攻击后的善后工作
- 第57期:LPWAN技术之超窄带(UNB)浅析
- 金属所等在天然生物材料力学理论研究中取得进展
- 高效学习方法和工具推荐,让你事半功倍!
- linux下最简单多线程单文件socks5代理proxy服务器程序(仅一个c文件,带详细注解)
- 决策树算法python实现