Назад | Перейти на главную страницу

постоянное управление базой данных MySQL в памяти

Не системный администратор, так что ... У нас есть база данных размером около 4 ГБ в экземпляре MySQL 5.0.22. Таблица - InnoDB / UTF-8. По сути, это один запрос, который выполняется против индексированного столбца. Оборудование имеет 16 ГБ памяти. В идеале я хотел бы сделать так, чтобы и файл данных, и индексный файл всегда находились в памяти (при этом записи сбрасываются на диск). На этом сервере очень мало активности.

Предполагая, что у него достаточно памяти (что, я думаю, есть), должно ли это быть ожидаемым поведением без подкачки на диск?

Как я могу подтвердить, что такое поведение имеет место?

заранее спасибо

Если у вас нет других запущенных приложений, требующих большого объема памяти, не должно возникнуть проблем с размещением вашего «рабочего набора» в памяти. полностью. У меня есть пара sql-серверов, которые делают именно это. они обеспечивают отличную производительность чтения и не вызывают никаких проблем.

дела, которые необходимо сделать:

  1. убедитесь, что mysql получил указание выделить достаточно пулов буферов для innodb - в my.cnf поместите:

    innodb_buffer_pool_size = 8 ГБ

  2. при условии, что у вас нет других приложений, требующих большого объема памяти [apache / any appservs, пользовательские файлы] - минимизируйте доступный своп [существуют различные противоречащие друг другу «школы» по этому вопросу. Я бы поставил 1 ГБ своп + монитор и убедился, что он не используется. ]; [вы можете прочитать некоторые мнения о свопе Вот ]

  3. убедитесь, что mysql «прогрет» сразу после запуска - запустите запрос, который заставляет mysql читать каждую строку / столбец в вашей таблице [s]. просто:

    выберите md5 (col1), md5 (col2) из ​​таблицы

    должен сделать свое дело. повторить модификации этого запроса [например, length (col1)], чтобы убедиться, что данные действительно считываются из памяти. для более научных проверок, которые вы выполнили, запустите iostat параллельно и убедитесь, что диски не касаются. чтобы быть еще более научным - вы можете посмотреть статистику innodb [чтобы убедиться, что при выполнении новых версий запросов один за другим нет ввода-вывода], выполнив

    ПОКАЗАТЬ СТАТУС INNODB ДВИГАТЕЛЯ \ G

    подробнее об интерпретации вывода Вот и Вот.