SqlServer每天表执行大量先删除再插入操作,表实际占用空间变得特别大,咋回事
SqlServer每天表执行大量先删除再插入操作,表实际占用空间变得特别大,怎么回事?
SqlServer2008 R2,每天有定时作业调度,主要是对表进行删除再插入新数据,比如a表今天先删除前两月的数据,大概600w,然后再插入前两月至今的数据,大概610w左右,可能一天实际多出10几万的数据量吧,但是我看统计信息,a表实际占用的空间变化,增长了1个多G,10几万的记录数增长,能有1个多G ??不可能吧。。。是不是在对表进行删除插入的操作过程中,有什么占用空间的呢?建了个聚集索引,也只有上百兆而已,真不知道为什么?如果这张表每天都增长1个g,那多大的磁盘也不够啊。。。求知道的大神指点下,拜托了。。。
------解决思路----------------------
空间是不会自动回收的,而且delete操作先把数据标识为ghostrecord,由后台进程定时处理,当你刚删完马上插入时,后台进程并没有马上移除这些数据,所以需要分配额外的空间来存储新增的数据,频繁操作之后,空间就越来越大,可以考虑定时重建聚集索引。
SqlServer2008 R2,每天有定时作业调度,主要是对表进行删除再插入新数据,比如a表今天先删除前两月的数据,大概600w,然后再插入前两月至今的数据,大概610w左右,可能一天实际多出10几万的数据量吧,但是我看统计信息,a表实际占用的空间变化,增长了1个多G,10几万的记录数增长,能有1个多G ??不可能吧。。。是不是在对表进行删除插入的操作过程中,有什么占用空间的呢?建了个聚集索引,也只有上百兆而已,真不知道为什么?如果这张表每天都增长1个g,那多大的磁盘也不够啊。。。求知道的大神指点下,拜托了。。。
------解决思路----------------------
空间是不会自动回收的,而且delete操作先把数据标识为ghostrecord,由后台进程定时处理,当你刚删完马上插入时,后台进程并没有马上移除这些数据,所以需要分配额外的空间来存储新增的数据,频繁操作之后,空间就越来越大,可以考虑定时重建聚集索引。