SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 12.08.2013 06:18:52

Mike Lozben
Участник
Зарегистрирован: 12.08.2013
Сообщений: 2

изменение структуры таблицы с большим набором данных

Всем привет!
Хотелось бы услышать мнение профессионалов)
Задача такая :
  есть большая таблица с данными ( 816471675 записей ), прилетела задача на добавление поля. Бэкапа таблицы у меня нет и я его не делаю, есть только набор csv файлов, из которых я собственно и
  формирую данные в таблицу. Раз в 10 минут прилетает новый надор файлов, и таблица соответственно дополняется. С ней постоянно снимаются данные, самый маленький интервал - раз в минуту, для
  онлайн статистики в режиме реального времени. Соответственно, лочить её нельзя. Я как, ммм, новичёк, скажем так, тупо сначала запустил ALTER TABLE, и он у меня работал около 9 часов ( добавлял
  поле VARCHAR(45), а потом ещё и интекс на него (3h 41min). В связи с чем хотелось бы узнать, как такие изменения на таблицах с большим надбором данных проводят настоящие профессионалы!) Был бы
  рад услышать ваши мнения, уважаемые! Версия MySql сервера 5.5.32-31.0, таблица на двигле InnoDB.

Сейчас соответственно есть 2 решения -
первое :
      CREATE TABLE _table LIKE table;
      ALTER TABLE `_table` ADD COLUMN `test` varchar(45) DEFAULT null;
      ALTER TABLE `_table` ADD INDEX(`test`);
        INSERT INTO _table (field1, field2, field3, field4,
        field5) SELECT SQL_NO_CACHE field1, field2, field3, field4,
        field5 FROM table;
      RENAME TABLE `table` TO `__table;
      RENAME TABLE `_table` TO `table;
      DROP TABLE `__table`;

второе :
   всё то же самое, но натягивать данные на новую таблицу с обновлённой структурой прям из csv файлов, благо они все хранятся с начала работы проекта. Т.о. рабочая таблица вообще трогаться не будет
   до самого последнего момента её подмены.

Какие будут мнения?)

Неактивен

 

#2 12.08.2013 13:30:15

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3844

Re: изменение структуры таблицы с большим набором данных

Возможно, загрузить заново - лучшее решение, при этом по крайней мере можно точно сказать сколько времени это займет. Еще вариант: сделать копию с помощью Percona Xtrabackup, на ней произвести ALTER, затем заменить.

Неактивен

 

#3 09.09.2013 07:21:31

Mike Lozben
Участник
Зарегистрирован: 12.08.2013
Сообщений: 2

Re: изменение структуры таблицы с большим набором данных

Спасибо. К сожалению, до задачи у руководства руки так пока и не дошли. А ввиду того, что командование хочет всё перевести на PostgreSQL... Вообщем, всё как всегда. Но за ответ спасибо, дома попробую)

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson