处理SSIS中的性能问题

问题描述:

我通过SSMS传输了数十亿条记录,并着眼于提高迁移速度。我正在尝试将结果集保存到表中。我考虑到我的前端会很慢,因为所有的数据都在一张表中。我基本上在寻找各种选择。所以我想有多个物理表。我只需要最近5年的数据。它会更快如果我执行不同年份过滤器的5个不同版本的相同存储过程并填充表格。我知道在SSIS中可以实现并行性。我唯一的担心是因为所有五个存储过程并行运行,它们会锁定表处理SSIS中的性能问题

+0

你是什么意思“通过SSMS?” SSIS和SSMS是不同的东西 - 你能澄清吗?你是指SSIS?你只是在复制表格 - 你真的需要存储过程来提取数据吗?您多长时间需要传输这些数据?日常?每月?每小时?一旦脱落?目标数据库是否位于同一台服务器或不同的服务器上?你必须使用SSIS(BCP本地可以更快,更简单)。你的意思是“我的前端会变慢”?您是否表示您了解前端应用程序在数据传输过程中可能存在性能问题? –

+0

嗨尼克,抱歉的混乱。昨天晚上写的时候已经很晚了。我的意思是SSIS。我知道SSMS和SSIS是不同的:)。我已经有了一个每周都在进行数据迁移的SSIS包。它的计划通过Sql工作。源数据库和目标数据库位于两台不同的服务器上。我的意思是减慢应用程序的速度并不是在迁移过程中,而是在迁移结束后。如果我将数据转储到一个表中,我的前端需要查询这个拥有数十亿条记录的表,因此想把它分解成多个表 – Tom

+0

如果您的应用程序存在性能问题,那么您需要进行性能调整。即:隔离哪些查询是问题,然后应用诸如索引,分区等来改进。把一张桌子分成许多人几乎总是做错事。通过创建一堆过滤的索引或实现表分区,可以获得非常相似的效果。这使得表格对最终用户透明。 –

您可以查看sql server中的表分区方案。看起来年份栏目在你的分区功能中是一个很好的领域。

Table Partitioning in SQL Server

+0

如果我根据年份划分主表,我将如何在SSIS中配置它 – Tom

+0

我之前没有完成表分区。 periodendate字段是datefield,需要从中提取年份,因为这是过滤器。我需要过去5年的数据,每个分区应包含一年。因此,应该有一个本年度存储的表格,一张仅存储2016年年度记录的表格等。你能帮我创建Google表格分区 – Tom

+0

吗?它对您的应用程序和SSIS是透明的。你不必做任何特别的事情。这就是要点 - 它是完全透明的。你不需要有任何特殊的代码或津贴 –