Tôi có một bảng cơ sở dữ liệu như dưới đây:Làm thế nào để chèn 20 triệu bản ghi vào cơ sở dữ liệu MySql càng nhanh càng tốt
create table temperature
(id int unsigned not null auto_increment primary key,
temperature double
);
Và trong chương trình của tôi, tôi có khoảng 20 triệu nhiệt độ để chèn vào bảng. Tôi lo lắng trong môi trường .Net, sử dụng Connector/Net kết nối với MySql. Các mã được như dưới đây:
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();
Làm thế nào tôi có thể chèn nhiều dòng dữ liệu càng nhanh càng tốt? (Nó chỉ có thể chèn 2000 bản ghi mỗi phút trong máy tính của tôi.)
Tôi hơi tò mò. Tại sao bạn chèn 20 triệu nhiệt độ trong một DB? –
Bạn có cần autoincrement? Tôi có một tình huống tương tự (trên máy chủ sql) và tôi quản lý các bên khách hàng gia tăng phím trên bộ nạp. Tôi mange 75.000 hàng mỗi giây trên phần cứng hiện tại của tôi. Không có SQL, mặc dù ... – TomTom
Cũng sql của bạn "sucks";) bạn có thể không gửi nhiều câu lệnh chèn trong một lần chạy không? Nó là một chuỗi - mysql có thể xử lý hthat? 10 lượt đi cho mỗi chuyến đi khứ hồi là 10% các chuyến đi khứ hồi. Threads thêm moer vào đó (tải đa luồng). – TomTom