AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 320749
Accepted
Don
Don
Asked: 2022-12-09 16:17:13 +0800 CST2022-12-09 16:17:13 +0800 CST 2022-12-09 16:17:13 +0800 CST

预增长 tempdb 会影响性能吗?

  • 772

昨天下午晚些时候,我将 4 个 tempdb 数据文件添加到现有的 4 个中,总共 8 个(SQL 服务器上的 16 个处理器)。我还预先将它们种植到接近 100% 的可用空间。

今天,我们的一位开发人员联系了我,她说昨天她正在运行一个查询,该查询将在 3-5 秒内将一组初始结果返回到 ssms 显示,整个查询将在 2-3 分钟内完成。今天查询需要 5 分钟才能完成,大约 2.5 分钟内没有结果显示在 ssms 中。

当时没有其他查询在运行。CPU 使用率很低。我反弹了服务器,没有任何改善。所以现在我想知道我的 tempdb 更改是否导致性能下降。我看不出如何,但偏执狂开始了。我运行了查询并在它执行时监视了 tempdb,它似乎根本没有使用 tempdb,我觉得这很奇怪,因为它有一个我认为使用的 GROUP BY 语句临时数据库。该表包含大约 2200 万行,查询返回大约 780 万行。

    select
      DATEADD(q, DATEDIFF(q, 0, MonthOfDate), 0) as Quarter
      ,[PartnerCD]
      ,[PartnerNM]
      ,[PartnerGRP]
      ,[BizMemberID]
      ,[MemberID]
      ,[BizType]
      ,[RateCD]
      ,[Rate]
      ,sum([MemberMonth]) as MemberQuarter
      ,[CurrentAge]
      ,[AgeAtTime] = CASE WHEN dbo.fn_CalculateAge(BirthDT, (DATEADD(q, DATEDIFF(q, 0, MonthOfDate), 0)), 'YEAR') < 0 THEN NULL ELSE dbo.fn_CalculateAge(BirthDT, (DATEADD(q, DATEDIFF(q, 0, MonthOfDate), 0)), 'YEAR') END
      ,AgeCategory = dbo.fn_CalculateAgeCatYrsOrdered(BirthDT, (DATEADD(q, DATEDIFF(q, 0, MonthOfDate), 0)))
      ,[BirthDT]
      ,[ZipCD]
FROM [Partner].[dbo].[Membership]  
group by DATEADD(q, DATEDIFF(q, 0, MonthOfDate), 0)
      ,[PartnerCD]
      ,[PartnerNM]
      ,[PartnerGRP]
      ,[BizMemberID]
      ,[MemberID]
      ,[BizType]
      ,[RateCD]
      ,[Rate]
      ,[CurrentAge]
      ,[BirthDT]
      ,[ZipCD]

可能是我的更改导致性能下降还是巧合?

sql-server-2019
  • 1 1 个回答
  • 39 Views

1 个回答

  • Voted
  1. Best Answer
    J.D.
    2022-12-10T09:37:37+08:002022-12-10T09:37:37+08:00

    但是,我在进行更改后确实重新启动了 SQL 服务。我认为这是之后应该采取的正确行动。我想这可能会导致查询制定一个新的、效率较低的执行计划?

    答对了。这就是我在评论中特别添加该条款的原因。

    当您重新启动 SQL Server 服务(或显然也重新启动服务的服务器本身)时,查询计划缓存将被清除,如 Aaron Bertrand对我关于该主题的问题的回答中所述。这意味着,之前为您的查询缓存的查询计划现在已被擦除,并且当您的 SQL Server 实例开始生成新计划时(基于正在使用的表的多种因素,它们的索引方式,以及自上一个计划以来数据的统计数据如何变化)它最终采用了一个似乎效率较低的不同计划。

    您可以使用 清除计划缓存中有问题DBCC FREEPROCCACHE (the_plan_handle_of_the_bad_plan)的查询计划。请从文档中查看此示例,了解如何获取该特定查询计划的计划句柄。重新运行查询将重新生成一个新计划,该计划可能会或可能不会成为同一个计划。如果它最终是一样的,那么你最好的行动方案实际上是对性能瓶颈进行故障排除,这在实际执行计划本身中应该是显而易见的。

    • 0

相关问题

  • SQL Server 评估期已过期

  • 新的系统存储过程 sys.xp_delete_files 与 sys.xp_delete_file 有何不同?

  • 从 SQL Server 2012 SP1 升级到 SQL Server 2019

  • MS SQL Server 是否有 generate_series 功能

  • 如何启用 SQL Server 2019 的结果集缓存?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve