实现对Sql Server的读写操作的性能有哪些策略?

时间:2010-01-21 11:11:34

标签: sql sql-server

我是一个新手,无论是在堆栈溢出还是在sql server上,所以如果这个问题不合适,请告诉我:)

好吧,我正在开发一个用于分析大量数据的Web应用程序,这些数据存储在SQL Server 2008数据库中。该接口不允许用户更新或插入任何数据,因此除了用户数据的某些更新外,主要的SELECT命令将被发送到数据库。

每晚,系统将关闭并刷新其他来源的信息。此刷新还将涉及大量数据,因此数据库将在此阶段主要执行INSERT和UPDATE命令。

我已经创建了适当的索引以在SELECTS上实现良好的性能,但是这些索引会导致夜间刷新变慢。我想要“两个世界中最好的”,所以我搜索了一下,发现一个常见的策略是在写入数据之前删除/禁用所有索引,然后再重新创建它们。我还听说过更好的方法是限制索引的fillfactor,这样可以避免编写用于删除和重新创建索引的脚本。

您认为在这里使用的最佳方法是什么?我的主要目标是良好的表现?我应该使用“fillfactor”-approach还是应该弄脏并编写用于删除/重新创建索引的脚本?欢迎任何建议!

2 个答案:

答案 0 :(得分:2)

每晚删除/重新创建索引会有所帮助。填充因子只会在插入/更新级别导致碎片时提供好处。您可以通过运行DBCC SHOWCONTIG来检查这一点(小心生产,如果DB很大)。

答案 1 :(得分:0)

另一个应该提高性能的选择是在“系统刷新”期间将数据库的恢复模型从完全切换到简单。然后换回来。

切换回完全后应该进行完整备份,但这可能是值得的,最好是针对工作负载进行尝试。见。