首頁 > 資料庫 > mysql教程 > 如何優化 MySQLi 中的批量資料插入以提高速度和安全性?

如何優化 MySQLi 中的批量資料插入以提高速度和安全性?

Susan Sarandon
發布: 2024-12-31 13:28:11
原創
768 人瀏覽過

How Can I Optimize Bulk Data Insertion into MySQLi for Speed and Security?

MySQLi 中批次值插入的增強技術

當面臨安全地將大量值插入MySQL 資料庫的任務時,開發人員經常訴諸重複的準備好的語句,這對於大型資料集來說可能非常耗時。本文探討了一種在不影響 SQL 注入安全性的情況下增強效能的技術。

問題:堆疊溢位和緩慢插入

一種常見的方法是在循環中分別插入每個值。但是,當資料集很大時,此方法可能會導致堆疊溢位或執行速度變慢。

$array = ["array", "with", "about", "2000", "values"];

foreach ($array as $one) {
    $query = "INSERT INTO table (link) VALUES (?)";
    $stmt = $mysqli->prepare($query);
    $stmt->bind_param("s", $one);
    $stmt->execute();
    $stmt->close();
}
登入後複製

解決方案:事務和最佳化執行

最佳化上面的程式碼,我們可以採用事務和改進執行的組合策略:

$array = ["array", "with", "about", "2000", "values"];
$query = "INSERT INTO table (link) VALUES (?)";
$stmt = $mysqli->prepare($query);
$stmt->bind_param("s", $one);

$mysqli->query("START TRANSACTION");
foreach ($array as $one) {
    $stmt->execute();
}
$stmt->close();
$mysqli->query("COMMIT");
登入後複製

實作細節:

  • 交易:我們在插入值之前啟動一個事務並在完成後提交它值被插入。這確保瞭如果在插入過程中發生任何錯誤,更改將被回滾。
  • 最佳化執行:我們將準備好的語句和綁定運算移到迴圈之外。這減少了每次插入值時準備語句的開銷。

效能評估

10,000 次迭代的測試顯示使用事務時效能顯著提高:

  • 沒有交易時效能顯著提高:
  • 沒有交易:~ 226秒

有事務:~2秒

這種最佳化技術提供了兩個數量級的速度提升,使其成為 MySQL 中批次值插入的高效且安全的解決方案使用 MySQLi 的資料庫。

以上是如何優化 MySQLi 中的批量資料插入以提高速度和安全性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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