Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: InnoDB

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: OPTIMIZE Table?
Phantik
Отправлено: 28 Декабря, 2009 - 15:33:46
Post Id


Посетитель


Покинул форум
Сообщений всего: 305
Дата рег-ции: Июнь 2009  


Помог: 0 раз(а)




Столкнулся со следующей проблемой.

При попытке оптимизировать таблицы 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. Может есть какие-нибудь хитрые способы дефрагментации?
Как мне экономить физическое место жесткого диска? Может в настройках сервера есть какие-нибудь параметры на ограничения или автоматического сжатия?
Заранее благодарен.
 
 Top
EuGen Администратор
Отправлено: 28 Декабря, 2009 - 15:43:53
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Заметьте, что там же уточняется:
CODE (text):
скопировать код в буфер обмена
  1.  
  2.  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:
  3.  
  4. mysql> OPTIMIZE TABLE foo;
  5. +----------+----------+----------+-------------------------------------------------------------------+
  6. | Table    | Op       | Msg_type | Msg_text                                                          |
  7. +----------+----------+----------+-------------------------------------------------------------------+
  8. | test.foo | optimize | note     | Table does not support optimize, doing recreate + analyze instead |
  9. | test.foo | optimize | status   | OK                                                                |
  10. +----------+----------+----------+-------------------------------------------------------------------+
  11.  
  12. 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.
  13.  
  14. OPTIMIZE TABLE returns a result set with the following columns.
  15.  

Проблема сохраняется при:
0. TRUNCATE + пересоздание индексов
1. DROP + пересоздание индексов
?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Phantik
Отправлено: 28 Декабря, 2009 - 15:57:27
Post Id


Посетитель


Покинул форум
Сообщений всего: 305
Дата рег-ции: Июнь 2009  


Помог: 0 раз(а)




Прошу прощения за мой корявый английский. Но я не понял, как в итоге сжимать то?
 
 Top
EuGen Администратор
Отправлено: 28 Декабря, 2009 - 16:14:47
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Пересозданием таблицы и индексов


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Phantik
Отправлено: 28 Декабря, 2009 - 16:41:19
Post Id


Посетитель


Покинул форум
Сообщений всего: 305
Дата рег-ции: Июнь 2009  


Помог: 0 раз(а)




Заполнил базу до 230МБ
Дропнул базу, пересоздал новую.

Дальше удалил индексы основной таблицы и заного их создал.
ALTER TABLE wins DROP INDEX main_index;
ALTER TABLE wins ADD INDEX main_index(`LID`,`DrawNum`,`Module`,`Tour`,`TckNum`);

На размер файла это не повлияло никак(остался 230 МБ).

А как правильно делать пересоздание таблицы? Не совсем понял что это значит. Сохраняться ли в ней данные?
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB