如何拆分许多对象引用的SQL Server中的大表?

时间:2013-04-12 09:05:03

标签: sql-server sql-server-2008

我们有一个相当大的表,在20多列中保存了大约65M条记录,我们希望将该表拆分为两个更容易管理的表。 这里的主要挑战是引用此表的许多对象(视图,存储过程,函数和应用程序代码),我不想错过任何东西。

以下是我计划如何做到这一点 - 任何人都可以确认这是否可行或建议任何改进。

  1. 识别所有引用的对象
  2. 创建新表
  3. 复制数据
  4. 添加将连接两个表的外键
  5. 一次查看和更新​​所有对象
  6. 将所有内容部署到生产
  7. 从旧表中删除不需要的列
  8. 这里有什么我想念的吗?

2 个答案:

答案 0 :(得分:1)

对我来说很好,但这是我看到的一些挑战。

部署 - 您需要以足够快的速度执行此操作,以免在生产过程中出现任何问题 - 如果您在执行此操作时可以暂停生产系统,那就太棒了。否则请确保在生产中多次执行此操作

识别所有引用的对象 - 确保您不会错过任何对象。我建议使用免费的第三方工具(如ApexSQL Search)查找数据库对象,但您还需要查看应用程序代码。

执行顺序 - 如果您需要更新的对象太多,请确保按正确的顺序准备脚本

我不会立即删除不需要的列 - 让它们在那里停留一段时间,但要确保定期检查数据。

答案 1 :(得分:1)

听起来您可能计划垂直分区(拆分列)。如果您的65M记录代表了大量历史数据,那么您可能希望根据日期进行水平分区并创建视图以将它们组合在一起。这样许多外部引用对象都不会有差别。我在这里做了一些关于数据使用的假设。

视图对垂直分割也很有用。