утилита для дефрагментации ibdata

Технические вопросы по UTM 5.0
Ответить
Аватара пользователя
dalex
Сообщения: 1306
Зарегистрирован: Пт янв 21, 2005 11:54

утилита для дефрагментации ibdata

Сообщение dalex »

Не встречал ли ктонибудь утилиту позволяющую уменьшить размер файла ibdata после чистки базы? (желательно без остановки сервера). dump - restore не предлагать :-)

Аватара пользователя
Chris
Сообщения: 2323
Зарегистрирован: Чт июн 02, 2005 14:08
Откуда: 33 76 77 71 86 37 98

Сообщение Chris »

Вот блин дамп ресторе и юзаю.. тоже интересно есть ли такое.

mikkey finn
Сообщения: 1612
Зарегистрирован: Пт ноя 10, 2006 15:23

Сообщение mikkey finn »

Не оно?

There is a more robust way if you running MySQL 5

Export this query using mysql client to an SQL script like this

mysql -h<...> -u<...> -p<...> --skip-column-names -A -e"SELECT CONCAT('OPTIMIZE TABLE
',table_schema,'.',table_name,';') FROM information_schema.tables WHERE ENGINE='InnoDB'"

Then run the script using mysql client.

Please remember, OPTMIZE TABLE does absolutely nothing if all InnoDB data resides in the shared space.
Your must create all InnoDB tables as separate entities.

To do this, mysqldump all tables to a dump file.
Shutdown MySQL
add 'innodb_file_per_table' to my.cnf
Delete the ibdata files and the logs
Startup MySQL
Reload dump file.

Each InnoDB will reside in .frm and .ibd files
OPTIMIZE will defragment each tablespace (.ibd) file

Аватара пользователя
Chris
Сообщения: 2323
Зарегистрирован: Чт июн 02, 2005 14:08
Откуда: 33 76 77 71 86 37 98

Сообщение Chris »

Попробую :-)

Аватара пользователя
dalex
Сообщения: 1306
Зарегистрирован: Пт янв 21, 2005 11:54

Сообщение dalex »

mikkey finn
Работает. после перехода optimize table уменьшает размер файла таблицы.

mikkey finn
Сообщения: 1612
Зарегистрирован: Пт ноя 10, 2006 15:23

Сообщение mikkey finn »

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

Аватара пользователя
dalex
Сообщения: 1306
Зарегистрирован: Пт янв 21, 2005 11:54

Сообщение dalex »

обращаю внимание на тот факт, что под каждую таблицу базы должен быть свой файл данных.
это да. И срабатывает только на новых таблицах поэтому перед заливкой дампа надо базу убить и заново создать.
А еще есть вариант - иннодиби позволяет свои файлы прям на "сыром" разделе использовать - надо будет попробовать производительность померить.

Аватара пользователя
Ata-man
Сообщения: 427
Зарегистрирован: Пт янв 21, 2005 10:04
Откуда: Екатеринбург

Сообщение Ata-man »

Сделал также, как указано выше. На тестовой системе проверил - после оптимизации таблицы на самом деле дефрагментируются.

А теперь вопрос: не опасно ли для БД проведение оптимизации во время работы биллинга (то-бишь записи в таблицы)?
И если нет, то видимо лучше запускать консольную утилиту - utm5_optimizer, чем напрямую из админки?

Аватара пользователя
dalex
Сообщения: 1306
Зарегистрирован: Пт янв 21, 2005 11:54

Сообщение dalex »

А теперь вопрос: не опасно ли для БД проведение оптимизации во время работы биллинга (то-бишь записи в таблицы)?
И если нет, то видимо лучше запускать консольную утилиту - utm5_optimizer, чем напрямую из админки?
это абсолютно разные оптимизации

Аватара пользователя
Ata-man
Сообщения: 427
Зарегистрирован: Пт янв 21, 2005 10:04
Откуда: Екатеринбург

Сообщение Ata-man »

это абсолютно разные оптимизации
- А чем они собственно отличаются? Я всегда считал что utm5_optimizer - это та же функция оптимизации БД, что и в админке, просто вынесенная в отдельную утилиту.
Вопрос в том, можно ли их запускать во время работы биллинга, т.е. когда он производит запись в таблицы?

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

Сейчас делаю оптимизацию при отключенном биллинге, но хотелось бы избежать этого, т.к. оптимизация занимает от 4 до 6 часов. И на это время отключать биллинг проблематично.

thorn
Сообщения: 32
Зарегистрирован: Пт янв 05, 2007 17:22

Сообщение thorn »

Ata-man писал(а):
это абсолютно разные оптимизации
- А чем они собственно отличаются? Я всегда считал что utm5_optimizer - это та же функция оптимизации БД, что и в админке, просто вынесенная в отдельную утилиту.
Вопрос в том, можно ли их запускать во время работы биллинга, т.е. когда он производит запись в таблицы?

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

Сейчас делаю оптимизацию при отключенном биллинге, но хотелось бы избежать этого, т.к. оптимизация занимает от 4 до 6 часов. И на это время отключать биллинг проблематично.
включи лог запросов в mysql или в utm5
и посмотри что он делает.

оптимизацию можно сделать "передергиванием" таблиц из inndob в myisam и обратно
типа alter table ... engine=....;

фактически создается временная таблица в которую выгружаются все данные и потом она заменяет рабочую. исключаются "удаленные" записи.

но это тоже без остановки utm5_core лучше не делать.

Аватара пользователя
dalex
Сообщения: 1306
Зарегистрирован: Пт янв 21, 2005 11:54

Сообщение dalex »

- А чем они собственно отличаются?
То что описано в этом топике - это сольюшены для уменьшения размера файла ibdata после удаления из него данных. А оптимайзер делает оптимизацию в записях (типа суммирует их т п.)

thorn
Сообщения: 32
Зарегистрирован: Пт янв 05, 2007 17:22

Сообщение thorn »

mikkey finn писал(а):обращаю внимание на тот факт, что под каждую таблицу базы должен быть свой файл данных. Иначе не даст результата. Итог: можно в мемориз.
тоже надо делать остановку сервера

Аватара пользователя
Ata-man
Сообщения: 427
Зарегистрирован: Пт янв 21, 2005 10:04
Откуда: Екатеринбург

Сообщение Ata-man »

тоже надо делать остановку сервера
Спасибо, вот то что я и хотел услышать. Так и так придется останавливать биллинг. Жаль конечно, хотелось бы обойтись без этого ну да ладно. По-крайней мере экономится время на перезаливке бэкапа - и то хорошо.

Все, вопрос исчерпан.

Ответить