请问下比如2个数据库A和B,结构都是一模一样的,我insert into A.XX select from B.XX之后,然后把B库转移到A库的数据都删了,但是我发现磁盘的空间这样就突然少了好多(我转移了大量的数据),百度了下insert into select其实会造成2倍的数据量,但是A库里并没有多出数据,也没有存在临时表,请问我该如何恢复那些少了的磁盘空间~!
------解决方案--------------------
主要占用空间的部分为:
1、日志,在非简单模式下,如果你进行大数据量加载,需要记录大量日志,并且这些日志只有进行日志备份才能截断,然后才能收缩(这些是常规手段,用暴力手段除外)。这部分是你这个情况的主要消耗部分。
2、如果你的表上有索引,那么索引也要占用空间,而且数据插入时,如果有索引,那么会根据默认的填充因子填充数据页,有时候并不一定填满了才分页,另外分配区也会造成空间的“浪费”
简单来说,插入过程需要先分配一定的空间,然后再插入,而你删除数据后,如果需要回收空间:
1、做日志备份,然后收缩日志。
2、收缩数据文件