小编Beg*_*DBA的帖子

系统运行状况扩展事件导致的进程利用率不正确?

我最近一直致力于了解存储在系统健康扩展事件事件文件中的数据或指标。

我们正在尝试使用此处提供的系统运行状况来实现性能指标的数据收集

有一些报告提供了从名为的系统运行状况事件收集的 CPU 利用率、其他进程利用率等指标

scheduler_monitor_system_health_ring_buffer_recorded
Run Code Online (Sandbox Code Playgroud)

对于一些繁忙的服务器,我无法理解为什么报告中列为 SQL CPU 利用率的字段“process_utilization”大部分时间都在 100 以上。在高峰时间,它在 120-160 之间变化,因此报告是始终显示 CPU 高于 100,即使当我从服务器活动监视器中检查时,情况并非如此。

我在 Github 中提出了这个问题,但似乎没有修复或回应。

因此,我的问题是

  1. 如何使用记录的系统运行状况环缓冲区获取服务器的 SQL CPU 利用率的准确数字?

  2. 报告还显示根据其报告计算的以下 2 个字段的计数器

  1. 100-System_idle-process_utilization 作为 OtherProcessUtil

  2. 100-system_idle 作为 SystemUtil

这些OtherProcessUtilSystemUtil需要/有什么帮助?

  1. 我也看到内存利用率每次总是显示为 100。这似乎也不正确。有人注意到了吗?

其他工具(如 Idera 和 sentry [我测试过的])不会显示相同服务器的 CPU 使用率超过 100%。我对相同的负载进行了并排比较。

sql-server extended-events sql-server-2012 sql-server-2014 sql-server-2016

10
推荐指数
1
解决办法
484
查看次数

升级到 SQL Server 2008 R2 涉及的风险

我们有相当多的 SQL Server 需要从 2005 版升级到 2008 R2。工作计划在今年年中之前完成,因为 Microsoft 将结束对它的支持。

2005 SQL Server 都是 SP3 和 SP4,运行在 Windows Server 2003(其支持已经结束,但我们有延长一年的例外),但在需要时我们也可能会升级服务器操作系统。

这些服务器包括复制(事务)、日志传送、报告服务和运行 SSIS 包的集成服务器。

我的问题不是如何,而是我想知道所涉及的风险或在计划此升级之前可以进行的任何预检查?

此外,对于此迁移/升级,就地升级是否是比并行升级更好的计划?

sql-server-2005 sql-server sql-server-2008-r2 upgrade

8
推荐指数
2
解决办法
1754
查看次数

有多少 VLF 可能是坏的

我有一个大小为 840 GB 的数据库,其中有 948 个 VLF。另一方面,有一个大小为 1.6 TB 的有 320 个 VLF。这是否表明具有大量 VLF 的较小数据库实际上是一个问题?另外我们如何确定该数字太大或在OK范围内。

请建议

performance sql-server sql-server-2012

6
推荐指数
2
解决办法
3862
查看次数

系统运行状况扩展事件文件如何滚动?

我看到 SQL Server 中的默认系统健康会话事件是 5 MB,每个事件总共有 4 个文件。

我们正在尝试从历史事件中的系统健康状况中获取数据,但对于一些关键的生产服务器,它们只会非常快速地滚动。对有些人来说,他们甚至在那里呆了几个星期

SQL Server 中滚动文件的机制是如何工作的,有没有一种方法可以检查这种情况何时以及如何发生?

编辑@每个答案

  1. 事件未重新启动
  2. 服务器也没有重新启动,它按计划每月发生一次

因此,我认为系统运行状况中可能会捕获很多不需要的事件。我怎样才能在这个系统运行状况中找到它们并过滤掉它们?

另外,我们应该增加文件大小,比如 200 MB 4 文件,还是只保留 10 MB 80 文件等小文件?哪一个更好?

更新@我已经将此标记为答案,但是在检查弹出的另一件事时:

文件未按顺序填写;假设我将 10 个文件增加到每个 10 MB。我们看到几天前的 1-6 个文件似乎都充满了 10 MB,而同一天的文件 7 和 8 是 2 MB,而文件 9 和 10 完全充满了 10 MB。我想这是意料之中的,只是好奇为什么会这样?

sql-server extended-events sql-server-2012 sql-server-2014

6
推荐指数
1
解决办法
771
查看次数

一次性将所有代理作业的 SQL 代理输出添加到文本文件中

作为最佳实践,我正在尝试安排一个活动,其中所有 SQL 代理作业都应将输出记录到文本文件中。

