![]() |
1
15
您可以使用锁使事情可序列化,但这会减少并发性。为什么不先尝试通用条件(“主要插入或主要选择”),然后安全处理“补救”措施?也就是说,“JFDI”模式… 预计大部分插入物(球形公园70-80%+): 试着插入。如果失败,则该行已被创建。无需担心并发性,因为Try/Catch为您处理重复项。
主要选择: 类似,但先尝试获取数据。无数据=需要插入。同样,如果两个并发调用试图插入,因为它们都发现行缺少try/catch句柄。
第二个看起来是重复的,但它是高度并发的。锁也可以实现相同的效果,但代价是牺牲并发性… 编辑: 为什么? 不 使用合并… 如果使用output子句,它将只返回更新的内容。所以您需要一个虚拟更新来为output子句生成插入的表。如果您必须使用许多调用(如op所暗示的那样)进行虚拟更新,那么这将是大量的日志写入操作。 只是 以便能够使用合并。 |
![]() |
2
1
--请确保将rowvalue和rowid上的非聚集唯一索引作为聚集索引。
|
![]() |
3
0
和往常一样,GBN的回答是正确的,并最终引导我找到我需要的地方。然而,我发现了一个特殊的边缘案件,他的方法没有涵盖。那是一个
为了弥补这个不足,我修改了他的代码如下
希望这能帮助别人! |