RENAME быстрее, чем DROP + ADD в таблице изменения MySQL - PullRequest
0 голосов
/ 05 октября 2009

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

Некоторые столбцы для удаления имеют тот же тип, что и добавляемые. Будет ли процедура быстрее, если я воспользуюсь этим и повторно использую некоторые из существующих столбцов?

Мое обоснование состоит в том, что изменение имен столбцов должно быть простым изменением метаданных таблицы, тогда как удаление и добавление столбцов означает либо поиск места в конце файла (фрагментация данных), либо перестроение каждой строки с правильными столбцами, чтобы они в том же месте на диске.

Движок, о котором идет речь, - MyISAM, и я не собираюсь расспрашивать, как именно он будет с этим обращаться, поэтому я хотел бы услышать от любого, кто был в той же ситуации раньше!

Ответы [ 4 ]

1 голос
/ 05 октября 2009

Если у вас серьезная проблема с производительностью, я бы не стал использовать метод переименования - из-за всех грязных данных, которые вы собираетесь оставить без дела.

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

Martin

0 голосов
/ 06 октября 2009

Я использовал ту же логику, и меня задело, потому что даже с изменениями, которые, как предполагается, не требуют переписывания таблицы (например, переименование таблицы), ошибка MySQL заставляла его думать, что это изменение, требующее переписывания таблицы .

Если поля, с которыми вы имеете дело, являются полями даты, даты и времени, вы, вероятно, столкнетесь с этим, что означает, что вы должны просто предположить, что он должен полностью переписать и спланировать таким образом.

0 голосов
/ 06 октября 2009

Если вы не знаете, в таблице Myisam каждая операция ALTER TABLE будет выполнять копирование всей таблицы, поэтому таблица будет заблокирована на время, необходимое серверу для копирования таблицы.

0 голосов
/ 05 октября 2009

Я бы бросил столбцы. У вас будет фрагментация в любом случае. Это должно быть учтено в ваших регулярных планах обслуживания. Вы можете ускорить их после большого количества операций модификации.

...