修改MySQL表
回答
直覺說,你應該避免修改表。另一種方法是將列添加到新表中並鏈接到原始表以保持參照完整性,因此原始表保持不變。
另一種相當典型的方法是創建一個添加了列的新表,將它與舊錶互換,然後將數據添加回新表。雖然不是很好的解決方案。
MySQL大師可能會不同意我。
那麼,如果只插入我認爲最好的是:
CREATE TABLE the_table_copy LIKE the_table;
ALTER TABLE the_table_copy ADD new_field VARCHAR(60);
RENAME TABLE the_table TO the_table_backup;
RENAME TABLE the_table_copy TO the_table;
但首先做它的一個副本,如果速度不夠快與副本嘗試。然後在真實的生活中做! :)
那麼,我會鎖定表,添加字段,解鎖表。接下來會出現一些延遲,但我想這不會太麻煩。
我很確定添加字段的DDL會自動鎖定表。 –
當你說「添加一個字段」,你正在創建新的列,或只是更新列中的值?兩者是完全不同的東西。如果僅更新列,請更改數據模型以支持同一表中同一行的多個版本,並在表的末尾添加新行。這爲您提供了最佳的讀寫併發性。
除此之外,您可以看看「處理程序套接字」方法。 http://yoshinorimatsunobu.blogspot.com/search/label/handlersocket
添加一個不更新列的值的新列 – Tarek
如果您只需要添加一列,則沒有理由要求停機。該表將在ALTER TABLE語句(毫秒)期間被鎖定。在此期間提交的任何DML都必須等待,因此它可能會短暫影響性能,但不應該導致任何異常,除非代碼在某處明確檢查鎖定。
毫秒?請告訴我如何添加一列到我的300M行,50GB表(以毫秒爲單位)(庫存mysql)。 –
- 1. MySQL表修改時間戳
- 2. Javascript修改mySQL數據/表
- 3. Mysql查詢修改
- 4. MySQL查詢修改
- 5. MySql:知道表最後修改日期
- 6. MYSQL [用戶表修改帶來錯誤]
- 7. 使用Node.js修改MySQL表格
- 8. 修改MySQL表中的值空間
- 9. 使用BASH數組修改MySQL表格
- 10. 修剪MySQL表
- 11. 修改列表
- 12. 修改列表
- 13. 列表修改
- 14. 修改sql表
- 15. 修改表格
- 16. 修改表只
- 17. 修改表列
- 18. 列表修改
- 19. 修改表asp.net
- 20. 修改表值
- 21. mysql查詢需要修改
- 22. 修改由SELECT與MySQL/PHP
- 23. 修改排在MySQL中
- 24. 修改php oop mysql查詢
- 25. MySQL不可修改的列?
- 26. 修改MySQL索引數
- 27. MySQL修改數據問題
- 28. 修改MySQL的WHERE PARAMS
- 29. mysql - 修改唯一密鑰
- 30. 修改MySQL的入門
你想做什麼樣的修改? – Ryan
添加新字段 – Tarek
記錄是僅插入到該表中還是該表上還有一個SELECT? – FeRtoll