1

我们有一个标准的扩展事件会话来收集在我们的 SQL 服务器上运行的数据库和日志文件的增长。我在一个大表上创建一个索引,知道它可能会填满事务日志。确实如此,但是调查日志驱动器空间不足的原因的 DBA 无法将索引构建视为罪魁祸首。它显示了除索引构建之外的所有其他事务。有谁知道这背后的原因?我一意识到有问题就终止了索引构建,它释放了所有空间。我想知道这背后的原因。

此服务器正在运行 SQL 2016 CU 15 - 企业版。

这是我正在运行的查询:

CREATE NONCLUSTERED INDEX [ix_myIndex]
    ON [dbo].[MyTable]([MyField] ASC)
    WITH(PAD_INDEX=OFF, STATISTICS_NORECOMPUTE=OFF, SORT_IN_TEMPDB=ON, DROP_EXISTING=OFF, ONLINE=ON, ALLOW_ROW_LOCKS=ON, ALLOW_PAGE_LOCKS=ON);

以下是我们用于捕获日志文件增长的事件:

 ADD EVENT sqlserver.databases_log_file_size_changed
      (ACTION
            (package0.collect_system_time,
       sqlos.task_time,
       sqlserver.client_app_name,
       sqlserver.client_hostname,
       sqlserver.client_pid,
       sqlserver.database_id,
       sqlserver.database_name,
       sqlserver.server_instance_name,
       sqlserver.session_id,
       sqlserver.sql_text,
       sqlserver.username))
4

1 回答 1

0

让我做一个类比。假设你有一个游泳池,里面大部分都是水(因为谁喜欢在空池里游泳?)。现在开始下雨了,游泳池溢出了!你会说是雨导致它溢出还是开始下雨时它几乎满了?

扩展事件是从我的示例中捕获下雨事件。而且它在技术上是正确的!

于 2021-06-24T16:38:08.833 回答