

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

# 管理并发写入操作
<a name="c_Concurrent_writes"></a>

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

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

**注意**  
Amazon Redshift 支持默认的*自动提交*行为，其中，每个单独运行的 SQL 命令都将分别提交。如果您在某个事务数据块中包含一组命令（由 [BEGIN](r_BEGIN.md) 和 [END](r_END.md) 语句定义），则该数据块将作为一个事务提交，以便您在必要时对其进行回滚。此行为的例外是 TRUNCATE 和 VACUUM 命令，这些命令可自动提交当前事务中所做的所有待定更改。  
某些 SQL 客户端会自动发出 BEGIN 和 COMMIT 命令，因此客户端控制着是一组语句作为一个事务运行，还是每个单独的语句作为自己的事务运行。检查您正在使用的界面的文档。例如，使用 Amazon Redshift JDBC 驱动程序时，具有包含多个（分号分隔）SQL 命令的查询字符串的 JDBC `PreparedStatement` 将所有语句作为单个事务运行。相比之下，如果您使用 SQL Workbench/J 并设置 AUTO COMMIT ON，则如果您运行多个语句，每个语句都会作为自己的事务运行。

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

**Topics**
+ [Amazon Redshift 中的隔离级别](c_serial_isolation.md)
+ [写入和读/写操作](c_write_readwrite.md)
+ [并发写入示例](r_Serializable_isolation_example.md)
+ [可序列化隔离错误排查](c_serial_isolation-serializable-isolation-troubleshooting.md)