我希望每秒在表格中制作近1000个插页。而且每天我只想查询所有插入的行一次。我想通过多线程和连接池来提高效率。但我想知道哪种级别的并发控制更适合我。 SQL-Server的选项列表位于MSDN Site。
谢谢。
答案 0 :(得分:2)
你可能正在咆哮错误的树。请查看使用row-versioning transaction isolation而不是为单个语句提供锁定提示。
我与之交谈的很多人通过使用READ COMMITTED SNAPSHOT取得了良好的效果 - 可以在数据库级别启用,无需更改代码。
我可以说SNAPSHOT过去一直很好用,但确实需要更改代码。
请注意,请确保您的tempdb吞吐量良好,因为行版本会显着增加tempdb的负载。
答案 1 :(得分:2)
对于插入,您应该可以使用默认隔离级别。你有聚集索引吗?如果是这样,请确保在插入新行时它不会碎片化。通常guid会成为聚集索引的不良候选者。此外,如果您有企业版,并且您能够识别表中的分区,则可以使用此列(例如区域或城市)对表进行分区,并将表的分区存储在不同的文件组中。这样您可以避免IO争用。 如果您每天选择一次所有数据,并且您希望在选择期间保持插入速度而不会过多锁定,则可以考虑创建数据库快照(同样是Enterprise Edition)并从中进行选择。如果你可以使用脏读,你可以添加(nolock)提示你的选择。