Оскільки MySQL 5.6 представив онлайн-DDL, ALTER TABLEкоманда може необов'язково мати ALGORITHM=INPLACEабо ALGORITHM=COPYвказати. Огляд онлайн DDL зазначає , що, за замовчуванням, INPLACEвикористовується всюди , де це можливо, і передбачає (ніколи не цілком виклавши його) , що INPLACEалгоритм дешевше , ніж COPYодин.
Отже, яку причину мені колись доведеться вказати ALGORITHM=COPYу ALTER TABLEзаяві?
OPTIMIZE TABLE(як я вважаю, дефрагментація індексів є значною частиною його призначення ) використовує ALGORITHM=INPLACEMySQL 5.7.4. Так що я думаю , що це так , що, так, COPY робить індекси дефрагментировать, але так самоINPLACE (як - то), зводить на немає його як потенційне перевагу COPY.
ALTER TABLE ... ALGORITHM=INPLACEтаблиці, що містять тимчасові стовпці (DATE, DATETIME або TIMESTAMP) і не були відновлені за допомогою ALTER TABLE ... ALGORITHM=COPY" ... Обмеження Інтернет DDL