Mengoptimumkan Sisipan Baris Pangkalan Data MySQL untuk Prestasi Cekap
Cabaran untuk memasukkan volum besar baris dengan cekap ke dalam pangkalan data MySQL sudah terkenal. Walaupun coretan kod yang disediakan menggunakan sisipan individu mungkin biasa, ia menunjukkan kesesakan prestasi. Walau bagaimanapun, terdapat pendekatan alternatif yang boleh meningkatkan kelajuan sisipan secara mendadak.
Sisipan Berbilang Baris
Daripada melakukan sisipan berasingan untuk setiap baris, ia adalah lebih cekap untuk kumpulkan berbilang baris ke dalam satu pernyataan sisipan. Teknik ini dilaksanakan dalam kod semakan berikut:
public static void BulkToMySQL() { string ConnectionString = "server=192.168.1xxx"; StringBuilder sCommand = new StringBuilder("INSERT INTO User (FirstName, LastName) VALUES "); using (MySqlConnection mConnection = new MySqlConnection(ConnectionString)) { List<string> Rows = new List<string>(); for (int i = 0; i < 100000; i++) { Rows.Add(string.Format("('{0}','{1}')", MySqlHelper.EscapeString("test"), MySqlHelper.EscapeString("test"))); } sCommand.Append(string.Join(",", Rows)); sCommand.Append(";"); mConnection.Open(); using (MySqlCommand myCmd = new MySqlCommand(sCommand.ToString(), mConnection)) { myCmd.CommandType = CommandType.Text; myCmd.ExecuteNonQuery(); } } }
Peningkatan Prestasi
Pendekatan ini menghasilkan pengurangan ketara dalam masa sisipan. Kod asal memerlukan 40 saat untuk memasukkan 100k baris, manakala kod yang disemak menyelesaikan tugas hanya dalam 3 saat, peningkatan lebih 90%!
Penjelasan
The kunci kepada peningkatan kecekapan ini terletak pada meminimumkan pangkalan data perjalanan pergi dan balik. Dengan mengumpulkan berbilang baris ke dalam satu pernyataan, kami mengurangkan overhed yang berkaitan dengan mewujudkan dan menutup berbilang sambungan pangkalan data. Pangkalan data kemudiannya boleh memproses keseluruhan kumpulan sisipan sebagai satu operasi, menghapuskan keperluan untuk pelaksanaan berasingan untuk setiap baris.
Pertimbangan Keselamatan
Adalah penting untuk sentiasa melindungi daripada suntikan kod semasa membina pernyataan SQL. Penggunaan MySqlHelper.EscapeString dalam kod yang disediakan memastikan bahawa input yang berpotensi berniat jahat dilepaskan dengan selamat, menghalang kelemahan suntikan SQL.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengoptimumkan Sisipan Baris Pangkalan Data MySQL untuk Prestasi Lebih Pantas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!