转换非常大的SQL Server表的最快方法

问题描述 投票:0回答:1

我们正在重新设计SQL Server 2012中一个非常大的(~100Gb,分区)表。

为此,我们需要将旧(现有)表中的数据转换为生产服务器上新设计的表。新表也是分区的。行仅附加到表中。

问题是很多用户在这个服务器上工作,我们只能在块中和服务器没有负载(一天几个小时)的情况下完成这个转换过程。

我想知道是否有更好更快的方式?

这次我们将在几天内完成转换过程(然后切换我们的应用程序以使用新表),但如果表是1Tb我们会怎么做?还是10Tb?

PS。有关当前流程的更多详细信息: 这些表根据CloseOfBusinessDate列(DATE)进行分区。目前,我们在服务器处于低负载时运行此查询:

INSERT INTO
  NewTable
...
SELECT ... FROM
  OldTable -- this SELECT involves xml parsing and CROSS APPLY
WHERE
  CloseOfBusinessDate = @currentlyMigratingDate

每天从旧表中大约1M行转换为新表中的200M行。 完成转换过程后,我们只需更新我们的应用程序即可使用NewTable。

sql sql-server database sql-server-2012
1个回答
1
投票

每个人都花时间阅读这个问题并试图帮助我,对不起,我自己没有足够的细节。原来从旧表中选择数据并转换它的查询非常慢(感谢@Martin Smith我决定检查SELECT查询)。该查询涉及解析xml并使用交叉应用。我认为在我们的情况下更好的方法是编写一个小应用程序,只需每天从旧表中加载数据,将其转换为内存,然后使用批量复制插入新表。

© www.soinside.com 2019 - 2024. All rights reserved.