Rumah  >  Artikel  >  pangkalan data  >  Bagaimanakah Penyalinan Pukal Jadual Data Boleh Dicapai dalam MySQL Sambil Mengekalkan Prestasi?

Bagaimanakah Penyalinan Pukal Jadual Data Boleh Dicapai dalam MySQL Sambil Mengekalkan Prestasi?

DDD
DDDasal
2024-10-24 06:14:02839semak imbas

How Can Bulk Copying of DataTables Be Achieved in MySQL While Maintaining Performance?

Menggunakan MySQLBulkLoader untuk Menyalin Pukal Jadual Data

Soalan

Dalam peralihan daripada Microsoft SQL Server kepada MySQL, bagaimanakah boleh pukal penyalinan Jadual Data boleh dicapai tanpa mengorbankan prestasi?

Jawapan

Walaupun nampaknya intuitif untuk mengelak daripada menulis pada fail CSV sebelum memasukkan data, penanda aras prestasi menunjukkan sebaliknya. Menggunakan kelas MySqlBulkLoader untuk memuatkan data secara pukal daripada fail CSV dengan ketara mengatasi prestasi sisipan langsung dengan MySqlDataAdapter.

Pelaksanaan:

<code class="csharp">string tempCsvFileSpec = @"C:\Users\Gord\Desktop\dump.csv";

using (StreamWriter writer = new StreamWriter(tempCsvFileSpec))
{
    Rfc4180Writer.WriteDataTable(rawData, writer, false);
}

var msbl = new MySqlBulkLoader(conn);
msbl.TableName = "testtable";
msbl.FileName = tempCsvFileSpec;
msbl.FieldTerminator = ",";
msbl.FieldQuotationCharacter = '"';
msbl.Load();

System.IO.File.Delete(tempCsvFileSpec);</code>

Kod ini membuang Jadual Data ke dalam fail CSV sementara, memuatkan data secara pukal, dan kemudian memadamkan fail tersebut. Penandaarasan menunjukkan bahawa pendekatan ini hanya mengambil masa 5-6 saat, termasuk masa untuk operasi I/O fail. Sebaliknya, sisipan terus dengan MySqlDataAdapter mengambil masa kira-kira 30 saat.

Atas ialah kandungan terperinci Bagaimanakah Penyalinan Pukal Jadual Data Boleh Dicapai dalam MySQL Sambil Mengekalkan Prestasi?. 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