是否有办法跟踪 DBCC 命令是否针对 SQL Server 数据库运行?
具体来说,我想查看以下 2 个命令是否已在任何时候运行?
DBCC FREEPROCCACHE DBCC DROPCLEANBUFFERS
原因是缓存不断清空,我很确定服务器上没有很大的内存压力。
我真的很想排除这样一个事实,即这是由某人完成的,这确实是我需要调查和/或向服务器添加更多内存的真正问题。
提前致谢大卫
我一直在研究供应商 SQL 查询的性能问题,通常在这个供应商那里我可以看到可以提高性能的索引,但是这个查询目前在性能调整方面有点超出我的范围。希望在这个请求之后我会学到一些新东西。
SQL 的问题似乎是合并连接(内部连接),我不确定尝试和提高这些性能的最佳方法。
我真的很感激有人指出我正确的方向,或者如果我可以提供更多信息,请告诉我。
由于我尝试应用索引,因此该索引并不多,但它们似乎没有减少合并连接的效果。因此,我给您的计划是使用供应商的默认索引。
更新 1:我添加了索引来查询,但它们几乎没有影响,这里是索引和新计划
我还更新了查询中涉及的所有表的统计信息。
使用选项(散列连接)将运行时间从 30 秒减少到 15 秒。但是,这是从屏幕后面运行的供应商 SQL,因此我无法强制执行此操作。
服务器上的 MAXDOP 设置为 0,成本阈值为 50,所以不确定为什么它不想并行。
更新 2:似乎在表 atstsehourdetmap 上具有以下唯一索引会导致问题。如果我删除这些,那么查询会在不到一秒的时间内运行。
创建唯一索引 [aiatstsehourdetmap2] ON [dbo].[atstsehourdetmap] ( [oid] ) ;
创建唯一索引 [aiatstsehourdetmap1] ON [dbo].[atstsehourdetmap] ( [tsehourdet_id] ) ;
任何想法为什么?