默认情况下,MAX_DISPATCH_LATENCY设置为30秒。我选择了文件作为目标,并将所有的捕获都写在那里。我想,如果我把所有的捕获都写进文件中,为什么我会把MAX_DISPATCH_LATENCY降到1秒,这样就可以防止捕获在内存中停留30秒。降低MAX_DISPATCH_LATENCY的影响是什么?
发布于 2020-12-10 01:18:36
根据我的研究,调整该属性听起来并不是什么可怕的事情,但通常也不需要进行真正的调整,因为对于Extended Events会话来说,30秒通常是一个很好的值。
您可以阅读更多关于属性这里的内容,但基本上它的目的是为捕获的事件在内存中驻留的最大时间设置一个阈值。通常情况下,捕获的事件在达到这个阈值之前被写入目的地,所以更多的是捕获所有的限制。除了这个阈值之外,缓冲区在缓冲区满后也会被刷新到目的地。
最终,让缓冲区以这种方式工作而不是每次都立即写入目的地的原因是I/O不太适合写入内存。常量从缓冲区写到磁盘(例如,在您的例子中的文件)可能会被瓶颈和/或导致瓶颈的磁盘。当有大量数据时,执行批处理写入磁盘是最有效的,而当数据不多时,MAX_DISPATCH_LATENCY阈值将处理将事件写入文件。
https://dba.stackexchange.com/questions/254319
复制相似问题