Beg*_*DBA 6 sql-server extended-events sql-server-2012 sql-server-2014
我看到 SQL Server 中的默认系统健康会话事件是 5 MB,每个事件总共有 4 个文件。
我们正在尝试从历史事件中的系统健康状况中获取数据,但对于一些关键的生产服务器,它们只会非常快速地滚动。对有些人来说,他们甚至在那里呆了几个星期
SQL Server 中滚动文件的机制是如何工作的,有没有一种方法可以检查这种情况何时以及如何发生?
编辑@每个答案
因此,我认为系统运行状况中可能会捕获很多不需要的事件。我怎样才能在这个系统运行状况中找到它们并过滤掉它们?
另外,我们应该增加文件大小,比如 200 MB 4 文件,还是只保留 10 MB 80 文件等小文件?哪一个更好?
更新@我已经将此标记为答案,但是在检查弹出的另一件事时:
文件未按顺序填写;假设我将 10 个文件增加到每个 10 MB。我们看到几天前的 1-6 个文件似乎都充满了 10 MB,而同一天的文件 7 和 8 是 2 MB,而文件 9 和 10 完全充满了 10 MB。我想这是意料之中的,只是好奇为什么会这样?
SQL Server 中的文件滚动机制是如何工作的
发生以下任一情况时,文件将翻转:
这可能是实际运行命令的人:
ALTER EVENT SESSION [session_name]
ON SERVER
STATE = STOP;
Run Code Online (Sandbox Code Playgroud)
或者可能是服务器或 SQL Server 实例重新启动(鉴于您提到这是一个关键的生产服务器,这似乎不太可能)。
有什么方法可以检查发生这种情况的时间和方式吗?
如果您的所有文件都在 5 MB 或大约 5 MB,则您的服务器只是生成了大量事件。我有一个不是很忙的生产服务器,用 5 MB 的事件填充 4 个 XE 文件之一仍然需要不到 24 小时。这是一个屏幕截图,查看这些文件的修改日期:
要查看 SSMS 的事件会话中包含哪些事件,您可以转到管理?扩展事件 ? 会议?右键单击“system_health”并选择“脚本会话为”?“创造”?“新查询编辑器窗口”。
但是,请注意 Microsoft 文档文章Use the system_health Session 中的这一点:
我们建议您不要停止、更改或删除系统运行状况会话。
因此,最好的办法是创建一个新的 XE 会话,其中只包含您想要的事件子集,以及适用于您系统的特定事件文件目标设置。
如果文件小于 5 MB,则服务器或事件会话正在重新启动。您可以检查 SQL Server 错误日志以了解何时重新启动,并且您必须与具有 CONTROL SERVER 权限的人员核对以查看在这种情况下谁正在停止 XE 会话。
另外,我们应该增加文件大小,比如 200 MB 4 文件,还是只保留 10 MB 80 文件等小文件?哪一个更好?
这取决于。 从一堆不同的文件中查询(读取)可能不方便。所以我倾向于减少文件总数,并增加每个文件的大小。
话虽如此,我从未尝试过解析非常大的 XE 文件,因此可能存在问题。您必须进行测试,看看哪个更适合您的系统。
| 归档时间: |
|
| 查看次数: |
771 次 |
| 最近记录: |