【问题标题】:Using multiple DDLs within a transaction in YugabyteDB在 YugabyteDB 的一个事务中使用多个 DDL
【发布时间】:2021-05-21 16:22:39
【问题描述】:

有谁知道我不能在同一事务中交替截断和插入的原因(特定于 yugabyte 或其他)?

这些步骤:

  1. 截断表格。
  2. 在该表中插入一行。
  3. 再次截断。
  4. 在表格中插入另一行。

在最后一步导致此错误:

ERROR: Operation failed. Try again.: Unknown transaction, could be recently aborted: e415ae05-0d46-42f5-b18d-f27b344b5642 (SQLSTATE 40001)

[免责声明]:这个问题最初是在 YugabyteDB 社区 Slack 频道上提出的。

【问题讨论】:

    标签: yugabyte-db


    【解决方案1】:

    在 YugabyteDB 中,目前“截断”不是事务性的。建议避免使用:

    a) 在多步事务中截断

    b) 在同一张表上与我们的读/写操作同时运行截断。

    据我所知,其他分布式 SQL 数据库也有:

    a) 不支持截断(如 Google Cloud Spanner)。见Does Cloud Spanner support a TRUNCATE TABLE command?

    或,

    b) 它们支持截断,但不支持事务方式。

    我们确实计划在未来限制此限制。近期可能

    delete from T;

    可以作为一种解决方法;这比使用 truncate 要重一些,但会是事务性的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-22
      相关资源
      最近更新 更多