2010-12-04 2 views
2

Кто-нибудь есть какое-либо представление о следующем:MySQL 5.1 Таблицы памяти

Я бег MySQL 5.1 на 64-битную Linux установить и создал пару таблицы памяти. В таблице documentation для таблиц памяти MySQL указано, что ОЗУ не будет «освобождено» до тех пор, пока таблица не будет отброшена или усечена. Я сбросил все эти таблицы, но использование ОЗУ (из командной строки) не уменьшилось, даже после нескольких часов (90% на 48 ГБ после падения таблиц). Он проработал более двух дней с созданием и удалением нескольких таблиц.

Спасибо, Джеймс

+0

Спасибо за помощь. Я до сих пор не нашел способ надежно освободить ОЗУ без сбоев сервера (слишком сильно загрузиться в ram и сервер сбрасывается). – James 2011-09-21 14:42:37

ответ

1

Возможно ОС не покраснел эти страницы из памяти еще. Попробуйте использовать память в другом процессе и посмотрите, не снизились ли номера для процесса сервера MySQL.

+0

Вот что я догадывался, но похоже, что я просто разбил сервер. Это было на 90% ОЗУ, я выделил новую таблицу, а затем сбросил сервер mysql (все открытые запросы ушли также ...). Я создал таблицу, которая взяла 45% RAM сверху и уронила ее около 4-5 часов назад, но она по-прежнему показывает использование. Я спросил на форумах MySQL, но ответов на них пока нет. – James 2010-12-05 07:04:05

0

Возможно, вы захотите использовать таблицы MyISAM в tmpfs. Недостатком является то, что вам придется пересоздать их при каждом перезапуске сервера (таблицы обработчиков сохраняются при перезагрузке).

MyISAM гораздо больше места, чем двигатель памяти, и, вероятно, так же быстро, на некоторых рабочих нагрузок (вы хотите, чтобы проверить его на системе непроизводственной)

Вы, вероятно, хотите, чтобы попытаться точно определить, что использует память - это могут быть не таблицы памяти. К сожалению, знание того, что использует память в MySQL, сложно.

Память из таблиц памяти должна быть выпущена, но возможно, что она не может ее освободить из-за фрагментации, то есть других видов памяти, выделяемых в промежутках между ними. Обычно «большие» выделения в MySQL появляются при запуске (например, пул буферов innodb), но если вы неправильно настроили my.cnf, они также могут произойти и позже.

Попробуйте разместить этот вопрос с помощью my.cnf на сервере.

+0

Спасибо за предложение. Я попробую посмотреть, что произойдет. Мы не используем таблицы InnoDB здесь, только MyISAM и некоторые таблицы памяти. – James 2010-12-06 19:52:26

0

Последний раз, когда я использовал таблицу MEMORY, это было 4 года назад, и я думаю, что мы решили проблему, используя на ней команду OPTIMIZE TABLE. Я не могу найти документацию онлайн, чтобы подтвердить, что это работает: S, но попробуйте и посмотрите, помогает ли она.

Кроме того, Ebay выпустил патч, чтобы таблица MEMORY имела динамические строки вместо фиксированных. Это означает, что они занимают меньше памяти. Это также (недавно) доступно на сервере Percona http://www.mysqlperformanceblog.com/2011/09/06/dynamic-row-format-for-memory-tables/

+0

Whoa. Старый вопрос, но полезный комментарий. Я добавляю обновление к основному вопросу, поэтому люди найдут его, если попадут на эту страницу. – James 2011-09-21 14:38:30

Смежные вопросы