我想在一个拥有4亿总记录的生产数据库上启用ALLOW_SNAPSHOT_ISOLATION。据我所知,每个记录都需要添加14个字节。
如果我设置了ALLOW_SNAPSHOT_ISOLATION,它会阻塞一段与记录计数成比例的时间,还是会异步更新数据?
主要是,当启用此设置时,我希望确保我的数据库在几个小时内不会停止服务。
发布于 2013-07-03 23:49:01
...will it阻塞一段与记录计数成比例的时间,或者会异步更新数据。
都不是。
额外的14个字节用于存储两个元素:
在启用快照隔离之后,只有在行被修改时才会添加这些内容。在切换快照时,不会产生阻塞或额外的负载来将14个字节添加到每一行。
启用时可能遇到的唯一阻塞操作是需要等待所有当前事务提交,这是值得记住的。理想的情况是,在安静的时间里做出改变,或者最好是在休息的时候,你把所有的活动都拒之门外。
如果停机时间不是选项,请避免可能发生长时间运行的事务(例如ETL)。如果几秒钟内没有得到响应,就可以查询sys.dm_tran_active_snapshot_database_transactions以确定是什么阻碍了您的工作。
https://dba.stackexchange.com/questions/45686
复制相似问题