gpt4 book ai didi

用于批量传输的 MySqlDataAdapter 或 MySqlDataReader?

转载 作者:行者123 更新时间:2023-11-29 04:59:34 26 4
gpt4 key购买 nike

我正在使用 .NET 的 MySql 连接器将数据从 MySql 服务器复制到 SQL Server 2008。

有没有人在使用以下其中一项时体验到比其他项更好的性能?

  • DataAdapter 并以 500 block 为单位调用 Fill 到 DataTable
  • DataReader.以 500 次循环读取 DataTable

然后我使用 SqlBulkCopy 加载 500 个 DataTable 行,然后继续循环直到 MySql 记录集完全传输。

我主要关心的是使用合理的内存量并在短时间内完成。

如有任何帮助,我们将不胜感激!

最佳答案

我没有使用过 SqlBulkCopy,但根据一般经验,DataReader 通常会提供更好的性能。

可以在底层查询仍在返回记录时处理 DataReader(因此您不必等待查询完成就可以开始处理数据)。 DataReader 将在数据可用时立即返回数据,我相信默认情况下只会将事件记录存储在内存中(而不是完整的结果集),从而减少内存使用。

DataAdapter 将完整的结果集加载到 DataTable/DataSet 中,由于信息在内存中的存储方式和额外的关联状态(想想行状态等),这将具有更高的开销。

如果我只读取数据,我将始终使用 DataReader 而不是 DataAdapter...如果我在任何一点上有误,请有人纠正我?

无论如何,SqlBulkCopy 似乎只迭代记录并且不使用 DataTable 进行任何优化(根据 Reflector),所以我认为 DataReader 是您最好的选择。

关于用于批量传输的 MySqlDataAdapter 或 MySqlDataReader?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2768828/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com