Задавайте вопросы, мы ответим
Вы не зашли.
в мануле 5.1 нам предлагают вариант решения проблемы (http://dev.mysql.com/doc/refman/5.1/en/ … imits.html)
* - A DROP TABLE or TRUNCATE operation on an NDB table frees the memory that was used by this table for re-use by any NDB table, either by the same table or by another NDB table.
этот вариант слабо применим на практике - данные на то и предназначены что бы их хранить а не удалять полностью.
и как уже говорилось на курсах что в 5.1 rolling restart не помогает.
какие реальные пути решения проблемы?
Может что то ответили специалисты из MYSQL AB ?
Неактивен
На семинаре я не совсем корректно сформулировал этот момент. Перезапуск одной ноды и перезапуск всего кластера реализованы по-разному. Разница на 4ой фазе.
http://dev.mysql.com/doc/refman/5.1/en/ … hases.html
Если перезапускается весь кластер, то каждая нода считывает данные с диска или Local Checkpoint и они остаются фрагментированы. Если перезапускается одна нода, то данные считываются с другой ноды, что приводит к выделению памяти только под данные. Поэтому rolling restart помогает.
Кроме того, должна помогать команда ALTER TABLE x ENGINE=ndb, которая фактически пересоздает таблицу. Недостаток ее в том, что она потребует дополнительной памяти на время работы процесса по пересозданию.
Про другие, обсуждавшиеся на курсе, ограничения кластера, напишу в отдельной теме.
Неактивен
Поправка. По информации http://johanandersson.blogspot.com/2007 … on-in.html в 5.1 rolling restart все же не высвобождает память от удаленных строк. 5.1 сейчас все еще в бете, так что нужно будет протестировать его реальное поведение при перезапуске нод.
Неактивен