0

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

以下是我计划如何执行此操作 - 任何人都可以确认这是否可以或建议任何改进。

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

我在这里有什么遗漏吗?

4

2 回答 2

1

对我来说看起来不错,但这是我看到的一些挑战。

部署– 您需要足够快地完成此操作,以免在生产中引起任何问题 – 如果您可以在处理此问题时暂停生产系统,那就太好了。否则,请确保您在生产中多次执行此操作

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

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

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

于 2013-04-12T09:10:17.607 回答
1

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

视图也可能对垂直拆分有用。

于 2013-04-12T09:50:14.343 回答