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

mysql - есть ли хороший способ сохранить его в оперативной памяти

Я пытаюсь придумать способы сделать mysql быстрее. Есть ли проверенный способ хранить его в оперативной памяти, чтобы он работал быстрее?

Во-первых, сделайте себе одолжение и отнеситесь к предложениям двигателя MEMORY с большой долей скепсиса.

Если, конечно, вам не понадобится ничего из следующего:

  • MVCC
  • Сделки
  • Многопоточный доступ
  • Кластерные индексы
  • Поддержка внешнего ключа
  • Больше, чем просто ВСТАВКА / ОБНОВЛЕНИЕ
  • Ваши данные

Если тебе не нужно любой из них вам не следует использовать MySQL. Используйте простое хранилище ключей и значений, например memcached.

Если тебе надо любой из них (подсказка: вы делаете), затем используйте InnoDB, столько оперативной памяти, сколько вы можете себе позволить, и правильно настроенный innodb_buffer_pool_size. В блоге о производительности MySQL есть отличная статья о настройка innodb_buffer_pool_size. Коротко и понятно - вам понадобится достаточно ОЗУ для размещения всего табличного пространства БД и индексов в ОЗУ, и установите innodb_buffer_pool_size до 70-80% общей оперативной памяти системы для выделенного сервера MySQL.

RAM SAN очень дорогая, но ввод-вывод умопомрачительна. RAMdisk - очень-очень плохая идея, потому что в случае потери питания системы или фатальной системной ошибки RAMdisk исчезает, как и находится в RAM.

Как насчет ОБЪЕМ ПАМЯТИ Механизм хранения?

Другой вариант - создать рамдиск и используйте в нем таблицы MyISAM или INNODB. Я бы предположил, однако, что производительность была бы лучше при использовании MEMORY Storage Engine из-за того, что он был разработан с нуля для хранения в памяти, тогда как другие типы таблиц работают в предположении, что они хранятся на диске.

  • Пытаться memcached для кеширования тяжелых запросов.
  • Попробуйте родной функция кеширования запросов mysql который изначально отключен и имеет огромное значение для запросов статических / полустатических таблиц.
  • Старайтесь НЕ сортировать огромные запросы в mysql, бросать необработанные данные в код и сортировать их там, а затем кешировать.
  • Попробуйте поднять лимит памяти mysql.

Вы можете поставить какой-нибудь монитор (например, Мунин) на вашем сервере, чтобы убедиться, что mysql является реальной проблемой, обычно это очень дорого, когда вы имеете дело с некэшированными запросами. Если ничего не получится, вам нужно будет потратить немного денег на решение для хранения SSD.

Поиграйте с механизмом хранения ПАМЯТИ, как предложила Эрика. Но убедитесь, что вы также оптимизируете весь свой кеш запросов, кеш потоков и настройки буфера. mysqltuner.pl это отличная отправная точка.