• 0
  • 0
分享

Q #1) MySQL 事务是原子的吗?

答:是的,事务是通过概念在 MySQL 中实现原子性的。

atomic 的简单含义是——ALL 或 NONE 和 MySQL 事务完全支持这一点。在这里,如果没有错误,那么所有的语句都会被执行。但是,如果出现任何差异或错误,则不会执行事务中的任何语句。

Q #2) 如何回滚 MySQL 事务?

答:事务可以提交或回滚/恢复。要恢复事务的更改,您只需在执行 COMMIT 之前运行 ROLLBACK 命令。

例如,参考下面的事务,我们使用 ROLLBACK 来恢复事务期间所做的更改。

START TRANSACTION; --statement1
UPDATE bankaccounts SET funds=funds-100 WHERE accountno='ACC1'; --statement2
UPDATE bankaccounts SET funds=funds+100 WHERE accountno='ACC2'; --statement3
ROLLBACK; --statement4

Q #3) 如何修复 MySQL 中事务的锁等待超时超时?

答:发生此错误的原因有两个。这些是:

等待事务完成时锁定超时已过期/已过。

该事务正在等待/依赖于另一个事务以获取对表的访问权。

使用名为“innodb_lock_wait_timeout”的环境变量配置超时

此变量的默认值为 50 秒。如果您预计交易花费的时间比这更长,那么这个值可以根据要求增加或减少。这可以防止用户收到“超过锁定等待超时错误”。

要获取此变量的当前值,请执行以下命令:

显示变量,如“innodb_lock_wait_timeout”;

并且要设置/更新此变量的值,您可以使用:

SET innodb_lock_wait_timeout=100;

Q #4) MySQL 是否支持嵌套事务?

答:不可以,MySQL 事务不能嵌套。这是因为每当您启动事务时,它都会隐式提交到本地磁盘(然后在最终提交发生时最终写入磁盘)。

想象一下在嵌套事务中使用同一个表,那么内部事务为已经是外部事务一部分的表获取锁将是不确定的。

Q #5) 什么是 XA 交易?

回答: XA 事务是分布式事务,即数据库系统是分布式的(并且本质上由不同的主机表示)

XA 事务遵循 2 阶段提交协议 -

在第一阶段,事务管理器获取事务中所有请求资源的锁。

在第二阶段,事务管理器根据事务语句的结果提交或回滚。

Q #6) DDL 语句可以回滚吗?

答:有些语句不能回滚,比如 DDL(数据定义语言)语句。例如,创建表、更改表、删除字段或表等。如果在事务中使用这些语句并且需要回滚,则这些语句将从列表中排除。

结论

在本教程中,我们了解了 MySQL 中事务的基础知识。我们还了解了 COMMIT 和 ROLLBACK 命令,并使用它们的用法验证了它们。

事务是跨应用程序非常频繁使用的数据库功能,其中需要保留事务属性,即 ACID – 原子性、一致性、隔离性和持久性。

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   埃隆-马斯克(Elon Musk)旗下的社交网络 X 今天对其 API 的定价和限制进行了调整,同时还宣布了具有折扣价的年度计划。该公司将基本 API 层级的价格从 100 美元提高到 200 美元,并表示将为该订阅计划引入更高的限制和新的端点。  在 X 的开发人员社区门户网站上发布的一篇文章中,该公司指出,通过此 API 的读取次数将从 10000 次增加到 15000 次,开发人员还将获得新的端点,如 reposts_of_me 和社区搜索。  但是,在API比较页面和计划购买页面上,API 限制与以前相同。 这可能是一个错误,该公司可能将对该页面进行编辑。  X Developer...
            0 0 113
            分享
          •   Web测试中,浏览器作为必须的结果呈现手段,是每个测试工程师都会使用的。但是在测试中,启用浏览器进行调试,或者观察浏览器信息,却不是每个测试工程师都会注意或者是会无意间疏漏的方面。  随着越来越多的应用内容通过浏览器界面进行呈现,大量的前后端交互信息也在浏览器内体现,很多测试工程师早期在开始接触浏览器页面信息的时候,是从代码检查入手的,逐渐了解HTML代码在浏览器中配合不同属性代码,呈现不同的显示效果。  而又随着动态渲染以及新的前端框架技术的广泛应用,浏览器调试信息包含越来越多的内容,逐渐地,浏览器调试信息也成为测试工作中需要覆盖的一个方面,而在实践过程当中,浏览器调试信息查看和验证可以...
            0 0 684
            分享
          •   一、为什么要有接口文档?  没有接口文档的接口测试都是在抓瞎~前面的接口测试重点讲了协议,也讲了fiddler模拟接口请求,估计大部分还是不太懂怎么下手测试。这里小编专门拿出接口文档来做接口测试参考(估计很多测试小伙伴没见过接口文档)。  举个栗子:前端开发和后端开发口头商量:“成功返回0,失败返回1”。结果最后开发出来,测试MM发现,后端成功返回1,失败返回0。于是两个开发开始撕逼大战,谁都不承认自己的错了。谁都不愿低头去认错,因为空口无凭啊,当初拍脑袋商量的事情,过两天就忘了。为了避免在这种小事上扯皮,浪费不必要的时间,于是就有了接口文档。  白纸黑字写的清清楚楚,测试也有参考性。  ...
            0 0 3755
            分享
          •   据外媒 Variety 报道,影星斯嘉丽 · 约翰逊正对一家 AI 应用开发商提起法律诉讼,因为该公司的一则广告擅自使用了她的姓名、肖像乃至声音。  报道称,这家开发商为一款名为“Lisa AI:90s Yearbook&Avatar”的 App 制作了这段广告,展现了斯嘉丽?约翰逊在拍摄《黑寡妇》时的幕后花絮。广告中的斯嘉丽说道:“大家好吗?我是斯嘉丽,请跟我走吧。”但随后,一个利用 AI 生成的声音“说”,“它能够制作的不仅是头像,你还可以利用 AI 创作视频。”,其音色与斯嘉丽·约翰逊本人的相似。  在广告的最下方,开发商添加了“这段影像由 Lisa AI 制作,与当事人无关...
            0 0 873
            分享
          • 序今天先聊聊如何搭建自动化测试框架,主要会聊聊一些思路上的东西,从一个最简单的demo到把一个框架该有的组件都搭建好。本文主要以web自动化为例子,使用的语言是js。一、什么是自动化测试框架在了解什么是自动化测试框架之前,先了解一下什么叫框架?框架是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架。前者是从应用方面,而后者是从目的方面给出的定义。对于自动化测试框架大致包含以下的内容:自动化测试工具(selenium、puppeteer…)Runner(Jest…)日志(logger)报告(reportor)持续集成二、使用...
            0 3 3805
            分享
      • 51testing软件测试圈微信