将SQL数据写入内存而不是表

时间:2017-11-22 14:43:38

标签: sql sql-server logging clr

我有一个SQL DB,其中大量SP中的日志步骤不断地将数百行写入错误日志表并使用服务器上的资源。建议的一个解决方案是将日志写入内存,一旦日志计数超过1000行,然后将其批量插入日志表而不是不断编写单独的行。我曾经使用过CLR - 有人能指出我正确的方向如何使用它吗?上述声音可行吗?

1 个答案:

答案 0 :(得分:0)

  

我有一个SQL DB,其中包含大量SP中的日志步骤   不断地将数百行写入错误日志表并使用   服务器上的资源。建议的一个解决方案是来编写   登录到内存,一旦日志计数超过1000行,然后批量   将其插入日志表

你已经在写一个记忆了。当你把东西写到桌子上时,你永远不会想到一个磁盘。所有操作都在内存中进行。只有在某些时刻SQL Server才会将脏(修改过的)页面刷新到磁盘。这些时刻是checkponts:

  

出于性能原因,数据库引擎会对其进行修改   数据库页在内存中 - 在缓冲区缓存中 - 并且不写这些   每次更改后的页面到磁盘。而是数据库引擎   定期在每个数据库上发出一个检查点。检查站写道   当前的内存中修改页面(称为脏页面)和   从内存到磁盘的事务日志信息,以及记录   有关交易日志的信息。

链接:Database Checkpoints (SQL Server)