gpt4 book ai didi

.net - 优化 SQL Server 2008 存储过程

转载 作者:行者123 更新时间:2023-12-01 07:09:42 24 4
gpt4 key购买 nike

2011 年 3 月 25 日更新我已将此问题标记为已回答,虽然我还没有具体的答案来帮助改进系统,但我认为在我走到那一步之前推迟是不公平的。这个问题很广泛,答案给了我很多指导,可以帮助我前进。当我有更具体的问题要问时,我会回来的。不幸的是,我只能用打勾标记一个答案,但我要感谢大家的意见,所有都很有值(value),感谢您的宝贵时间。

原始问题

提前道歉,因为这个问题可能会很广泛!

实际上,我正要介入一个项目,我们的其他一位开发人员基于 SQL Server 2008 企业版、报告服务和存储过程构建了一个庞大的系统。我们在 VM 系统(即 SQL Server 在由 VMWare1 ESXi 托管的 Windows Server 2008 R2 系统上运行)的性能测试中发现,它似乎没有利用额外的内存或内核。

当我进入这个项目时,我一直在寻找一些关于一些初步大纲问题的指导:

  1. 在 SQL Server 2008 中优化以利用更多内存和更多处理器内核的机会有哪些?
  2. 是否有关于如何调用、结构化、开发存储过程等影响 SQL Server 如何并行化存储过程的规则?

此外,我想下一个明显的观点是 - 我需要在代码中注意哪些内容,以便其他人更深入地了解代码的结构并允许我提供更具体的示例?系统中有很多行代码,但显然理想的做法是尝试找到一个简洁的示例或模式来演示用法。

我相信,存储过程是由 Reporting Services 调用的。

在我们的测试中,它几乎看起来是线性执行 - 即,如果我们为 VM 配置 2 个内核、2ghz CPU 分配和 4gb 内存,如果 1 个报告在 2 分钟内同时运行,则 2 个将需要近 4 分钟(即两个报告的时间的两倍),它不像那样线性但足够接近 - 一切都变得更慢,几乎就像它们根本没有真正并行运行一样。

可能是 SQL Server Reporting Services 只是一次只运行一个报告或与此相关的东西吗?

存储过程都是在 Transact-SQL 中开发的。

再次为这个宽泛的问题道歉。如果有人可以帮助教育我如何在该领域获得更深入和更多的知识,那将是感激!

马特。

最佳答案

注意几点

  1. 内存是你的 friend ,你越多有更少的 SQL Server 必须去到慢 1000 倍的磁盘
  2. 您是否有正确的索引和它们被使用了吗?
  3. 你的 where 子句/order by被索引覆盖?
  4. 是 where 子句 sargable 或者 is它以 SQL Server 的方式编写不会使用索引?
  5. 是使用基于 SET 的 procs操作还是使用游标和循环遍历数据集(即慢)
  6. 在使用 SELECT * 时的 procs真的只需要 2 列吗?
  7. 独立的日志、临时数据库和数据文件在他们自己的磁盘主轴上,如果你有非聚集索引也放那些在他们自己的磁盘上
  8. 在 procs 运行时使用性能监视器甚至任务经理,看看什么发生... CPU 是否已达到最大值.. RAM 是否已达到最大值
  9. 一份报告会阻止另一份报告吗?运行 EXEC sp_who2 并查看BlkBy 列
  10. 获取其中一个 proc,运行它 SSMS 并查看执行 计划..如果你看到很多扫描和 占总执行的高百分比 items..首先关注那些,还要在计划中寻找转化等内容

你能显示一些代码吗,我们可以快速查看它并告诉你是否看到红旗

关于.net - 优化 SQL Server 2008 存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5421574/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com