以最佳效能將資料表批次複製到MySQL
將專案從Microsoft SQL Server 遷移到MySQL 可能會遇到大量資料複製的挑戰。這是因為 Microsoft 系統中常見的 SqlBulkCopy API 不能直接用於 MySQL。
批量複製替代方案
一種替代方案是使用MySqlBulkLoader 類,但是這涉及將資料匯出到CSV 文件,然後再匯入,這可能會導致效能瓶頸。
使用 MySqlDataAdapter 的最佳化方法
但是,更有效的方法可以是透過在事務中利用 MySqlDataAdapter 的 Update() 方法來利用。此方法允許以可配置的更新批量大小進行批量插入,從而顯著減少執行時間。
程式碼範例
以下是使用MySqlDataAdapter 方法的最佳化範例:
<code class="csharp">using (MySqlTransaction tran = conn.BeginTransaction(System.Data.IsolationLevel.Serializable)) { using (MySqlCommand cmd = new MySqlCommand()) { cmd.Connection = conn; cmd.Transaction = tran; cmd.CommandText = "SELECT * FROM testtable"; using (MySqlDataAdapter da = new MySqlDataAdapter(cmd)) { da.UpdateBatchSize = 1000; using (MySqlCommandBuilder cb = new MySqlCommandBuilder(da)) { da.Update(rawData); tran.Commit(); } } } }</code>
與MySqll與使用MySqlBulkLoader 相比,MySqlDataAdapter 方法在執行速度方面表現較好。批次插入 100,000 行的測試顯示,使用 MySqlDataAdapter 的執行時間為 30 秒,而 MySqlBulkLoader 在 5-6 秒內完成了這個過程。
結論對於為了將 DataTables 有效地批次複製到 MySQL,請考慮在交易中使用 MySqlDataAdapter 的 Update() 方法。這種方法可提供最佳效能,無需中間 CSV 匯出和匯入,從而實現更快、更有效率的資料遷移。
以上是如何有效率地將資料表批量複製到MySQL?的詳細內容。更多資訊請關注PHP中文網其他相關文章!