powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / MyISAM to InnoDB vs ALTER
1 сообщений из 1, страница 1 из 1
MyISAM to InnoDB vs ALTER
    #32376169
Приветсвую всех.

Есть база в продакшине.
Есть в ней таблица (MyISAM), в которой более 5 миллионов записей.
Есть желание переехать на InnoDB type tables для облегчения работы с этой таблицей, да и вообще.

Вопрос: как _правильнее_ это сделать?

Доп. условия:
настроена односторонняя репликация этой БД на два других сервера.
размер таблицы:
286M tbl.MYD
211M tbl.MYI
10.0K tbl.frm
Все это вертиться на MySQL 3.23.55, FreeBSD
Залокать таблицу на update/insert я могу на время не более 10 минут.


Мысль:
1. сделать LOCK TABLE tbl;
2. cp tbl.* tbl2.*
3. UNLOCK TABLE
4. ALTER TABLE tbl2 SET TYPE=InnoDB;
5. SELECT max(id) FROM tbl2; -> $id
6. INSERT INTO tbl2 SELECT * FROM tbl WHERE id>$id
7. RENAME TABLE tbl TO backup_table, tbl2 TO tbl;

Правильно ли я мыслю? или есть другие способы?
Изначально задача была сделать ALTER TABLE tbl ADD col1 int(1);, но этот запрос локает таблицу на время более 15 минут (дальше не ждал, прибил процесс).

Соответственно есть несколько вовпросов:
1. Правильная ли мысль в принципе?
2. Как отреагирует база на серверах репликации? Возможны ли подводные камни?
3. Облехчат ли мне жизнь транзакции InnoDB если я захочу сделать еще раз ALTER TABLE tbl ADD col2 int(1); в плане локания/подвисания таблицы на запись.?
4. Насколько быстро отрабатыват камманда RENAME при данных условиях?

Спасибо.

--
Best regards,
kVn <http://php4you.kiev.ua/>
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / MyISAM to InnoDB vs ALTER
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]