如何优化MSSQL数据库的性能?

如何优化MSSQL数据库的性能?

我是一名数据库管理员,我的数据库有大约 280 个表,总数据大小大约 1.5GB。我想调整数据库,使其性能更好。

您如何保持 SQL 数据库的性能?您花了多少时间处理索引、统计信息和碎片整理?

最大的性能杀手/改进是什么?以及如何排除故障以找出需要优化的地方?

编辑: 这是来自第三方 CRM 系统的数据库,因此我无法控制代码。他们添加了很多索引(在合理的位置),但我想知道如何保持服务器的速度。

我每晚都会跑步

EXEC sp_MSforeachtable "dbcc dbreindex('?', '', 90)"

使用维护计划重建索引并(希望)更新统计信息。同一计划还执行“收缩数据库任务”。

还可以进行哪些其他夜间/每周维护任务或一次性优化?

编辑2:

收集到的提示:

  • 不要运行“收缩数据库任务”
  • 关闭“自动收缩”属性
  • 运行“EXEC sp_MSforeachtable“dbcc dbreindex('?', '', 90)”
  • 然后运行“EXEC sp_updatestats”

答案1

您应该从维护计划中删除“收缩数据库”部分。“收缩数据库”会使您的索引碎片化!这里是 Paul S. Randal 的一篇精彩博客文章,详细解释了这一点。

您可以使用以下方式重建统计数据:

EXEC sp_updatestats

在数据库重新索引后始终更新您的统计数据。这里是 Colin Stasiuk 发表的一篇博客文章,解释了这一最佳实践。

答案2

我仅通过索引就获得了数量级的性能提升(尽管我并没有真正摆弄它)

在您处理了显而易见的问题(合适的硬件、索引和碎片整理)之后,您最好的性能来源就是查看您自己的代码。

答案3

确保您的 SQL 服务器除了提供 SQL 服务外不执行任何其他操作,没有文件共享,没有 Web 服务器。这种规模的数据库不应该有任何性能问题,运行 Profiler 将有助于找出任何慢点。

确保预先分配足够的空间,以便数据库不会一直自动增长。

答案4

将主数据库文件和日志文件放在不同的物理磁盘上。即 - 将您.MDF和您的.LDF文件分开。

相关内容