# 如何处理并发提交数据冲突
Paimon采用乐观并发控制（OCC）机制处理并发写入。当多个作业同时向同一张Paimon表写入数据时，可能会遇到提交冲突。Paimon通过快照机制检测冲突，并在冲突发生时进行重试或报错。
并发提交冲突主要分为以下两类：
- 数据冲突：多个并发作业修改了同一分区或同一主键的数据，导致后提交的作业检测到数据变更冲突。
- 元数据冲突：多个并发作业同时提交Snapshot文件，后提交的作业发现Snapshot版本已被其他作业更新，导致元数据冲突。
#### 冲突处理策略
Paimon在检测到并发提交冲突后，会根据冲突类型采取不同的处理策略：
- 对于Append-Only表的并发Append操作，Paimon会自动重试提交，将多个Append的数据合并后重新提交。
- 对于主键表的并发写入，如果写入的是不同主键的数据，Paimon会自动重试并合并。如果写入的是相同主键的数据，后提交的作业会失败并报错。
- 对于Compaction与DML并发执行的场景，Paimon支持异步Compaction，Compaction不会阻塞DML操作，但可能存在短暂的资源竞争。
 
#### 建议
- 对同一分区执行并发DML操作时，建议在WHERE条件中指定分区条件以减少冲突范围。
- 对于高频并发写入场景，建议使用Bucket分区将数据均匀分布到不同的Bucket中，减少不同作业写入同一数据文件的概率。
- 合理设置sink.commit.max-retries参数，增加提交重试次数，提高并发写入的成功率。
 
