Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MySqlDataAdapter.Fill()速度慢/失败_C#_Mysql_Datatable_Dataadapter - Fatal编程技术网

C# MySqlDataAdapter.Fill()速度慢/失败

C# MySqlDataAdapter.Fill()速度慢/失败,c#,mysql,datatable,dataadapter,C#,Mysql,Datatable,Dataadapter,我目前使用MySQL.Data扩展来将我的MySQL数据库信息加载到我的C#应用程序中。我使用MySqlDataAdapter.Fill()命令将数据加载到DataTable中 此解决方案适用于我的大多数表,但较大的表除外。例如,我有一个大约1310634行长的表。当我尝试用该数据填充DataTable时,应用程序将挂起并最终失败,出现异常: 异常无法从传输连接读取数据:连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立的连接失败,因为连接的主机没有响应 我已经尝试过一些解决方案,其中我

我目前使用
MySQL.Data
扩展来将我的MySQL数据库信息加载到我的C#应用程序中。我使用
MySqlDataAdapter.Fill()
命令将数据加载到
DataTable

此解决方案适用于我的大多数表,但较大的表除外。例如,我有一个大约1310634行长的表。当我尝试用该数据填充
DataTable
时,应用程序将挂起并最终失败,出现异常:

异常无法从传输连接读取数据:连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立的连接失败,因为连接的主机没有响应

我已经尝试过一些解决方案,其中我使用如下命令来增加MySQL连接的超时时间
set net\u write\u timeout=99999;设置网络读取超时=99999,但似乎没有帮助

这是到目前为止我的C#代码:

//Construct output DataTable
DataTable output = new DataTable();

MySqlDataAdapter ad = new MySqlDataAdapter(query, connection); 

try
{
    ad.FillSchema(output, SchemaType.Mapped); //Filling Columns, Types, Limitations
    ad.Fill(output); //Filling Data
    ad.Dispose();                
}
catch (Exception ex)
{ throw; }

return output;  

正如上面的评论所述,解决您的问题的最佳解决方案是重构您的解决方案。使用一些SQL SELECT语句只获取完成手头任务所需的行,而不是从数据库中获取整个表

如果您真的需要处理整个表,例如,进行SQL无法完成的某种一致性检查,那么您可以分部分加载数据,一次只选择100K行


但是,我再次怀疑同时获取超过一百万行的多个表是否是一个有效的用例,因此不应该执行…

一个明显的问题。。。您真的需要一次将超过一百万行加载到内存中吗?(另外,请注意,您的try/catch块完全是多余的。您可以通过删除它来简化代码。)这可能会对@David有所帮助。不幸的是,我正在处理一种数据同步类型的应用程序。有必要将所有内容都载入内存。我发现的奇怪的事情是,我只在运行Windows10的机器上出现超时错误(无论硬件是什么)。如果我在Windows Server 2012、Windows 7或Windows 8.1计算机上运行该应用程序,则该应用程序加载表时不会出现问题或延迟。。。。