mysql跨庫批量更新大批量資料的思路

2021-10-01 18:39:58 字數 535 閱讀 7177

需求是這樣的,在a資料庫例項中定時讀取大批量資料(這裡暫定20w),然後在b資料庫例項中,將讀取的20w資料寫入b資料庫例項中的表(表裡有3000w的資料),插入前判斷條件使用者id,存在更新,不存在則插入。

如果是幾萬條以下的資料,這很簡單。讀取資料--foreach --- 查詢是否存在---更新或插入。

但是真是情況是千萬級別的資料。這樣做非要挑戰語言的承受能力和伺服器配置的底線啊。必崩盤

搞了一天,總結出幾個關鍵的解決點

利用 insert ... on duplicate key update statement

直接使用shell執行大批量sql語句

好。有了方向就可以穿插起來

1方案有前提條件,就是這a資料庫讀取的字段需要在b資料庫中對應的至少乙個欄位是唯一的。額。。。好像有點繞,意思就是能觸發 on duplicate key ,這個看自己已經建好的資料庫是否方便更改,我們就是不方便所以沒有使用該方案。

這兩個方案效率都可以,資料這10-20左右,具體看你伺服器配置了

mysql大批量更新資料

大批量的更新資料如果再使用傳統的 update 方法一條一條的更新,效率是很慢的,而且效能差,也很容易造成阻塞。1 使用mysql 自有的語句構建批量更新 update tble set price case id when 16 then 7.6 when 19 then 8.86 when 20...

MySQL大批量插入資料

1.對於myisam型別的表,可以通過以下方式快速的匯入大量的資料。alter table tblname disable keys loading the data alter table tblname enable keys 這兩個命令用來開啟或者關閉myisam表非唯一索引的更新。在匯入大量...

Spring Hibernate處理大批量資料

原文 關於使用spring hibernate進行大批量資料的插入和更新,它的效能和使用jdbc preparedstatement的batch批量操作以及資料庫的儲存過程操作幾乎可以一樣高。在hibernate的官方文件裡說到了batchprocessing。spring hibernate大批量...