手动我可以为单个工作执行此操作。但是我正在通过脚本或任何好的方法寻找更好的方法,我可以为每个服务器大约 80-90 个作业的多个作业进行此更改。

此外,我必须在 QA、UAT 和 prod 中执行此操作,涵盖 100 多台服务器。

请分享您的经验或任何有用的链接,这是如何以最佳方式实现的,因为生成输出的日志文件的路径应该在服务器/作业之间通用。

sql-server sql-server-2012 sql-server-agent jobs

5
推荐指数
1
解决办法
3888
查看次数

SQL查询或列出所有正在运行的sql服务的方法

这可能是一个简单的问题,但我搜索了很多却找不到。

是否有 sql 查询或我可以在注册服务器上运行来查找所有正在运行的 sql 相关服务的列表,例如 ssis 、 ssas 、 ssrs 、 sql 、 agent 、 broswer 等...

尝试谷歌搜索并可以找到 sys.dm_server_services dmv 但它没有显示所有正在运行的服务

sql-server sql-server-2014 service-accounts

5
推荐指数
1
解决办法
4227
查看次数

与默认 maxdop 并行运行的查询

我需要了解 sql server 查询的以下行为

系统有 4 个 CPU,超线程比率为 20,使 80 个逻辑处理器在我的 sql server 实例上计数。

当前 MAXDOP 为 0,ctop 为 5

这是一个只读实例,充当 LS 的备用实例,其中完成所有报告。

进入的许多查询似乎显示并行度为 64。

问题: .1。当逻辑处理器数为 80 时,为什么并行度不是 80?

  1. 我的理解是否正确,如果一个小时内有 6 个慢查询都显示并行度 64 预计会变慢,因为它们可能会击中相同的线程并因此显示为 cx 数据包等待。因此我相信通过测试将 MAXDOP 更改为 16 或 8 应该给他们自己的线程来完成?

谢谢

performance sql-server sql-server-2012 maxdop query-performance

5
推荐指数
1
解决办法
312
查看次数

为数据和日志文件格式化磁盘时 SQL Server 块大小的最佳实践

关于格式化 SQL Server 数据库文件的文件系统的当前最佳实践或一般指南是什么。

目前我们有 SQL Server 文件系统,NTFS 格式化为基于这些 Microsoft 指南的64KB 块大小。

我不确定这现在有多少适用性,以及我们如何找到最适合我们可以格式化为 1 或 2 MB 的最新 Windows 服务器。

因此,我正在寻找建议如何使用最新的 Windows 为现代 SQL Server(例如 2017 年及更高版本)格式化磁盘,因为 MSDN 文档似乎没有更新。使用不同的块大小(例如 512 KB 或 128 KB)是否会更好地格式化 mdf、ndf 和 ldf 文件所在的驱动器。

performance sql-server storage sql-server-2017

5
推荐指数
1
解决办法
2319
查看次数

AG 中记录发送队列大小和重做队列大小

我正在尝试找出监控这两个事件的方法

  1. 记录发送队列大小 - 我可以在 perfmon 中看到这一点

  2. 重做队列大小 - 我可以在 dmv 中看到,但在 perfmon 计数器中看不到

有没有什么方法可以使用 perfmon,以便我可以计算重做队列大小,即使计数器在 perfmon 中不可用?

另外,我发现这些事件在属于数据库镜像的一部分时会记录在 Windows 事件查看器中。但现在使用 AG,如何在 Windows 事件查看器中记录这 2 个超出特定范围的值?

编辑

我所说的警报是指我们在 AG 中是否有一些内容,如此处所示,作为从数据库镜像看到的消息?

performance sql-server availability-groups sql-server-2017

5
推荐指数
1
解决办法
5954
查看次数

兼容模式更改不会反映在辅助设备上

我相信在数据库镜像中改变主数据库的兼容模式会改变镜像数据库。

但事实证明这是错误的。我sys.databases在 Primary 上查询使用,我将兼容模式更改为 120 ,但是在其镜像数据库兼容级别仍然是 100。为什么?

我在 sys.databases 中使用了不正确的 fn 吗?

此外,如果它没有改变它的含义,我是否需要进行故障转移/故障回复来反映?

如果我有只读日志传送辅助数据库以及此更改需要反映的地方怎么办?那我需要重建日志传送吗?

谢谢

sql-server mirroring sql-server-2014 compatibility-level

4
推荐指数
1
解决办法
348
查看次数