【发布时间】:2020-07-12 05:23:45
【问题描述】:
我们的应用在 SQL Server 中有几个非常大的表。我们要清理两个表中的 5 亿行和 10 亿行以回收一些磁盘空间。
在我们的测试环境中,我尝试在循环中运行分块删除,但我认为这在 prod 中不是一个可行的解决方案。
所以另一种选择是选择/插入我们要保留的数据到临时表中,截断/删除旧表,然后重新创建
- 索引
- 外键约束
- 表权限
- 将临时表重命名回原来的表名
我的问题是,我是否遗漏了清单中的任何内容?是否还有其他我们将丢失的对象/结构需要重新创建或恢复?如果出现问题,那将是灾难性的情况。所以我玩这个非常安全。
调整数据库大小/添加更多空间不是一个可行的解决方案。我们的 SQL Server 应用程序的生命周期即将结束,并且正在被淘汰,因此在此之前我们只是保持亮灯状态。
【问题讨论】:
标签: sql sql-server clone truncate