我有一個數據庫表如下圖所示:如何插件20萬人次的紀錄到MySql數據庫儘可能快
create table temperature
(id int unsigned not null auto_increment primary key,
temperature double
);
而在我的節目,我得到了2000萬左右的溫度要插入到表中。 我在.Net環境中工作,使用Connector/Net連接到MySql。代碼如下:
List<double> temps = new List<double>();
...
string connStr = "server=localhost;user=name;database=test;port=3306;password=*****;";
MySqlConnection conn = new MySqlConnection(connStr);
try
{
conn.Open();
//temps.Count is about 20 million
for (int i = 0; i < temps.Count; i++)
{
string sql1 = "INSERT INTO temperature VALUES (null, "+temps[i]+")";
MySqlCommand cmd1 = new MySqlCommand(sql1, conn);
cmd1.ExecuteNonQuery();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
conn.Close();
如何插入如此多的行數據儘可能快? (它只能插入我的計算機2000條記錄每分鐘)。
我有點好奇。爲什麼要在數據庫中插入20百萬個溫度? –
你需要自動增量嗎?我有類似的情況(在SQL服務器上),我在加載器上管理增量密鑰客戶端。我在當前的硬件上每秒處理75,000行。沒有SQL,雖然... – TomTom
也是你的SQL「糟糕」;)你不能在一次運行中提交多個插入語句嗎?它是一個字符串 - 可以mysql處理hthat嗎?往返行程10次,每程往返10%。 THreads添加莫爾(多線程負載)。 – TomTom