管理并发写入操作 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

从 2025 年 11 月 1 日起,Amazon Redshift 将不再支持创建新的 Python UDF。如果您想要使用 Python UDF,请在该日期之前创建 UDF。现有的 Python UDF 将继续正常运行。有关更多信息,请参阅博客文章

管理并发写入操作

某些应用程序不仅需要并发查询和加载,还需要能同时对多个表或同一个表进行写入。在此环境中,并发 指的是重叠,而不是安排在完全相同的时间运行。如果两个事务中的第二个事务在第一个提交前开始,则将两个事务视为并发。并发操作可源自由同一用户或不同用户控制的不同会话。

Amazon Redshift 通过允许在以递增方式加载或修改表时对表进行读取操作,来支持这些类型的应用程序。查询仅查看数据的最新提交的版本或快照,而不是等待提交下一个版本。如果您希望特定查询等待来自另一个写入操作的提交,则必须相应地做出安排。

注意

Amazon Redshift 支持默认的自动提交行为,其中,每个单独运行的 SQL 命令都将分别提交。如果您在某个事务数据块中包含一组命令(由 BEGINEND 语句定义),则该数据块将作为一个事务提交,以便您在必要时对其进行回滚。此行为的例外是 TRUNCATE 和 VACUUM 命令,这些命令可自动提交当前事务中所做的所有待定更改。

某些 SQL 客户端会自动发出 BEGIN 和 COMMIT 命令,因此客户端控制着是一组语句作为一个事务运行,还是每个单独的语句作为自己的事务运行。检查您正在使用的界面的文档。例如,使用 Amazon Redshift JDBC 驱动程序时,具有包含多个(分号分隔)SQL 命令的查询字符串的 JDBC PreparedStatement 将所有语句作为单个事务运行。相比之下,如果您使用 SQL Workbench/J 并设置 AUTO COMMIT ON,则如果您运行多个语句,每个语句都会作为自己的事务运行。

以下主题介绍一些主要概念和使用案例,它们涉及事务、数据库快照、更新和并发行为。