Я пытаюсь придумать способы сделать mysql быстрее. Есть ли проверенный способ хранить его в оперативной памяти, чтобы он работал быстрее?
Во-первых, сделайте себе одолжение и отнеситесь к предложениям двигателя MEMORY с большой долей скепсиса.
Если, конечно, вам не понадобится ничего из следующего:
Если тебе не нужно любой из них вам не следует использовать 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 из-за того, что он был разработан с нуля для хранения в памяти, тогда как другие типы таблиц работают в предположении, что они хранятся на диске.
Вы можете поставить какой-нибудь монитор (например, Мунин) на вашем сервере, чтобы убедиться, что mysql является реальной проблемой, обычно это очень дорого, когда вы имеете дело с некэшированными запросами. Если ничего не получится, вам нужно будет потратить немного денег на решение для хранения SSD.
Поиграйте с механизмом хранения ПАМЯТИ, как предложила Эрика. Но убедитесь, что вы также оптимизируете весь свой кеш запросов, кеш потоков и настройки буфера. mysqltuner.pl это отличная отправная точка.