我想從MyISAM更改200萬行表的引擎到InnoDB。我害怕這種長時間的操作,所以我創建了類似結構的InnoDB表,現在我想將舊數據的所有數據都複製到這個新數據表中。什麼是最快的方式? SELECT INSERT?那麼START TRANSACTION呢?請幫忙。我不想掛我的服務器。MySQL更改引擎千萬行表
0
A
回答
0
幫你一個忙:將整個設置複製到你的本地機器,並嘗試一切。你將會更好地瞭解你正在進入的領域。只需注意生產服務器和本地計算機之間硬件的潛在差異。
最快的方式可能是最簡單的方法:
INSERT INTO table2 SELECT * FROM table1;
0
我懷疑你不能做任何比內置在ALTER更快。它必須複製所有數據並重建所有索引。
請務必提供innodb_buffer_pool_size
以準備InnoDB。和更低的空間key_buffer_size
。分別建議RAM的35%和12%用於轉換。所有表格轉換後,建議70%和20MB。
一個輕微的加速是做一些選擇,提取整個表和整個PRIMARY KEY
(如果它可以被緩存)。這會在真正開始之前做一些I/O操作。例如:SELECT avg(id) FROM tbl
其中id是主鍵。 SELECT avg(foo) FROM tbl
其中foo未編入索引,但爲數字。這將強制對PK索引和數據進行全面掃描,從而緩存ALTER
必須讀取的內容。
相關問題
- 1. 意外的MySQL表引擎更改?
- 2. MYSQL批量更改表引擎
- 3. 在更新1個千萬行
- 4. 格式化值到千千萬萬
- 5. 我應該正常化2千萬行×2列MySQL表
- 6. MySQL表引擎
- 7. 將mysql默認引擎更改爲innodb
- 8. 帶有外鍵的MySQL更改引擎
- 9. MySQL存儲過程,千萬不要引發錯誤?
- 10. 即時更換MySQL表引擎
- 11. mysql - 將表引擎從innoDB更改爲MyISAM
- 12. 更改MySQL表的存儲引擎的查詢超時
- 13. 將MySQL默認表引擎從MyISAM更改爲InnoDB
- 14. Aruba-MySQL:無法創建/更改引擎表= INNODB
- 15. MYSQL從INNODB到MYISAM的表更改存儲引擎
- 16. 在Mysql中更改表的存儲引擎
- 17. 在導入時更改mysql表存儲引擎
- 18. Symfony 2搜索成千上萬行
- 19. 爲成千上萬行的每個網站用戶(成千上萬)製作SQL表?
- 20. MySQL的:更好的幾桌數以百萬計表中的行或數以千計的行
- 21. 千萬不要去WebSecurityConfigurerAdapter
- 22. 如何在表格有成千上萬行時在UITableView中滾動得更快?
- 23. 從數千行的HTML表格中更新MySQL表格
- 24. 優化mysql表更新百萬記錄
- 25. 30萬行MySQL中
- 26. MySQL:擁有100多萬行的索引表
- 27. 大型表(超過1000萬行)的Mysql索引
- 28. Mysql:百萬條記錄,每天1000萬更新表
- 29. 將引擎類型更改爲MyISAM未知引擎
- 30. 規則引擎從經典更改爲決策規則引擎
安排停機時間。 – ajreal