我需要將一個表的內容複製到另一個表中。所以,我開始使用:大型靜態表上的MySQL INSERT SELECT
INSERT new_table SELECT * FROM old_table
不過,我現在收到以下錯誤:
1297, "Got temporary error 233 'Out of operation records in transaction coordinator (increase MaxNoOfConcurrentOperations)' from NDBCLUSTER"
我想我有一個瞭解爲什麼發生這種情況:我的表是巨大的,MySQL試圖採取及時快照(鎖定所有內容並使其中一筆大筆交易)。
但是,我的數據相當靜態,沒有其他併發會話會修改數據。我怎麼能告訴MySQL一次只複製一行,或者更小的塊,而不鎖定整個事物?
編輯說明:我已經知道我可以將整個表逐行讀入內存/文件/轉儲並回寫。我很想知道是否有簡單的方法(可能設置隔離級別?)。請注意,引擎是InnoDB。
謝謝。這聽起來很有趣。你可以提供一個示例SQL過程或命令我怎麼做? – 2012-08-14 06:22:22