Для кэширования результатов дб - нужно пошаговое перемещение о том, как запустить

Сжав дб, Вы могли рассмотреть использование robocopy для копирования по файлу?

6
задан 7 December 2011 в 22:37
2 ответа

Кэш запросов MySQL действительно кэширует результаты запроса, и до тех пор, пока последующие запросы будут точно такими же, вычисленный результат будет предоставлен вместо фактического выполнения запроса. MySQL также пропустит вычисление плана выполнения.

Чтобы использовать его, вы можете либо включить его в my.cnf своего сервера, либо использовать SQL_CACHE намек перед вашими запросами. Если он включен в my.cnf, вы можете указать MySQL не кэшировать результат, используя SQL_NO_CACHE перед вашими запросами.

Любая запись (INSERT, UPDATE, DELETE и т. Д.) В таблицу сделает недействительными все записи в кэше запросов, поступившие из этой таблицы.

Одна аномалия производительности с кешем запросов: он использует неэффективный алгоритм для поиска записей в кэше, поэтому создание кэша большего размера может привести к ухудшению производительности . Вы должны поэкспериментировать с его изменением с вашими собственными данными и профилями запросов, но в последний раз, когда я проводил этот эксперимент, я обнаружил, что около 256 МБ были оптимальным вариантом. Больше или меньше, и производительность ухудшилась. В руководстве предлагается « Десятки мегабайт »

Вы также можете реализовать кэширование вне MySQL, используя что-то вроде memcached . Это непрозрачно для приложения, поэтому вам придется добавить дополнительный код в свое приложение, чтобы выполнить поиск в memcached, а затем, если вы пропустите, выполнить поиск в базе данных и сохранить результат в memcached.

Вы должны поэкспериментировать с его изменением с вашими собственными данными и профилями запросов, но в последний раз, когда я проводил этот эксперимент, я обнаружил, что около 256 МБ были оптимальным вариантом. Больше или меньше, и производительность ухудшилась. В руководстве предлагается « Десятки мегабайт »

Вы также можете реализовать кэширование вне MySQL, используя что-то вроде memcached . Это непрозрачно для приложения, поэтому вам придется добавить дополнительный код в свое приложение, чтобы выполнить поиск в memcached, а затем, если вы пропустите, выполнить поиск в базе данных и сохранить результат в memcached.

Вы должны поэкспериментировать с его изменением с вашими собственными данными и профилями запросов, но в последний раз, когда я проводил этот эксперимент, я обнаружил, что около 256 МБ были оптимальным вариантом. Больше или меньше, и производительность ухудшилась. В руководстве предлагается « Десятки мегабайт »

Вы также можете реализовать кэширование вне MySQL, используя что-то вроде memcached . Это непрозрачно для приложения, поэтому вам придется добавить дополнительный код в свое приложение, чтобы выполнить поиск в memcached, а затем, если вы пропустите, выполнить поиск в базе данных и сохранить результат в memcached.

8
ответ дан 3 December 2019 в 00:13

Это можно сделать несколькими способами. Вероятно, есть и другие способы сделать это, но эти два сразу приходят в голову.

Вы можете создать другую таблицу для хранения ваших кэшированных результатов и по расписанию запускать дорогостоящие запросы, которые могут объединить несколько таблиц с лотами записей в них и выгружать записи в эту таблицу. Выполнение SELECT * из одной таблицы должно быть менее затратным, чем выполнение SELECT, объединяющего 12 различных таблиц, каждая из которых содержит миллионы записей. Хотя это не совсем удаляет работу с сервера БД, это должно снизить вычислительную нагрузку за счет выполнения только дорогостоящих запросов по расписанию и получения данных из таблицы кеширования вашими постоянными клиентами.

В качестве альтернативы, для кеша, который полностью отделен от вашей БД, вы можете реализовать что-то вроде Redis . Это сохранит данные в памяти и должно быть очень быстрым, но в вашем приложении потребуется дополнительная логика, чтобы использовать это в качестве источника данных вместо реальной базы данных. Он также хорошо масштабируется - сеть Stack Exchange довольно эффективно использует его на своих сайтах.

3
ответ дан 3 December 2019 в 00:13

Теги

Похожие вопросы