我正在使用带有 .net 连接器 6.5.4 的 MySQL5.6.9-rc 将数据插入到具有两个字段(整数 ID、整数数据、ID 是主键)的表中。将 2000 行插入表中非常慢(大约 35 秒)(UpdateBatchSize = 1 和 UpdateBatchSize = 500 没有太大区别),我也尝试了连接器 6.6.4,问题仍然存在。
但是,使用 MySQL5.4.3 和连接器 6.20 速度很快,如果将 UpdateBatchSize 设置为 500,则只需一秒钟即可将 2000 行插入表中(如果 UpdateBatchSize = 1,它也很慢)。然后我用 MySQL5.4.3 和连接器 6.5.4 或 6.6.4 测试它,它很慢!
我编写了插入数据的代码,如下所示,使用 mysql6.6.9 和连接器 6.54、Windows XP 和 VS2008 运行它。
public void Test()
{
MySqlConnection conn = new MySqlConnection("Database=myDatabase;Server=localhost;User Id=root;Password=myPassword");
string sql = "Select * from myTable";
MySqlDataAdapter adapter = new MySqlDataAdapter(sql, conn);
adapter.UpdateBatchSize = 500;
MySqlCommandBuilder commandBuilder = new MySqlCommandBuilder(adapter);
DataTable table = new DataTable();
adapter.Fill(table); //it is an empty table
Add2000RowsToTable(table);
int count = adapter.Update(table); //It took 35 seconds to complete.
adapter.Dispose();
conn.Close();
}
private void Add2000RowsToTable(DataTable table)
{
DataRow row;
for (int i = 0; i < 2000; i++)
{
row = table.NewRow();
row[0] = i;
row[1] = i;
table.Rows.Add(row);
}
}
在我看来,MySqlDataAdapter.UpdateBatchSize 不适用于连接器 6.5.4 和 6.64,我的代码有问题吗?
提前致谢