我有一個MySQL數據表,裏面有大約5億行的數據。我們需要通過讀取這些數據來運行計算,並且計算出的數據(這是原始數據的標準化形式)需要寫入另一個InnoDB表中。InnoDB Table Bulk Insert
我們現在的設置是一個虛擬雲,其中包含一臺機器以及數據庫,因此機器數據庫連接非常快。
發生在數據上(以及讀取數據)的計算速度非常快,整個過程的瓶頸是將標準化數據插入InnoDB表(標準化數據包含一些標記,儘管不長,這會降低插入速度)。
不幸的是,我們無法修改某些系統變量,例如innodb_log_file_size(我們正在使用Amazon AWS),這有助於提高插入性能。
將所有這些數據推送到MySQL上最好的辦法是什麼?由於計算過程非常簡單,我幾乎可以編寫一個Python腳本來獲取標準化數據並以任何格式輸出。在計算過程中即時插入這些數據的過程非常緩慢,而且隨着時間的推移會變慢。
我想問題是,那麼將大量數據插入InnoDB表的最佳過程是什麼(就輸入格式和實際導入而言)?
感謝您的評論。不過,我對你指的是什麼感到困惑。我的表格(包含數據的原始表格和包含標準數據的目標表格)都在同一個MySQL實例上。我需要找到將我計算的值插入到標準表中的最快方法。請讓我知道如果還有什麼不清楚! – user1094786 2013-03-13 19:41:52
作爲您的第一張桌子,我只是將相關數據提取到一張小桌子上,計算新的字段並更新第二張桌子。我更喜歡** mysqldump ** over **創建臨時表select * from表where <> **,因爲它也會阻止鎖。 – georgecj11 2013-03-13 19:56:13