Столкнулся со следующей проблемой.
При попытке оптимизировать таблицы innoDB выдается сообщение
'wins_idb.wins', 'optimize', 'note', 'Table does not support optimize, doing recreate + analyze instead'
Версия MySQL 5.1.41 community
Хотя в документации написано:
OPTIMIZE TABLE works only for MyISAM, InnoDB, and ARCHIVE tables. It does not work for tables created using any other storage engine, including NDBCLUSTER Disk Data tables.
Вот ссылка http://dev[dot]mysql[dot]com/doc/refman/[dot][dot][dot]imize-table[dot]html
InnoDB хранит данные в файлах ib_data1, ib_logfile0, ib_logfile1,...
которые только растут, даже когда дропаю базу и пересоздаю заного.
Нашел в инете хитрый способ сжатия
mysql> alter table wins engine=MyISAM;
Query OK, 205616 rows affected (3.48 sec)
Records: 205616 Duplicates: 0 Warnings: 0
mysql> optimize table wins;
+---------------+----------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+---------------+----------+----------+----------+
| wins_idb.wins | optimize | status | OK |
+---------------+----------+----------+----------+
1 row in set (0.58 sec)
mysql> alter table wins engine=InnoDB;
Query OK, 205616 rows affected (11.31 sec)
Records: 205616 Duplicates: 0 Warnings: 0
Но файлы абсолютно никак не уменьшаются. Даже когда база пустеет полностью.
Посоветуйте пожалуйста как бороться с этим InnoDB. Может есть какие-нибудь хитрые способы дефрагментации?
Как мне экономить физическое место жесткого диска? Может в настройках сервера есть какие-нибудь параметры на ограничения или автоматического сжатия?
Заранее благодарен.
1. Phantik - 28 Декабря, 2009 - 15:33:46 - перейти к сообщению
2. EuGen - 28 Декабря, 2009 - 15:43:53 - перейти к сообщению
Заметьте, что там же уточняется:
CODE (text):
скопировать код в буфер обмена
скопировать код в буфер обмена
- For InnoDB tables, OPTIMIZE TABLE is mapped to ALTER TABLE, which rebuilds the table to update index statistics and free unused space in the clustered index. Beginning with MySQL 5.1.27, this is displayed in the output of OPTIMIZE TABLE when you run it on an InnoDB table, as shown here:
- mysql> OPTIMIZE TABLE foo;
- +----------+----------+----------+-------------------------------------------------------------------+
- | Table | Op | Msg_type | Msg_text |
- +----------+----------+----------+-------------------------------------------------------------------+
- | test.foo | optimize | note | Table does not support optimize, doing recreate + analyze instead |
- | test.foo | optimize | status | OK |
- +----------+----------+----------+-------------------------------------------------------------------+
- You can make OPTIMIZE TABLE work on other storage engines by starting mysqld with the --skip-new or --safe-mode option. In this case, OPTIMIZE TABLE is just mapped to ALTER TABLE.
- OPTIMIZE TABLE returns a result set with the following columns.
Проблема сохраняется при:
0. TRUNCATE + пересоздание индексов
1. DROP + пересоздание индексов
?