Уменьшите использование памяти MySQL на блоке разработки


3

На моем Mac после нового перезапуска с нулевыми подключениями MySQL в настоящее время использует 40 МБ памяти, 188 МБ виртуальной памяти (база данных на диске выгружается в?) И имеет 16 потоков.

Поскольку к серверу обращаются только один человек (я), и я не обращаюсь к нему часто в течение дня, как я могу настроить MySQL на потребление меньшего количества памяти, когда он простаивает?

Я не возражаю против того, чтобы он потреблял столько ресурсов, сколько нужно для выполнения запросов во время их выполнения, но хотел бы снизить нагрузку между сессиями разработки. Из-за того, как работают веб-сайты, над которыми я работаю, он будет выполнять только один запрос за раз, может быть, два одновременных запроса очень редко.

Я использую MySQL на Mac OS X Server 10.7, используя официальную загрузку Oracle, без изменений конфигурации.

40 МБ - это нормально, но в последнее время я занимаюсь разработкой, не связанной с MySQL, которая действительно требует каждый дюйм памяти моей системы, и я бы не стал запускать / останавливать MySQL несколько раз в день.


Поскольку большинство баз данных стараются считывать как можно больше своих данных в память, чтобы сделать это быстрее, вы вступаете в проигрышную битву. У Роланда есть несколько хороших идей, но если вы хотите перезапустить процесс mysqld, почему бы не запустить его в работу cron? Кроме того, оперативная память теперь так дешево.

Конечно, MySQL не должен потреблять память, когда он неактивен? Не может быть заполнено ни одного кэша - эти цифры используются для запуска после запуска с нулевыми запросами. Оперативная память дешевая, но у меня так много слотов, один из моих текущих проектов включает обработку многих десятков гигабайт данных. Я знаю, что некоторые VPS-компании рекомендовали конфиги для серверов с низкой памятью, я ищу что-то подобное.
Абхи Беккерт

Ответы:


3

Это зависит от того, какой механизм хранения использует ваша таблица.

Если все, что вы используете - MyISAM, можете полностью отключить InnoDB следующим образом:

Шаг 01) Добавьте эту опцию в my.cnf

[mysqld]
skip-innodb
query-cache-type=0

Шаг 02) Перезапустите MySQL

Делая эти два шага

  • mysqld запускается быстрее
  • пул буферов InnoDB по умолчанию ( innodb_buffer_pool_size ) не создан
    • 8M по умолчанию до MySQL 5.5
    • 128M по умолчанию, начиная с MySQL 5.5
  • С query_cache_type = 0, кеш запросов отключен

У нас есть несколько тысяч клиентов, и я должен иметь возможность загружать любые их веб-сайты на свой сервер разработки в любое время. Многие используют InnoDB. Можно ли установить размер пула на что-то меньшее?
Абхи Беккерт

1
MySQL требуется для этого. Установите для innodb _buffer_pool_size значение 4M в my.cnf
RolandoMySQLDBA

Извините, большая опечатка: для этого требуется перезагрузка MySQL. Установите innodb _buffer_pool_size в 4M в my.cnf
RolandoMySQLDBA
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.