簡體   English   中英

在MySQL中批量插入和更新多個表中的行的最佳方法

[英]Best way to bulk insert and update rows in multiple tables in mysql

我喜歡10個表插入,每個插入有1個1000條甚至10萬條記錄,並且還有4條表更新。 基本上,對於10萬條記錄,將插入100萬條記錄,並進行40萬條更新,並且每小時可以運行一次。 而且主要的限制是整個10個表插入和4個表更新必須在一個事務中。

我讀了幾種方法,為了處理更新,我可能會使用一個臨時表並將所有必須更新的ID轉儲到該表中,然后使用與該臨時表的聯接從更新到的REAL表中進行操作。完成。 但是我仍然沒有有效的解決方案來批量插入10張桌子。 它正在消耗大量時間。 LOAD_DATA文件是一個選項,但不是實時提供的一個不錯的選擇,我可能最終會創建數十萬個文件,因為此操作將在許多數據庫和范圍內進行。 請提出您的建議,以提高這些批量插入的速度。

我打算在mysql中更改“ bulk_insert_buffer_size”以及任何其他有用的參數。 所以任何建議都會對我有很大幫助

您如何嘗試進行這些批量插入? 您是否正在使用某些客戶端GUI(例如phpMyAdmin)? 請嘗試在MySQL客戶端提示符下運行SQL。

abhay> mysql -u<your_user> -h<your_host> -p < <path_to_your_sql_file> 

這應該足夠快以執行所有INSERT和UPDATES。 請切記將實際值放在適用的地方。 並且該SQL文件應包含有效的INSERT和UPDATE語句。

幾點建議:

  1. 您可以嘗試在SQL文件的開頭添加SET foreign_key_checks = 0 ,並在末尾添加SET foreign_key_checks = 1
  2. 如果您的表有很多索引,則暫時禁用它們可能會有所幫助。 嘗試使用ALTER TABLE...DISABLE KEYSALTER TABLE...ENABLE KEYS
  3. 您甚至可以選擇拆分為多個SQL文件,每個表一個

希望能幫助到你!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM