我们正在使用分区视图(SQL Server 2008 Standard,分区表不是一个选项),如果我们考虑分区消除目标,它们可以正常工作:如果我们在分区视图中运行查询,在我们选择的列上指定一个子句作为discriminator,我们从实际的执行计划中可以看出,只有与指定的 discriminator 值相关的表被命中。但是,如果有并发的 INSERT 或 UPDATE 语句,即使这些语句没有命中鉴别器选择的表,我们也会遇到锁定问题。
分析锁我可以看到,即使执行计划显示只读取了正确的一张表,IS 锁仍然会放在分区视图中的所有表上,当然如果其他人已经放了 X 锁即使根本没有读取带有 X 的表,在分区视图上运行的整个查询之一也会被锁定。
这是一般分区视图的限制,还是有办法在坚持分区视图的同时避免它?我们按照 SQL Server 联机丛书的建议创建了分区视图和相关内容。
谢谢
黄蜂