我正在考虑截断生产数据库中的一个大表。它充满了实际不需要的日志数据。经过网上搜索,我了解到以下几点。
- TRUNCATE 与 DELETE 有何不同。
- 释放的空间不会释放回文件系统。
- 您可以缩小数据库以释放磁盘空间,但是,您需要小心谨慎地这样做。
- 如果我 TRUNCATE 的表再次增长,它将重用释放的空间。
我的问题是这样的:
如果我确实截断了表,其他表的增长是否会重新使用释放的空间,从而从长远来看节省磁盘空间?
我问这个问题的原因是,如果其他表中有用的新内容使用此空间,并且它可以防止磁盘上的增长(至少在重用空间耗尽之前),那就太好了。
提前谢谢了。
SHRINK
是的,这就是ing 愚蠢的原因之一- 当未来可能增长时,将可用空间释放回磁盘只是一种额外的浪费操作。截断将数据文件内的空间释放到数据库内部,使其可供同一数据库内的其他内部增长重用。即,随着其他表的增长,如果数据文件内有来自先前截断的可用空间,则在必须从磁盘本身提取更多空间之前,它将被重新使用以适应该增长。unused
结果集中的列将sp_spaceused
告诉您数据文件内部当前有多少空间适用于增长操作,而无需从磁盘本身提取。