Как работает / выполняется оценка MySQL RENAME TABLE? - PullRequest
3 голосов
/ 20 мая 2009

MySQL имеет состояние RENAME TABLE, которое позволит вам изменить имя таблицы.

В руководстве упоминается

Операция переименования выполняется атомарно, что означает, что никакой другой сеанс не может получить доступ к любой из таблиц во время переименования

Руководство не содержит (насколько мне известно), как это переименование осуществляется. Создана ли полная копия таблицы с новым именем, а затем удалена старая таблица? Или MySQL за кулисами делает какое-то волшебство, чтобы быстро переименовать таблицу?

Другими словами, влияет ли размер таблицы на продолжительность выполнения оператора таблицы RENAME. Существуют ли другие вещи, которые могут привести к значительному блокированию переименования блока?

Ответы [ 2 ]

5 голосов
/ 20 мая 2009

Я считаю, что MySQL нужно только изменить метаданные и ссылки на старое имя таблицы в хранимых процедурах - количество записей в таблице не должно иметь значения.

1 голос
/ 20 мая 2009

В дополнение к изменению метаданных, он также переименовывает связанный файл .FRM. Хотя они могут утверждать, что это «атомарная» операция, это фактический комментарий в коде для функции mysql_rename_tables ...

/* Lets hope this doesn't fail as the result will be messy */

=)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...