MySQL插入1000萬條數據,用PHP如何做才能保證性能的最優

插入大量數據時,確保性能最優是很重要的。下面是幾種在 PHP 中快速向 MySQL 插入大量數據的優化方案:使用多行插入:
最簡單的方法是使用多行插入語句,將多條記錄一次性插入到數據庫。這比逐條插入要快得多,因爲減少了連接和查詢的開銷。

$values = [];
for ($i = 0; $i < 10000000; $i++) {
    $values[] = "('$i', 'data')";
}

$valuesStr = implode(',', $values);
$query = "INSERT INTO your_table (column1, column2) VALUES $valuesStr";
mysqli_query($connection, $query);
使用預處理語句:
預處理語句可以減少 SQL 解析和編譯的次數,從而提高性能。使用 mysqli 擴展的預處理功能。
$stmt = $connection->prepare("INSERT INTO your_table (column1, column2) VALUES (?, ?)");
for ($i = 0; $i < 10000000; $i++) {
   $stmt->bind_param("ss", $i, "data");
   $stmt->execute();
}

 

 

批量提交事務:
將插入操作放在一個事務中,然後批量提交事務。這可以顯著提高性能,因爲將多個插入操作合併到一個事務中可以減少磁盤寫入次數。
mysqli_autocommit($connection, false);
for ($i = 0; $i < 10000000; $i++) {
   $query = "INSERT INTO your_table (column1, column2) VALUES ('$i', 'data')";
   mysqli_query($connection, $query);
}
mysqli_commit($connection);
mysqli_autocommit($connection, true);
使用 LOAD DATA INFILE:
MySQL 提供了 LOAD DATA INFILE 命令,可以更高效地導入大量數據。您可以將數據存儲在文本文件中,然後使用這個命令導入。
$filename = 'data.txt';
$query = "LOAD DATA INFILE '$filename' INTO TABLE your_table (column1, column2)";
mysqli_query($connection, $query);
使用專業工具:
對於處理海量數據,有一些專業工具可以更好地優化性能,如 mysqldumpmysqlimport 等。這些工具在導入大數據集時可能會更高效。請注意,以上示例中的代碼只是演示,您需要根據您的實際情況進行適當的調整和測試。在插入大量數據時,還需要注意數據庫的性能配置,如適當的緩衝區設置、索引的優化等。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章