我们正在开发一个Web应用程序,它允许使用用户定义的模式存储对象树。 EAV模型用于在SQL Server中实现此方案。它导致单个对象存储在恒定数量的表中(即"对象表","值表","实体表","属性表"依此类推)。我们的工作量假设从不同的数据源(Excel和一堆专有格式)定期导入对象树,这可能非常大。为了确保进口树木的合规性(请记住它的EAV),我们在一次大型交易中进行。用户通常也会删除此类导入的结果,这可能会占用大量资源。
这些插入和删除会在EAV表上产生大量锁定,从而导致最终锁定升级(达到升级阈值后)。此事务专门锁定EAV表,使用户甚至无法读取数据,从用户的角度来看,事务中不涉及事务(事实上所有数据)。
我只想到两种方法来缓解这个问题
任何人都可以告诉我是否有其他选项让大型INSERT / DELETE不会阻止整个表格,或者可能是我出错了?