MySQL如何在保證效能的情況下實現資料表的批次複製?

DDD
發布: 2024-10-24 06:14:02
原創
904 人瀏覽過

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

使用MySQLBulkLoader 批次複製資料表

問題

從Microsoft SQL Server 過渡到My 時,如何複製資料表可以在不犧牲效能的情況下實現資料表的複製嗎?

答案

雖然在插入資料之前避免寫入 CSV 檔案似乎很直觀,但效能基準表明情況並非如此。使用 MySqlBulkLoader 類別從 CSV 檔案批次載入資料明顯優於使用 MySqlDataAdapter 直接插入。

實作:

<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>
登入後複製

此程式碼將 DataTable 轉儲到臨時 CSV 文件,批次載入數據,然後刪除該檔案。基準測試表明,這種方法只需要 5-6 秒,包括檔案 I/O 操作的時間。相比之下,使用 MySqlDataAdapter 直接插入大約需要 30 秒。

以上是MySQL如何在保證效能的情況下實現資料表的批次複製?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板