indexing - Oracle 表在过程执行期间被锁定以进行插入,但允许更新
问题描述
我们有一个对多个表中的多条记录进行操作的过程,在某些情况下,该过程需要在名为 的表中插入TAX
,当此插入发生时,另一个名为的表PAYMENT
被锁定以进行插入,但不能进行更新。
因此,如果另一个事务尝试插入PAYMENT
它,则等待该过程完成,但尝试更新的事务PAYMENT
不会等待。
该TAX
表有两个外键PAYMENT
,一个是可空的,另一个是强制性的,并且TAX
表上有两个索引,一个在FK_PAY
(强制性的)和一个在(FK_PAY_SETTLEMENT, ID)
(具有强制性ID
列的可选)上。
我能做些什么来防止这个PAYMENT
表锁定,因为这个表是高并发插入的目标。
我要提一下,PAYMENT
表是在 的散列上分区的id
,并TAX
通过引用在FK_PAY
(强制引用)上进行分区。
解决方案
外键引用(在 Tax 表中)阻止了 Payment 表上的 Insert 操作。
更新操作(在支付表中)的工作原理是更新表中的旧数据(没有主键或任何其他键冲突)。
推荐阅读
- android - Acces a complex json object in Ionic 3 and bind to view
- c# - C# Slotmachine 获胜算法
- php - 在 Woocommerce 中的条件自定义结帐字段上显示现有值
- ios - 错误 ITMS-90715:“最低操作系统太低
- c# - 是否可以观察布尔值直到变化?(C#)
- solr - Solr 在父文档和子文档中搜索和评分
- objective-c - 如何关闭全屏 UIImageView?
- android - 从应用程序 android 打开当前正在进行的呼叫
- mqtt - 如何在 mqtt mosquitto 中发布从订阅经纪人获取的数据?
- c# - 修复链接中的 PDF 可访问性问题(注释缺少替代描述)