最近继承了一个很大很乱的数据库,需要清理一下。为了了解大小,主数据库目前包含 3 个大表,每个表大约有 3 亿行,占用大约 225GB 的存储空间。每天添加超过 500 万行。
由于严重的磁盘空间不足(前任根本没有归档旧数据或管理它的大小),我被迫从最大的表中删除了大约 2.8 亿行。这个过程需要 25 多个小时才能完成,在此期间数据库需要与面向客户的应用程序断开连接。
现在,我需要重新索引表,因为选择和插入需要很长时间。但是,我不能无限期地使数据库脱机,我需要能够估计执行重新索引所需的时间。我以前从未重新索引过这么大的表,所以我真的没有任何好的参考点可以利用。
主表包括一个聚集的、单调递增的主键,以及一个非唯一的非聚集键。我有足够的磁盘空间来执行重新索引。
所以我的问题是:人们大约需要多长时间才能做到这一点?估计重新索引时间的好的经验法则是什么?