热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MySQLBinlog中DDL语句对事务的影响分析

当MySQL的autocommit设置为1时,如果在一个事务中执行了DDL语句,那么该事务中从开始到执行DDL语句之前的所有DML操作将自动提交。随后的DML操作则需要在新的事务中进行。
在 MySQL 数据库中,当 `autocommit` 参数设置为 1(默认值),并且在一个显式事务中执行了数据定义语言(DDL)操作时,所有在此之前执行的数据操作语言(DML)命令会被自动提交。这意味着一旦遇到 DDL 语句,当前事务会立即结束,并且之后的任何 DML 操作都需要在一个新的事务上下文中执行。

下面是一个具体的示例来说明这一行为:

```sql
-- 查看表 t2 的初始状态
SELECT * FROM t2;
+----+--------+-------+
| id | course | score |
+----+--------+-------+
| 1 | math | 0 |
| 2 | ch | 0 |
| 3 | eng | 0 |
+----+--------+-------+

-- 开始一个事务
BEGIN;

-- 删除 id 为 2 的记录
DELETE FROM t2 WHERE id = 2;

-- 执行 DDL 操作,删除 score 列
ALTER TABLE t2 DROP COLUMN score;

-- 继续删除 id 为 3 和 1 的记录
DELETE FROM t2 WHERE id = 3;
DELETE FROM t2 WHERE id = 1;

-- 回滚事务
ROLLBACK;

-- 再次查询表 t2 的内容
SELECT * FROM t2;
Empty set
```

从上述示例中可以看出,尽管最后执行了回滚操作,但 `id=2` 的记录已经被永久删除,因为在这条记录被删除后,紧接着执行了一个 DDL 语句,导致之前的 DML 操作被提交。而后续的删除操作则因为没有在同一个事务中,所以被回滚。

通过使用 `mysqlbinlog` 工具查看二进制日志文件,可以进一步验证这些操作的具体执行情况。例如,从二进制日志中可以看到,`DELETE FROM t2 WHERE id = 2` 被作为一个单独的事务提交,而后续的删除操作分别作为独立的事务处理。这表明 DDL 语句确实触发了事务的自动提交机制。
推荐阅读
  • 本文详细介绍了如何通过RPM包在Linux系统(如CentOS)上安装MySQL 5.6。涵盖了检查现有安装、下载和安装RPM包、配置MySQL以及设置远程访问和开机自启动等步骤。 ... [详细]
  • 本文详细介绍如何利用已搭建的LAMP(Linux、Apache、MySQL、PHP)环境,快速创建一个基于WordPress的内容管理系统(CMS)。WordPress是一款流行的开源博客平台,适用于个人或小型团队使用。 ... [详细]
  • 优化局域网SSH连接延迟问题的解决方案
    本文介绍了解决局域网内SSH连接到服务器时出现长时间等待问题的方法。通过调整配置和优化网络设置,可以显著缩短SSH连接的时间。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 通过Web界面管理Linux日志的解决方案
    本指南介绍了一种利用rsyslog、MariaDB和LogAnalyzer搭建集中式日志管理平台的方法,使用户可以通过Web界面查看和分析Linux系统的日志记录。此方案不仅适用于服务器环境,还提供了详细的步骤来确保系统的稳定性和安全性。 ... [详细]
  • 本文详细记录了在基于Debian的Deepin 20操作系统上安装MySQL 5.7的具体步骤,包括软件包的选择、依赖项的处理及远程访问权限的配置。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • MQTT技术周报:硬件连接与协议解析
    本周开发笔记重点介绍了在新项目中使用MQTT协议进行硬件连接的技术细节,涵盖其特性、原理及实现步骤。 ... [详细]
  • 本文详细介绍如何使用Samba软件配置CIFS文件共享服务,涵盖安装、配置、权限管理及多用户挂载等关键步骤。通过具体示例和命令行操作,帮助读者快速搭建并优化Samba服务器。 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • 本文介绍如何通过创建替代插入触发器,使对视图的插入操作能够正确更新相关的基本表。涉及的表包括:飞机(Aircraft)、员工(Employee)和认证(Certification)。 ... [详细]
  • 华为USG基于源地址的多出口策略路由配置
    网络拓扑如下:组网情况:企业用户主要有技术部(VLAN10)和行政部(VLAN20),通过汇聚交换机连接到USG。企业分别通过两个不同运营商(ISP1和ISP2)连接到 ... [详细]
  • 解决FCKeditor应用主题后上传问题及优化配置
    本文介绍了在Freetextbox收费后选择FCKeditor作为替代方案时遇到的上传问题及其解决方案。通过调整配置文件和调试工具,最终解决了上传失败的问题,并对相关配置进行了优化。 ... [详细]
  • 本文详细介绍了如何在 MySQL 中授予和撤销用户权限。包括创建用户、赋予不同级别的权限(如表级、数据库级、服务器级)、使权限生效、查看用户权限以及撤销权限的方法。此外,还提供了常见错误及其解决方法。 ... [详细]
author-avatar
手机用户2602916275
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有