SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 06.12.2010 18:58:22

kharkov_max
Завсегдатай
Зарегистрирован: 12.09.2009
Сообщений: 62

Innodb сжатие баз данных

День добрый.

Подскажите пожалуйста как включить сжатие данных в innodb.
Что б сама база (файл) хранился на диске в сжатом виде.
Понимаю что будет потеря производительности, но для мойе базы это не страшно.

Сервер Mysql 5.5.7-rc.

Спасибо.

Неактивен

 

#2 06.12.2010 19:21:09

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

Re: Innodb сжатие баз данных

ALTER TABLE tablename KEY_BLOCK_SIZE=8.

Размером странички, разумеется, можно играть. Чем меньше размер, тем больше
сжатие, и тем медленнее работает база. Стандартный размер — 16.

Ну и, разумеется, должен быть включен InnoDB plugin.

Неактивен

 

#3 07.12.2010 08:18:51

kharkov_max
Завсегдатай
Зарегистрирован: 12.09.2009
Сообщений: 62

Re: Innodb сжатие баз данных

Ну и, разумеется, должен быть включен InnoDB plugin.

Подскажите а как проверить что плагин включен?
Файла ha_innodb.so на сервере я не нашел.
Команда install plugin innodb soname 'ha_innodb.so'; не отрабатывает.
В my.cnf все что касается innodb закоментировано, но базы в таком формате есть и работают.
Возможно что в 5.5.7 он включен по умолчанию ?

Неактивен

 

#4 08.12.2010 01:50:19

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

Re: Innodb сжатие баз данных

А что говорит SELECT @@innodb_version?

Неактивен

 

#5 08.12.2010 07:18:20

kharkov_max
Завсегдатай
Зарегистрирован: 12.09.2009
Сообщений: 62

Re: Innodb сжатие баз данных

paulus написал:

А что говорит SELECT @@innodb_version?

Код:

@@innodb_version
1.1.3

Отредактированно kharkov_max (08.12.2010 07:21:56)

Неактивен

 

#6 08.12.2010 07:37:07

kharkov_max
Завсегдатай
Зарегистрирован: 12.09.2009
Сообщений: 62

Re: Innodb сжатие баз данных

Как ни странно , но  ALTER TABLE table KEY_BLOCK_SIZE=4; отработало.

Код:

 ALTER TABLE table KEY_BLOCK_SIZE=4;
Query OK, 279242 rows affected, 3 warnings (6.88 sec)
Records: 279242  Duplicates: 0  Warnings: 3

Но размер базы (файла), меньше не стал.
Сделал dump/restore - результат такой же.

1. Как я понимаю при mysqldump свойство сжатия таблицы теряется....
И после восстановления нужно опять указывать сжатие ?

2. Как мне физически уменьшить файл (таблицы/базы данных) на диске
Как я понимаю сейчас у меня данные сжимаются, но т.к. innodb не может уменьшаться, а может только увеличиваться файлы базы меньше не стали ...

Неактивен

 

#7 08.12.2010 08:13:21

kharkov_max
Завсегдатай
Зарегистрирован: 12.09.2009
Сообщений: 62

Re: Innodb сжатие баз данных

Хм...
Похоже что я ошибался что мои базы innodb лежат в разных файлах.
Похоже что все лежит в файле ibdata1.

Исходя из этого как мне правильно разделить каждую базу в оддельный файл иестесственно включить сжатие ?
Можно ли у казать для какой то одной базы отдельный файл а все остальные в один как есть сейчас ?

Неактивен

 

#8 08.12.2010 13:16:34

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

Re: Innodb сжатие баз данных

Нужно включить innodb_file_per_table и после этого пересоздать таблички
(например, ALTER TABLE tablename ENGINE=InnoDB).

Неактивен

 

#9 08.12.2010 14:16:40

kharkov_max
Завсегдатай
Зарегистрирован: 12.09.2009
Сообщений: 62

Re: Innodb сжатие баз данных

paulus написал:

Нужно включить innodb_file_per_table и после этого пересоздать таблички
(например, ALTER TABLE tablename ENGINE=InnoDB).

На каждую таблицу будет создан отдельный файл?
Уменьшится ли после данной процедуры файл ibdata1?

Неактивен

 

#10 08.12.2010 14:23:58

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

Re: Innodb сжатие баз данных

Да, отдельный файл. Нет, не уменьшится.

Неактивен

 

Board footer

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