首页 > 解决方案 > 将 SQL Server Serilog 接收器包装在 Async 中是否有意义?

问题描述

我试图最大限度地减少从 .NET Core 应用程序将日志写入 SQL Server 的性能影响。

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

SQL Server 接收器文档声明它会定期和/或在batchPostingLimit到达时对日志条目进行批处理。我找不到任何关于它决定发出INSERT命令时会发生什么的信息。

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

标签: c#sql-server.net-coreserilog

解决方案


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

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


推荐阅读