• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

SQL Server 2005性能排错(4)_sqlserver

sqlserver 搞代码 3年前 (2018-06-17) 97次浏览 已收录 0个评论

  版本存储

  SQL Server 2005提供了行版本架构用于实现一些特性。如下列出了使用行版本架构的特性。更多关于下列特性的信息,请参考SQL Server 联机丛书。

  ◆触发器

  ◆MARS

  ◆联机索引

  ◆基于行版本隔离级别:需要在数据库级设置选项

  行版本需要跨会话共享。当行版本被回收时,行版本的创建者没有控制权。你需要找到并杀掉阻止行版本清理的运行最长的事务。

  下列查询返回依赖于版本存储运行最长的2个事务。

select top 2
transaction_id,
transaction_sequence_num,
elapsed_time_seconds
from sys.dm_tran_active_snapshot_database_transactions
order by elapsed_time_seconds DESC

  这是示例的输入,显示了序列号为3,事务ID为8609的事务已经运行了6523秒。

transaction_id    transaction_sequence_num elapsed_time_seconds
-------------------- ------------------------ --------------------
8609         3            6523
20156        25            783

  因为第2个事务运行了相对短的时间,你可以通过杀掉第1个事务来释放大量的版本存储。可是,没有方法能评估通过杀掉进能释放的版本空间。你也许需要杀掉一些事务来释放更多的空间。

  你可以通过改变用于版本存储的tempdb属性或通过尽可能的消除在快照隔离级别的长事务,或在read-committed-snapshot下运行的长查询来减轻这个问题。你能使用下列公式粗略的评估行版本存储的大小。

  [Size of version store] = 2 * [version store data generated per minute] * [longest running time (minutes) of the transaction]

欢迎大家阅读《SQL Server 2005性能排错(4)_sqlserver,跪求各位点评,若觉得好的话请收藏本文,by 搞代码


喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址