首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >了解tempdb中版本存储的使用情况

了解tempdb中版本存储的使用情况
EN

Database Administration用户
提问于 2015-06-23 17:31:28
回答 2查看 2.8K关注 0票数 1

我们正试图在SQLServer2005Ent SP4之一上分析tempdb的增长。

我知道tempdb将需要空间,这取决于事务,以及查询是如何设计来使用的。

我们遇到了磁盘空间变得满的问题,在这里我们分析了tempdb是如何在一周内增长那么大的。

在重新启动之后,通过监视,我们看到了4-5个查询,这些查询阻塞版本存储超过20分钟,同一天它的初始大小为2GB(4个数据文件),在6-8小时的垃圾邮件中增长到100 GB以上。

例如

查询A保存版本存储10分钟,当前版本生成速率为23.81 KB/秒,清理速率为0.00 KB/秒。版本存储大小为17 MB,tempdb文件大小为10332 MB。

一个小时后,查询B运行,版本存储16分钟,当前版本生成速率为33.81 KB/秒,清理速率为0.00 KB/秒。版本存储大小为45 MB,tempdb文件大小为45332 MB。

类似地,查询C在3-4小时后运行,版本存储15分钟,当前版本生成速率为33.81 KB/秒,清理速率为0.00 KB/秒。版本存储大小为19 MB,tempdb文件大小为85332 MB。

等等等等。在我们监视那天的过程中。

现在,第二天和第二天都会运行相同的查询,

我们在第一天就看到了tempdb分配和删除值运行得有点相似,但是tempdb并没有增长得那么快。

同样的情况发生在即将到来的7-8天,增长率约为8-10 GB,而第一天则增长到每天运行类似查询的100 GB。

另外,select count(*) from sys.dm_tran_version_store的当前输出

是196470,从重启到现在已经两天了。

也许我不知道这里的某些过程,但是请帮助我理解除了那些标识的查询之外,还有什么原因,因为如果这些查询是导致tempdb增长那么大的原因,那么我们正在努力改进它们。

注意: tempdb大小为110 GB,它显示的空闲空间几乎为109 GB。

EN

回答 2

Database Administration用户

发布于 2015-06-23 18:26:22

这可能有很多原因。

  • 您正在运行并生成一个版本的查询,在另一个查询中使用相同的表。在此阶段,版本1将被推迟。如果您的事务在结束时未完成,则可能会发生版本1将在您的tempdb中持续很长时间的情况。确保所有事务都可能已完成并关闭。
  • 确保所有信息都存储在光盘上。可能会发生这样的情况:您的信息仍然存储在内存中。这可能会导致在你的tempdb中持有一个版本。您可以在提交之后使用CHECKPOINT强制使用闩锁进程。

希望这能帮到你。

票数 1
EN

Database Administration用户

发布于 2015-07-06 18:31:14

版本存储主要是由于事务长时间运行或事务吞吐量高所致。您需要查找导致这种情况的查询。除该版本存储区外,还在下列条件下使用:

  • 由功能的数据修改事务生成的行版本(MARS、联机索引、触发器后等)
  • 由数据库的数据修改事务生成的行版本(数据库使用快照或读取提交的隔离)

请记住,TempDb检查点的优先级低于其他数据库检查点。我写了一篇文章,指定了TempDb建议,这将为您提供更多关于它的见解。如果您有高版本存储,那么您需要了解以上几点,我已经提到了。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/104909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档