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 / 问题 / 317583
Accepted
Damo
Damo
Asked: 2022-09-30 02:59:43 +0800 CST2022-09-30 02:59:43 +0800 CST 2022-09-30 02:59:43 +0800 CST

MS SQL Server 数据库事务日志增长率

  • 772

我有一个繁忙的数据库,多年来一直很忙,我看到每天大约有几 GB 的事务日志大小。

在过去的几周中,该事务日志大小已增加到每 6 小时 40-50 GB。这对我的备份产生了很大的影响,并且磁盘上的大小令人担忧。

我每隔一天进行一次完整备份,每 6 小时备份一次日志。

日志备份按预期减少了事务日志使用的大小,但它又迅速开始增加。

我怎样才能发现是什么导致了交易中相对突然的交易增加?

  • 我的开发人员在过去几周可能会影响的更改方面处于空白状态
  • 没有长时间运行的进程
  • 没有计划的作业来执行索引操作
  • Redgate 监控没有显示任何过度写入

我该如何进一步调查?

sql-server backup
  • 2 2 个回答
  • 487 Views

2 个回答

  • Voted
  1. Best Answer
    Zikato
    2022-09-30T04:58:03+08:002022-09-30T04:58:03+08:00

    “监控实例的最佳时间是 20 年前。
    第二好的时间就是现在。”
    – 中国谚语

    我建议启用查询存储。开始收集数据后,您可以使用 GUI 或编写针对sys.query_store_runtime_stats的查询来查找 Log usage heavy 查询。

    图形用户界面

    在对象资源管理器中打开数据库,选择Top Resource Consuming Queries

    在此处输入图像描述

    在右上角,选择配置以选择您感兴趣的指标

    在此处输入图像描述

    在此处输入图像描述

    现在我可以看到哪个查询使用日志最多

    在此处输入图像描述

    详细信息(不在屏幕截图上)显示了计划、声明等。

    以防您仍然无法识别查询。我会访问查询存储 DMV 并尝试找到query_hash以用作扩展事件会话的搜索过滤器。

    • 10
  2. Aleksey Vitsko
    2022-09-30T03:41:54+08:002022-09-30T03:41:54+08:00

    我该如何进一步调查?

    鉴于您没有计划的作业来执行索引操作,并且没有长时间运行的进程/事务 - 您可以检查的下一件事是一些逻辑写入,以及正在执行这些写入的查询。

    可以通过以下方式完成:

    • 在 Redgate Monitor - 选择“Totals”,按“Logical Writes”的总数对查询进行排序。查看对相关数据库中的表进行写入的查询。

    • 获取 sp_BlitzCache。跑exec sp_BlitzCache @SortOrder = 'Writes'

    • 使用 SQL Server 审计功能,创建一个审计来记录针对该数据库的 INSERT UPDATE 和 DELETE 操作。可能在其中添加 BULK INSERT 和 CREATE TABLE。查看这些查询

    • 扩展活动

    如果您发现任何查询对该数据库中的表执行过多写入(1 次逻辑写入 = 8 KB 写入数据),请查看如何减少逻辑写入次数。如果这在你的情况下是可能的,当然

    此外,好的做法是定期监控下一个指标

    批处理请求/秒
    事务/秒
    写入事务/秒
    活动事务/秒

    这样你就会知道你的基线是什么,以及你的工作量何时发生显着变化

    • 4

相关问题

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

  • Oracle 中的数据库备份 - 导出数据库还是使用其他工具?

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

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

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

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