gpt4 book ai didi

sql-server-2005 - 工作文件创建/秒激增失控

转载 作者:行者123 更新时间:2023-12-02 22:15:23 26 4
gpt4 key购买 nike

在我的一个数据库中,我的工作文件创建/秒性能计数器突然失控,平均在 10K 到 20K 之间。

有没有人知道如何找出导致此问题的查询?

最佳答案

不幸的是,当您看到每秒创建大量工作文件时,SQL Server 文档在完整描述这里发生的事情方面并不是那么好。

但是,它们确实提供了一些见解: http://msdn.microsoft.com/en-us/library/ms177426.aspx

首先,他们指出创建工作文件(与工作表相对)是为了存储 HASH 连接和散列聚合 - 由于尝试连接/组合/聚合大量行的操作通常会进行散列/等式两边的结果(比方说,与嵌套循环或其他连接/操作相比)。有关不同 JOIN 类型的更多信息,请参阅此内容(并记住并非所有散列 = 连接): http://msdn.microsoft.com/en-us/library/ms191426%28v=SQL.100%29.aspx

所以。翻译:您看到大量工作文件的原因是因为您的工作负载一遍又一遍地将来自一个表(或一组 JOIN)的大量结果“混搭”到另一个表(或一组 JOIN)。

在 Multi-Tenancy 系统中,通常会看到每秒创建的工作文件数量很高(即高于大多数调优专家为单一数据库推荐的 < 20 的典型范围)。但是您报告的数字显然很高。

说的是:- 如果您没有遇到其他问题(用户威胁要杀死您、页面加载缓慢等),那么(如果您有大量 RAM)这可能不是一个大问题。相反,它可能只是服务器处理得很好的一种“潜伏”问题,但这会阻碍您的扩展能力。- 解决或更正此问题的唯一真正方法是查看您的代码和操作。如果您在尝试对大量数据执行 JOIN 的 GOB + 聚合的单个/巨大切片+骰子查询中组合大量行,则将这些单个查询分解为多个更小的“子查询”和“预查询”过滤”可以/将会减少正在创建的工作文件的数量,并且会对整体性能和吞吐量产生明显的影响(即,您应该看到,在许多情况下,查询的重写可以/将会明显更快)。

我在这里写了关于“预过滤”的概念: http://devproconnections.com/database-development/generating-high-performance-sql-server-query-results

关于sql-server-2005 - 工作文件创建/秒激增失控,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14562947/

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