Do MySQL 5.6 giới thiệu DDL trực tuyến, nên ALTER TABLE
tùy chọn có thể có ALGORITHM=INPLACE
hoặ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 INPLACE
thuật toán là rẻ hơn so với COPY
một.
Vì vậy, lý do nào tôi sẽ phải chỉ định ALGORITHM=COPY
trên một ALTER TABLE
tuyê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=INPLACE
cho 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=INPLACE
cho 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