-1

我們有一個產品,需要我們公司的職員批准後才能向數據庫表中寫入超過1000條記錄。一次寫入這些記錄的傳統方式可以是循環或MySQL批量直接插入到表中。將1000多條記錄寫入數據庫表的最有效方式

除此之外,我還有幾個表正在由CRON工作檢查,並且一次更新2000個記錄的另一個表。

我很想知道是否應該繼續進行MySQL批量插入(這是對性能的影響),還是使用像Kafka這樣的事件處理工具?

想知道您的意見。

預先感謝您。

+1

千條記錄不應該花這麼長時間。你有沒有測量性能影響? – ceejayoz

+0

我沒有測試性能比較,因爲我們沒有足夠的資源。現在的問題是,在將所有數據寫入一張表後,隨着時間的推移,閱讀也會消耗時間。想知道是否應該堅持使用MySQL或者使用nosql,因爲此表將用於讀取數據。你怎麼看? –

+1

我認爲你會跳到不必要的優化。如果索引正確並在正確的硬件上,MySQL可以處理數十億行。對於您沒有資源來運行批量插入一次或兩次以查看需要多長時間 - 確實比採用NoSQL或添加Kafka需要更少的資源,我對此感到有點困惑。 – ceejayoz

回答

1

我感覺到了一招,可以比LOAD DATA速度加快這,這可能是最快的...

「一旦被批准......」 - 這是否意味着你必須將數據圍坐在某處,你想「按下一個按鈕」,讓他們添加到一個特定的表?如果是這樣,...

將它們預加載到另一個表中。然後讓這個查詢準備好運行:

INSERT INTO real_table 
    SELECT * FROM pending_table; 

但是......列是否正確排列?有沒有重複密鑰?如果是這樣,你需要更新的東西?見IODKU。等

我建議你在一天到來之前測試過程。如果失敗可能會令人尷尬。

+0

正確。數據將放在桌子上。我們每週的一名員工將批准這些數據。它應該被推到這個新表。新表格不是初始表格的精確副本。它將更像是一個審計表,它將有較少的列但具有不同的列名。 –

相關問題