我有一个 SQL Server 2012 表,它在任何时候都将包含 250 万行。项目总是被写入表中,但表中最旧的行在维护窗口期间每天结束时会被截断。
我有基于 .NET 的报告仪表板,这些仪表板通常会针对汇总表进行报告,尽管有时它确实需要从该表中获取几行——利用索引集。
当它确实针对此表进行报告时,它可以防止将新行写入此表长达 1 分钟,这对产品非常不利。
由于它是一个报告平台,并且此表中的行永远不会更新(仅插入 - 考虑 Twitter 流,但对于不同类型的数据),并不总是需要等待导致插入行的事务中的间隙进入这张表。
在选择要报告的数据时,在事务中使用 SNAPSHOT 隔离级别来选择数据还是 NOLOCK/READ UNCOMITTED 是否明智?围绕 select 语句创建 SQLTransaction 会导致插入仍然阻塞吗?目前我没有将我的 SQLCommand 实例包装在事务中,尽管我意识到这仍然会导致锁定。
理想情况下,我希望写入永远不会被阻止,并且仪表板尽可能响应。我最好的戏是什么?