以下是引用TonyDeng在2015-5-29 16:36:02的发言:
pack指令的动作,是重新创建一个表,然后遍历原表,跳过所有被标识删除的记录,把未删除的记录复制到新表中,关闭原表,把新旧表的文件名整理顺当,从而把新表当原表,重新打开。这就是pack为什么需要独占数据表、为什么需要表文件两倍的磁盘空间、为什么速度慢、为什么要防掉电的原因,解答全在这个运作机制上。pack过的表,记录号是会变的,那么程序中原来依靠记录号判断的逻辑,会有什么风险,自己据此分析即可。zap比pack快得多,道理也很简单。
没事不要pack!
精辟