网控对象.常见问题.高并发下的网控运行逻辑
【场景】高并发场景下网控控制不准,如api同时对同一个单据 保存,同时调用审核
![image.webp](/download/01000dbe45585e2e48688c564ea566ae31bd.webp)
【原理】
(0)数据库的分布式锁大部分都是通过唯一约束实现
(1)星空的网控实现逻辑
a 读取网控表中是否存在该单据的关联网控(如审核网控还会和修改网控互斥)
b 当网控不存在时,向网控表插入网控记录
存在场景并发非常高的情况下,同时读取没有网控,且同时插入,导致两个操作都能申请到网控,并发修改了单据数据。
![image.webp](/download/01000925a9f4a6c84e88bb00b498358dce4b.webp)
【临时方案】
给网控表增加网控对象和单据内码的唯一约束,严格控制同一个单据同一个操作的并发逻辑
![image.webp](/download/010043caab2d60e74ab0a8c6cfe32ead7b65.webp)
```sql
IF NOT EXISTS (SELECT 1 FROM (SELECT sysobjects.NAME AS TABLE_NAME, sysindexes.NAME AS INDEX_NAME FROM sysobjects INNER JOIN sysindexes ON sysindexes.ID = sysobjects.ID) AS KSQL_INDEXES WHERE INDEX_NAME = 'UNIQUE_BAS_NETWORKCTRLRECORDS')
BEGIN
ALTER TABLE T_BAS_NETWORKCTRLRECORDS ADD CONSTRAINT UNIQUE_BAS_NETWORKCTRLRECORDS UNIQUE (FNETCTRLID, FINTERID)
END;
```
说明:由于网控的设计,通过此方案仅限制网控对象同一个的操作,也就是 FNETCTRLID (比如并发对同一个单据审核、反审核)
【效果】
由于出现了唯一约束异常,证明符合本文论证观点,且能够准确强控单据的同一个操作并发
![image.webp](/download/0100669b454bdcdf41a5a2974561d9ea243b.webp)
网控对象.常见问题.高并发下的网控运行逻辑
【场景】高并发场景下网控控制不准,如api同时对同一个单据 保存,同时调用审核![image.webp](/download/01000dbe45585e2e48688c564ea566a...
点击下载文档
上一篇:成本来源下一篇:业务流程--在插件中判断本单是否有来源数据
本文2024-09-16 18:12:28发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-20649.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章