gpt4 book ai didi

mysql - 即使没有明确使用事务,ACID 投诉 SQL 数据库是否仍然是 "ACID"?

转载 作者:行者123 更新时间:2023-11-29 01:50:05 28 4
gpt4 key购买 nike

假设我使用的是标准 SQL 引擎(例如 Postgres、MySQL...)。

如果我没有明确说“开始交易”和“结束交易”进行查询时

(如“插入学生......”),

  1. 会“安全”吗?

  2. 我会失去 RDBMS 实现的“ACID”属性吗?如果有很多请求,我的申请现在会不会不一致?

  3. RDBMS 是否仅在我使用事务时保证 ACID?

  4. 我在我的应用程序代码中进行的每个写入查询都必须是事务才能在我的应用程序中享受 ACID 属性吗?

最佳答案

您询问的行为确实因数据库而异。

对于 PostgreSQL 和 Microsoft SQL Server,如果您不使用“开始事务”...“结束事务”,那么每个语句都将被视为一个事务。这种行为通常被描述为“自动提交”,您可以在 MySQL 中将其作为一个选项打开。

事务应该根据您的应用程序的需要来定义。典型的情况是,如果你从我这里买东西,那么这笔钱必须作为一笔交易离开你的账户并到达我的账户。要么两个 Action 都成功,要么都失败。所以在这种情况下,即使有自动提交,你也必须在这两个语句周围加上“开始交易”...“结束交易”,否则钱可能会离开你的账户而不会到达我的账户,我们都会不高兴。

事实上,银行交易比这更复杂;这是一个简单的例子。

许多应用程序需要多个 SQL 语句作为一个单元发生,而对于这些,您始终需要事务。

行为的多样性意味着您必须检查文档。一些主要的数据库(不是上面提到的三个)在各种事件上启动一个新的事务,例如上一个事务的结束,或者 DDL 语句(在某些情况下创建、删除、更改和截断)。如果您需要事务,而大多数现实世界的应用程序都需要,那么您必须检查您正在使用的数据库的文档,并进行大量的多用户测试。

还有更长的解释here并且您选择使用的数据库的数据库文档是权威来源。

关于mysql - 即使没有明确使用事务,ACID 投诉 SQL 数据库是否仍然是 "ACID"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48048524/

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