1

我正在将数据子集从一个数据库迁移到另一个数据库。

我正在编写一个.net 应用程序,它将与我们内部的 ORM 进行通信,它将数据从源数据库拖到目标数据库。

我想知道,是否可行,或者将整个过程放入事务范围,然后如果没有问题就提交它是否是一个好主意。

我会说我可能会移动大约 1Gig 的数据。

性能不是问题,但在事务范围内可以有多少修改或新数据有限制吗?

4

2 回答 2

2

除了日志文件的物理大小之外没有限制(注意所需的大小将比迁移数据的大小大得多。还要考虑是否有错误并且回滚可能需要非常非常长的事务时间。

如果原始数据库相对较小(< 10 gigs),那么我只需进行备份并在没有事务的情况下运行未记录的迁移。

如果有任何问题,只需从备份中恢复。

(我假设您可以为此使数据库脱机 - 实时迁移是另一个蜡球......)

如果您需要在现场进行,那么在事务中小批量进行是唯一的方法。

于 2011-03-16T23:02:22.017 回答
0

我假设您正在不同服务器之间复制数据。

在回答您的问题时,没有限制。然而,有一些限制因素会影响这是否是一个好主意。第一个是锁定和锁定争用。IE:

  • 如果服务器正在用于其他查询,您的长时间运行的事务可能会锁定其他用户。
  • 然而,如果服务器未在使用中,则不需要事务。

其他建议:

  • 考虑编写代码,使其具有增量性和可中断性,即一次执行一点,并从中断处继续。这将涉及许多小交易。

  • 考虑将数据加载到目标数据库中的临时表或临时表中,然后在从该源更新时使用事务,使用存储过程或 SQL 批处理。将其放入事务中应该不会有太多麻烦,因为在同一台服务器上,它应该快得多。

  • 也可以考虑 SSIS 作为一个选项。实际上,我对SSIS一无所知,但它应该擅长这种东西。

于 2011-03-16T23:03:09.700 回答