none
如何得到是什么语句导致Tempdb的数据文件增长到100GB呢? RRS feed

  • 问题

  • 检查发现tempdb的数据文件达到100GB,我们要如何查询出是哪个SQL导致Tempdb的数据文件增加到如此大呢?

    另外,看到tempdb的数据文件其实还有90GB的Available空间,为什么收缩不下来呢?

    难道一定要重启?


    If you haven't all the things you want,be grateful for the things you don't have that you didn't want.

    2013年6月29日 2:33

答案

  • Look at sql mini trace if you don't have monitoring tool. Regarding shrink tempdb (or any db), sql can't shrink db file if there's active part at or near end of the file.
    2013年6月29日 3:17
  • 不过, 从实际经验来看, tempdb 空间容易出现无法收缩的情况,  就算我们通过系统视图确定了已经使用空间只有一点点, 我们仍然无法收缩

    这个主要跟SQL Server 的一些内部缓存(cache)有关, 这些空间占用看起来是没有统计在已用空间里面的, 但确实是用了空间

    一般通过 dbcc freecache 和 dbcc freeproccache 释放缓存之后, tempdb 的空间就可以收缩了

    2013年6月29日 6:11

全部回复

  • Look at sql mini trace if you don't have monitoring tool. Regarding shrink tempdb (or any db), sql can't shrink db file if there's active part at or near end of the file.
    2013年6月29日 3:17
  • 查询 sys.dm_db_file_space_usage 可以确定 tempdb 的空间使用情况(用户对象占用, 内部对象占用和行版本占用)

    查询  sys.dm_db_session_space_usage 可以得到各个 session(spid) 的空间占用, 对于各个 session 所对应的SQL语句, 你可以用 dbcc inputbuffer 来获取

    2013年6月29日 6:05
  • 不过, 从实际经验来看, tempdb 空间容易出现无法收缩的情况,  就算我们通过系统视图确定了已经使用空间只有一点点, 我们仍然无法收缩

    这个主要跟SQL Server 的一些内部缓存(cache)有关, 这些空间占用看起来是没有统计在已用空间里面的, 但确实是用了空间

    一般通过 dbcc freecache 和 dbcc freeproccache 释放缓存之后, tempdb 的空间就可以收缩了

    2013年6月29日 6:11
  • 不过, 从实际经验来看, tempdb 空间容易出现无法收缩的情况,  就算我们通过系统视图确定了已经使用空间只有一点点, 我们仍然无法收缩

    这个主要跟SQL Server 的一些内部缓存(cache)有关, 这些空间占用看起来是没有统计在已用空间里面的, 但确实是用了空间

    一般通过 dbcc freecache 和 dbcc freeproccache 释放缓存之后, tempdb 的空间就可以收缩了

    那如果tempdb变得很大,一般如何处理?是扩分区,还是通过其他方式让tempdb的空间资源占用降下来?

    2013年9月17日 2:20
  • Restarting sql is the only way to let tempdb back to initial size.
    2013年9月17日 2:31
  • TempDB变得很大(指超过正常预期太多),那一定是设计上出了问题

    要么改设计,要么将TempDB移到磁盘空间足够的分区上


    Try SQL Server 2008 QQ:315054403 dgdba@hotmail.com

    2013年9月18日 5:01