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

Patricia Arquette
Lepaskan: 2024-11-26 10:30:10
asal
462 orang telah melayarinya

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();
        }
    }
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan