大部分的论坛和榜样的网上总是建议同时拥有ALLOW_SNAPSHOT_ISOLATION并READ_COMMITTED_SNAPSHOT设置为ON,每当别人问快照,行版本或类似的问题。
我想这两种设置中的 SNAPSHOT 一词都有些令人困惑。我认为,为了让数据库引擎对 READ_COMMITTED 默认行为使用行版本控制而不是锁定,无论设置如何,数据库READ_COMMITTED_SNAPSHOT都设置为 ON 。ALLOW_SNAPSHOT_ISOLATION
该ALLOW_SNAPSHOT_ISOLATION设定被设定为ON只允许快照隔离启动事务(例如SET TRANSACTION ISOLATION级快照)时无论的READ_COMMITTED_SNAPSHOT设置。
将这两个设置设置为 ON 的唯一原因是它需要具有 READ COMMITTED 行版本控制和 快照隔离。
我的问题是,我的理解在某种程度上是错误的吗?并且这两个设置必须始终一起设置为 ON(特别是对于 READ COMMITTED 行版本控制)?
虽然我在做我自己的调查,没有人知道为什么在数据库SIMPLE恢复模型LOG_BACKUP的log_reuse_wait_desc?
SQL Server 2012 SP1。几周前创建的数据库。没有复制,没有镜像,没有日志传送,而且从来没有过这些。
我们确实备份了数据库并恢复到另一个实例,它显示SIMPLE并NOTHING在log_reuse_wait另一个实例中。但我不认为还原到另一个实例是重现问题的好方法,因为还原操作会前滚/回滚事务。
我正在尝试确定内部内存压力的原因。据我所知,Resource Monitor Ring Buffer 返回一个内部压力指标。例如,通过使用此查询,
SELECT Top (1) *
FROM sys.dm_os_ring_buffers
WHERE ring_buffer_type = 'RING_BUFFER_RESOURCE_MONITOR'
Run Code Online (Sandbox Code Playgroud)
XML 结果(在资源监视器标记内):
<ResourceMonitor>
<Notification>RESOURCE_MEMPHYSICAL_LOW</Notification>
<IndicatorsProcess>2</IndicatorsProcess>
<IndicatorsSystem>0</IndicatorsSystem>
<NodeId>0</NodeId>
<Effect type="APPLY_LOWPM" state="EFFECT_OFF" reversed="0">0</Effect>
<Effect type="APPLY_HIGHPM" state="EFFECT_IGNORE" reversed="0">100789</Effect>
<Effect type="REVERT_HIGHPM" state="EFFECT_OFF" reversed="0">0</Effect>
</ResourceMonitor>
Run Code Online (Sandbox Code Playgroud)
在Bob Dorr 的这篇文章中,来自 Memory Broker 的收缩信号可能会造成内部内存压力并反映在资源监视器通知中,IndicatorsProcess = 2 (IDX_MEMPHYSICAL_LOW)如上所示。
Slava Oks 的这篇文章展示了另一种使用RING_BUFFER_SINGLE_PAGE_ALLOCATOR. 我对这个特定的环形缓冲区了解不多,因为我从未在我的环境中见过它。
SELECT Top (1) *
FROM sys.dm_os_ring_buffers
WHERE ring_buffer_type = 'RING_BUFFER_SINGLE_PAGE_ALLOCATOR'
Run Code Online (Sandbox Code Playgroud)
这次的 XML 结果:
<Pressure status="0"><AllocatedPages>477</AllocatedPages>
<AllAllocatedPages>477</AllAllocatedPages>
<TargetPages>31553</TargetPages>
<AjustedTargetPages>31553</AjustedTargetPages>
...
</Pressure>
Run Code Online (Sandbox Code Playgroud)
我的问题是,哪些内部进程可能会导致内部物理内存压力,从而导致此问题indicator = 2 …
假设在一个大表上创建或更新统计信息是否会产生显着(或根本没有)的事务日志流失?我认为不会,因为它不会改变底层数据或结构。
如果是这样,什么是验证的好方法?