c - 多个进程访问单个表进行插入

标签 c oracle

我有一个表(PROCESSED_RECS),它被多个进程(大约 60 个)访问。他们都在这个文件中插入了rec。

目的:

  • 进程采用 key 的输入文件进行处理
  • 它们检查 key 是否已被处理 - 即在表 PROCESSED_RECS 中
  • 要进行检查,进程只需触发 INSERT 查询
  • 如果他们在 Oracle 中收到重复错误,他们就会知道该错误已被处理。

但是我收到错误

ORA-00060: deadlock detected while waiting for resource

实现上述场景的最佳实践是什么?

我正在使用 PRO CC 语言

最佳答案

设置一个进程从文件中读取 key 并将其存储在队列 (AQ) 中。这 60 个进程可以安全地将 key 排入队列,并且不需要执行任何检查 key 是否已被处理。 两个进程不可能获得相同的 key 。如果某个进程失败,它将回滚,并且其他进程可以使用该 key 恢复。

一般最佳实践是,SQL 不太适合 DIY 队列实现。

关于c - 多个进程访问单个表进行插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31493669/

相关文章:

c - 在禁用优化的情况下进行编译时,为什么clang不使用内存目标x86指令?他们有效率吗?

sql - 如何用Oracle触发器通知JBoss

oracle - 简单的Oracle变量SQL分配

c++ - 使用 C++ 测试对原始数据类型同步锁的需求

c - 具有预定义一维数组的二维数组的动态输入

c - RHEL6 中线程的最大虚拟内存分配

c - 按回车键在多个显示记录格式之间切换

sql - Oracle 11g OFFSET FETCH 给出错误

oracle - 如何更改 Oracle XE 实例的 SID

sql - oracle - 根据非唯一字段的出现次数获取 1 或 0 条记录