我们在生产系统中有一个表(由于遗留原因)运行SQL 2005(9.0.5266)并包含一个TEXT列(以及其他一些不同数据类型的列).
突然之间(从一周前开始)我们注意到这一个表的大小每天线性增加10-15GB(而之前它一直保持恒定大小).该表是消息传递系统的队列,因此其中的数据每隔几秒就会完全刷新一次.在任何时候,可能存在从0行到大约1000行的任何地方,但是当插入消息并且发送消息时它会快速波动(此时它们被删除).
我们在增长开始的那天找不到任何改变的东西 - 所以在这个阶段没有明显的潜在原因.
一个"明显的"罪魁祸首是TEXT列,因此我们检查现在是否存储了任何大量值,但是(使用DATALENGTH)我们发现大约32k左右没有单行.我们运行CHECKDB,更新空间使用,重建所有索引等 - 没有减小大小(并且CHECKDB没有显示错误).
我们查询了sys.allocation_units,大小增加肯定是LOB_DATA(显示total_pages和used_pages以恒定速率一起增加).
为了减少昨晚的数据库大小,我们简单地创建了一个新表与所讨论的一个表(幸运的是通过应用程序的视图引用),删除旧表,并重命名新表.我们昨晚离开了,因为我们已经缓解了太空问题而感到安慰,而且我们对这个狡猾的桌子进行了备份,以便今天进一步调查.但是,今天早上表的大小已经达到14GB(并且还在增长),而表中通常只有~500行,而MAX(DATALENGTH(text_column))只显示大约35k.
关于什么可能导致这种"失控"增长的任何想法,或者我们可以尝试或查询以获得有关使用该空间究竟是什么的更多信息的任何其他内容?
干杯,戴夫