将数据从MongoDB迁移到SQL Server,性能随着时间的推移而降低

问题描述:

我希望使用C#驱动程序将数据从MongoDB传输到SQL Sever。 三个集合中的数据大小约为20,000,000。我使用3线程 读取它和3个线程插入到3个不同的SQL Server表。将数据从MongoDB迁移到SQL Server,性能随着时间的推移而降低

阅读大约70,000,000个文档后,性能变得更糟,速度大约是之前的十分之一,并且网络带宽下降了0.1%。

如何防止性能下降?

尝试在单个线程上顺序迁移每个集合。该操作将是IO绑定而不是CPU绑定,因此多线程运行将更可能降低性能并增加数据库中的资源争用和上下文切换。

也看看你的SQL Server数据库磁盘写入。这可能是硬盘缓存正在使用,但随着缓存刷新到磁盘写入速度变慢。

+0

谢谢@Fulstow。对于一个集合,我使用一个线程从mongoDB中读取数据,一个线程将数据插入到SQLServer.Network带宽约为50%,4.2MB/s。速度可以保持10分钟左右,然后降到零, lastfallen 2012-03-21 02:05:22

+0

你的SQL表有没有索引?随着时间的推移,插入可能会减慢。 – 2012-03-21 02:14:49

+0

SQL表具有索引。我使用一个带宽应用来监控下载和上传速度。下载速度是从mongoDB读取数据的速度。它在大约10分钟后也下降。我使用游标来从mongoDB中枚举文档。我认为原因是游标因超时而被破坏。 – lastfallen 2012-03-21 02:37:26