|
MyISAM to InnoDB vs ALTER
|
|||
---|---|---|---|
#18+
Приветсвую всех. Есть база в продакшине. Есть в ней таблица (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/> ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2004, 17:26 |
|
|
start [/forum/topic.php?fid=47&fpage=694&tid=1855507]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
31ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 125ms |
0 / 0 |