SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 14.10.2009 22:56:32

nightssss
Участник
Зарегистрирован: 13.10.2009
Сообщений: 14

Работа с большими таблицами

В связи с предыдущей моей темой, возник еще один вопрос.

Есть большая таблица (>2 Гб, около 500 тыс записей). Нужно изменить структуру таблицы, заменив TEXT на BLOB.
НО при изменении структуры такой большой таблицы через PHPmyadmin сервер не справляется.

В связи с этим возник вопрос:
Каким образом изменить структуру такой большой таблицы чтобы сервер не ушёл в даун?

Неактивен

 

#2 14.10.2009 23:05:18

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5833

Re: Работа с большими таблицами

Оператор ALTER TABLE работает, создавая временную копию исходной таблицы. Изменения осуществляются на копии, затем исходная таблица удаляется и новая переименовывается.

Так что логично, что в случае большой таблицы этот процесс окажется не быстрым.

В чем у вас проявляется "сервер не справляется"?

Неактивен

 

#3 14.10.2009 23:06:38

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Работа с большими таблицами

Ну и в данном случае Вам может оказаться полезным таки разобраться в кодировках wink

Я бы начал с изучения SHOW CREATE TABLE на двух машинках, есть ощущение, что
там разные кодировки на сжатых колонках.

Неактивен

 

#4 14.10.2009 23:09:26

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: Работа с большими таблицами

По идее, не зависит, через какой клиент давать команду на изменение таблицы (если, конечно, PHPMyAdmin не изобрел в этом плане что-нибудь своё, но это вряд ли).
При любом изменении структуры таблицы делаются одни и те же операции: создаётся и заполняется копия таблицы, потом она переименовывается, а старая удаляется, так что тут дело не в конкретной структуре таблицы, а в самой необходимости внесения изменений.

Вообще это не очень большая, если честно. Может быть связано с активным её использованием. Сколько запросов идёт к ней в секунду и какого они характера?

Неактивен

 

#5 14.10.2009 23:20:59

nightssss
Участник
Зарегистрирован: 13.10.2009
Сообщений: 14

Re: Работа с большими таблицами

В чем у вас проявляется "сервер не справляется"? написал:

SQL-запрос:

ALTER TABLE `имя_таблицы` CHANGE `имя_столбца` `имя_столбца` BLOB NOT NULL

Ответ MySQL: 
#1053 - Server shutdown in progress
Ошибка

SQL-запрос: 

SHOW FULL FIELDS FROM `имя_таблицы` FROM `имя_базы` LIKE 'имя_столбца';


Ответ MySQL: 
#2006 - MySQL server has gone away


Оператор ALTER TABLE работает, создавая временную копию исходной таблицы. Изменения осуществляются на копии, затем исходная таблица удаляется и новая переименовывается. написал:

Теперь понятно в чем дело. Просто на хостинге, где находится база, максимальный размер базы данных предоставляется 3 Гб. Так как таблица занимает около 2 Гб, то структуру я сам поменять не смогу. Придется писать в техподдержку, может там помогут.

Неактивен

 

#6 14.10.2009 23:34:17

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Работа с большими таблицами

Ну, Ваш запрос просто прибивается со стороны сервера (возможно, там стоит
watchdog какой-то?), поэтому он и не отрабатывает.

Если разберетесь с кодировками, то и конвертировать будет не нужно.

Неактивен

 

#7 14.10.2009 23:52:01

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5833

Re: Работа с большими таблицами

To paulus

А что такое "watchdog"? Я представлял себе это как прогу, которая мониторит состояние сервера и если он повис, то делает ему restart. Вопрос в том, как он может прибить конкретный запрос к базе? Или имеется в виду что-то другое?

Неактивен

 

#8 15.10.2009 01:06:18

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Работа с большими таблицами

Watchdog — это такая собака, которая сидит и сторожит. Что она сторожит — это отдельный
вопрос. Тут, например, она может сторожить, чтобы люди не запускали запросы, которые
выполняются больше, скажем, 30 секунд.

Неактивен

 

#9 15.10.2009 13:37:41

nightssss
Участник
Зарегистрирован: 13.10.2009
Сообщений: 14

Re: Работа с большими таблицами

Вот что мне предложили в техподдержке:
А в бинарном формате дамп не подойдёт? Можете скачать его и произвести необходимые операции хоть локально..

Не могли бы Вы пояснить про дамп в бинарном формате?


У меня в свою очередь возникла идея:
Нельзя ли скачать саму папку с базой где находятся файлы *.myd, *.myi, *.frm ну и пр. По умолчанию они находятся в /var/lib/mysql/имя_базы. Если перенести эти файлы на другой хост по идее должно всё работать. Будет ли это работать на самом деле?

Неактивен

 

#10 15.10.2009 13:47:03

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Работа с большими таблицами

Они это Вам и предложили; должно работать.

Неактивен

 

Board footer

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