gpt4 book ai didi

mysql - MySQL 事务提交应用查询还是结果?

转载 作者:行者123 更新时间:2023-11-30 22:31:00 30 4
gpt4 key购买 nike

如果我启动一个事务,运行一些查询,然后提交它,提交是通过应用查询结果还是查询本身来工作?

例如,如果我的事务包含insert into b select x from a,并且在我运行此查询之后但在提交事务之前 x 发生了变化,结果将是 x 的值它是在事务期间,还是提交时 x 的值?

最佳答案

答案: x 将具有读取时间戳时的值。

更具体地说,提交是事务的一部分,因此您不能将其称为事务期间或提交时,它们不是两个单独的操作。

澄清:使用事务将确保事务边界内的所有操作在外界看来都是原子

原子操作意味着:

  • 操作要么成功,要么失败。中间不能有中间步骤。特别是,如果事务开始并发生故障(如断电),它需要回滚到目前为止所做的所有更改。

  • 这也意味着外界应该将其视为单一操作。如果事务使用某些值,则所有值都应从事务开始时的时间戳中获取。类似地,交易应该进行的所有更改都将在交易结束的时间戳之后立即对外界可用。这是通过事务中涉及的适当形式的锁定(独占、读取或写入)表来实现的。

因此,为了更具体地说明您的问题,当在事务中调用 select x from a 时,表 a 被锁定,直到事务提交或回滚。你提到的场景,x 在我运行这个查询之后发生了变化(在事务提交/回滚之前),实际上是不可能的

关于mysql - MySQL 事务提交应用查询还是结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33915230/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com