Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mengoptimumkan Sisipan Baris Pangkalan Data MySQL untuk Prestasi Lebih Pantas?

Bagaimanakah Saya Boleh Mengoptimumkan Sisipan Baris Pangkalan Data MySQL untuk Prestasi Lebih Pantas?

Patricia Arquette
Patricia Arquetteasal
2024-11-26 10:30:10553semak imbas

How Can I Optimize MySQL Database Row Insertion for Faster Performance?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn