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 / 问题 / 287301
Accepted
Newbie-DBA
Newbie-DBA
Asked: 2021-03-19 22:14:47 +0800 CST2021-03-19 22:14:47 +0800 CST 2021-03-19 22:14:47 +0800 CST

磁盘的平均写入延迟峰值比平时多。需要帮助找到罪魁祸首

  • 772

我们最近报告的磁盘写入延迟有所增加。虽然我们的监控团队没有确认来自哪个驱动器,但在进行一些 dmv 查询时,我看到tempdb平均等待写入时间约为 32 毫秒。同样在一周的tempdb使用情况下,我的意思是可用的可用空间已从 300 GB 下降到 50 GB 以下。

我怀疑这个尖峰可能来自tempdb. 该环境是 OLTP 和仓库人员在查找实时数据时查询数据以进行大型选择的混合,以防 LS 备用数据库不可用。

我的问题是如何检查tempdb是否会导致此峰值?

这些选择查询也会导致tempdb写入延迟吗?这些选择查询在超过 TB 数据的表上运行,用户可以根据我所看到的情况进行部分查询,例如 order by 和 group by。但我不确定如何证明它们是导致突然飙升的原因。

sql-server sql-server-2012
  • 1 1 个回答
  • 102 Views

1 个回答

  • Voted
  1. Best Answer
    Ronaldo
    2021-03-20T02:40:03+08:002021-03-20T02:40:03+08:00

    我的问题是如何检查 TempDB 中的内容是否会导致此峰值?

    要分析这些查询对 tempdb 的影响,您可以使用sp_whoisactive,因为它输出的信息之一是 tempdb 的使用:

    • 这些列中最令人困惑的是那些与 tempdb 相关的列。每列报告一些 8 KB 页面。
      [tempdb_allocations] 列直接从与 tempdb 相关的 DMV 收集,并指示 由于临时表、LOB 类型、假脱机或其他使用者而在 tempdb中 分配
      了多少页。[tempdb_current] 列的计算方法是从分配 数中减去 tempdb DMV 报告的已释放页面信息。看到 少量当前页面的大量分配意味着您的查询可能会猛烈抨击 tempdb,但不会导致它增长。看到大量 当前页面意味着您的查询可能负责所有






      你一直注意到的那些自动增长。

    另一种表明您有与 tempdb 相关的问题的方法是sp_BlitzCache™ Result: TempDB Spills。正如该页面所说:

    要查找导致溢出的查询,您有多种选择——您可以捕获和检查实际执行计划,或者您可以通过扩展事件收集交换溢出事件。Paul White 在他的回复中涵盖了您的选择,其中涉及到 tempdb 的哈希/排序溢出的频率是多少?


    那些选择查询也会导致 TempDB 写入延迟。这些选择查询在超过 TB 数据的表上运行,用户可以根据我所看到的情况进行部分查询,例如 order by 和 group by。

    当然可以。如果您检查tempdb 数据库文档,您会看到它存储了以下对象:

    • 数据库引擎创建的内部对象。它们包括:
      用于存储假脱机、游标、排序和临时大对象 (LOB) 存储的中间结果的工作表。
      用于散列连接或散列聚合操作的工作文件。
      创建或重建索引(如果指定了 SORT_IN_TEMPDB)或某些 GROUP BY、ORDER BY 或 UNION 查询等操作的中间排序结果。
    • 3

相关问题

  • SQL Server - 使用聚集索引时如何存储数据页

  • 我需要为每种类型的查询使用单独的索引,还是一个多列索引可以工作?

  • 什么时候应该使用唯一约束而不是唯一索引?

  • 死锁的主要原因是什么,可以预防吗?

  • 如何确定是否需要或需要索引

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