将 SQL Server Serilog 接收器包装在 Async 中是否有意义?

Ang*_*ker 3 c# sql-server serilog .net-core

我试图将日志从 .NET Core 应用程序写入 SQL Server 的性能影响降至最低。

过去,我将 SerilogFile水槽包裹在水槽内Async- 这极大地提高了性能。

SQL Server的水槽文档说,它定期批处理日志条目和/或当batchPostingLimit已经达到。我找不到关于当它确实决定发出INSERT命令时会发生什么的任何信息。

它是否相对于调用的代码异步发生Logger.Log(...)?如果没有,将 SQL Server Serilog 接收器包装在 Async 中是否有意义?

Nic*_*rdt 7

SQL Server 接收器派生自PeriodicBatchingSink,它异步执行所有批处理操作。

所以不,Serilog.Sinks.Async不会提高当前形式的 SQL Server 接收器的性能。