#mysql #variables #memory-management #global-variables #apc
Вопрос:
Я никогда раньше не использовал apc_store (), и я также не уверен, следует ли освобождать результаты запроса или нет. Поэтому у меня есть эти вопросы…
В статье о кэше запросов MySQL здесь говорится: «Кэш запросов MySQL является глобальным, разделяемым между сеансами. Он кэширует запрос select вместе с набором результатов, что позволяет идентичным выборкам выполняться быстрее по мере извлечения данных из памяти».
Отменяет ли использование функции free_result() после запроса select кэширование, о котором говорилось выше?
Кроме того, если я хочу задать переменные и массивы, полученные из запроса select, для использования на разных страницах, следует ли мне сохранять переменные в памяти, например, с помощью apc_store ()? (Я знаю, что это тоже может спасти массивы.) И если я это сделаю, имеет ли значение, освобожу ли я результат запроса? Прямо сейчас я устанавливаю эти переменные и массивы во включенном файле на большинстве страниц, так как они часто используются. Это кажется не очень эффективным, поэтому я ищу альтернативу.
Спасибо за любую помощь/совет о наиболее эффективном способе выполнения вышеуказанного.
Ответ №1:
«Кэш запросов» MySQL является внутренним для MySQL. Вам все равно придется выполнить SELECT
; результат может быть получен быстрее, если контроль качества включен и его можно использовать в данной ситуации.
Я не думаю, что контроль качества-это то, что вы ищете.
Контроль качества уходит в более новых версиях. Не планируйте его использовать.
В PHP, подумайте $_SESSION
. Я не знаю, лучше ли это, чем apc_store
для вашего использования.
Обратите также внимание, что все, что доступно непосредственно в PHP, ограничивает вас одним веб-сервером. (Это подходит для небольших и средних приложений, но не подходит для очень активных приложений.)
Для масштабирования рассмотрите возможность сохранения небольшого ключа в файле cookie, а затем поиска этого ключа в таблице базы данных. Это обеспечивает хранение произвольных объемов данных в базе данных с затратами всего в несколько миллисекунд. «Ключ» может быть чем-то таким же простым, как «идентификатор пользователя», «номер сеанса» или «номер корзины» и т. Д.
Комментарии:
1. Итак, использование стратегии ключа cookie будет включать хранение всех переменных с этим ключом в форме json или что-то в этом роде? И преимущество в том, что есть только один поиск по базе данных? Я настроил apc_store, и он работает хорошо, но я понимаю, что вы имеете в виду, говоря о масштабировании.
2. @jamminjames — Да, именно это я и имею в виду. Что касается масштабирования: если ваше приложение становится слишком загруженным для обработки одним сервером, _SESSION и app_store нельзя использовать.
3. Ладно, понял. Спасибо!