Do MySQL 5.6 giới thiệu DDL trực tuyến, nên ALTER TABLEtùy chọn có thể có ALGORITHM=INPLACEhoặc ALGORITHM=COPYđược chỉ định. Các tổng quan về DDL trực tuyến ghi chú rằng, theo mặc định, INPLACEđược sử dụng bất cứ nơi nào có thể, và ngụ ý (mà không bao giờ khá nêu nó) rằng INPLACEthuật toán là rẻ hơn so với COPYmột.
Vì vậy, lý do nào tôi sẽ phải chỉ định ALGORITHM=COPYtrên một ALTER TABLEtuyên bố?
OPTIMIZE TABLE(mà tôi tin rằng có các chỉ số chống phân mảnh là một phần lớn trong mục đích của nó ) sử dụng ALGORITHM=INPLACEcho MySQL 5.7.4. Vì vậy, tôi nghĩ rằng đó là trường hợp, vâng, COPY không phân mảnh chỉ mục, nhưng cũng vậyINPLACE (bằng cách nào đó), vô hiệu hóa nó như là một lợi thế tiềm năng của COPY.
ALTER TABLE ... ALGORITHM=INPLACEcho các bảng bao gồm các cột tạm thời (DATE, DATETIME hoặc TIMESTAMP) và chưa được xây dựng lại bằng cách sử dụng ALTER TABLE ... ALGORITHM=COPY" ... Hạn chế của DDL trực tuyến