iva*_*nmp 8 performance sql-server snapshot reporting
将数据库快照用于报告目的的性能优势是什么?
在我看来,它可能会降低性能,因为对于原始数据库中的每次写入,都必须为快照本身进行另一次写入。
我可以看到,只要您想报告当时为止的数据,就会使用快照,但这不属于性能类别。
再说一遍,有性能优势吗?
使用位于生产 OLTP 服务器上的数据库快照很可能会使性能变差。有两个主要原因:
额外的写入开销。快照是写时复制,因此这显然会影响性能。
快照将共享磁盘上旧数据库的页面,但它使用缓冲池中自己的内存。如果您有一个大表,它将最终消耗 OLTP 数据库和快照的内存,即使是未修改的页面也是如此。因此,您最终可能会使用大量额外的内存,如果您的服务器没有大量可用 RAM,这可能会导致更多的磁盘 I/O。
因此,如果您试图仅在单个服务器上减少报告的侵入性,那么您最好只查询 OLTP 数据库并使用 WITH (NOLOCK) 提示,然后在需要时使用资源调控器进行控制。除此之外,研究某种横向扩展系统(日志传送、镜像等)