У нас есть приложение Apache CGI, написанное на C ++ (с использованием расширений cgicc), которое в настоящее время обращается к некоторым таблицам MySQL в памяти (с использованием механизма HEAP).Мы подошли к тому моменту, когда огромное количество транзакций, которые мы обрабатываем в день, превысило способность сервера обслуживать запросы, необходимые для обслуживания этих запросов.
Наш следующий шаг, который мы обсудили для повышения производительности, заключался в том, чтобы сделатьэти таблицы в памяти более «локальны» для процесса CGI и используют некоторую форму разделяемой памяти для кэширования данных.Memcached или Membase кажутся возможными вариантами, хотя то, для чего мы будем их использовать, похоже, не совсем соответствует этому подходу (или, может быть, так и есть, и я просто не вижу реализации / соединения).
ВВ идеальном мире мы могли бы использовать некоторую форму сериализации для загрузки данных в объект общей памяти.При запуске CGI получит копию или получит адрес, с которого он может сделать для себя копию общей структуры данных, десериализовать ее в «локальную» структуру данных в памяти и затем выполнить любые сравнения, необходимые для этого.от этого объекта.Мы действительно надеемся, что это не приведет к полной реорганизации нашей архитектуры Apache / CGI, но вместо этого может потребоваться просто обмен запросами к таблицам MySQL в памяти (MySQL DB находится на одном сервере сApache) использовать новые структуры данных в памяти, которые являются «более локальными» для процесса.
Спасибо за понимание, которое кто-то может иметь по этому поводу, и того, что он видел.Многие предыдущие потоки предлагают использовать подход Memcached / Membase и, возможно, это лучший маршрут, но просто хотели посмотреть, является ли это консенсусом.