#postgresql
#postgresql
Вопрос:
Мне было интересно, есть ли у Postgres такая функция, как SQL_CACHE в MySQL. Например, в MySQL я могу выполнить запрос типа «ВЫБЕРИТЕ SQL_CACHE Product_ID, Product_Name, Product_Sku ИЗ Products». Я хочу знать, могу ли я сделать что-то подобное в Postgres.
Ответ №1:
PostgreSQL автоматически кэширует недавно использованные данные в памяти, в зависимости от вашего shared_buffers
параметра конфигурации. На самом деле в SQL_CACHE
функции нет необходимости, поскольку Postgres уже отлично справляется с управлением кэшем кортежей.
Комментарии:
1. Это не совсем правильно.
effective_cache_size
не влияет на кэш, которым управляет Postgre. Это только дает планировщику подсказку, насколько похоже на то, что данные уже находятся в кэше файловой системы. Чем больше это значение, тем дешевле обрабатываются случайные запросы.2. Неправильный параметр, единственный кэш, который есть в PostgreSQL, — shared_buffers.
3. @Frank. Это то, что я получаю за слишком быстрый ввод. Спасибо 🙂
Ответ №2:
В MySQL
, SQL_CACHE
не выбирает из кэша, в зависимости от query_cache_type
того, что происходит:
- 1 или ДАЛЕЕ: Кэшировать все кешируемые результаты запроса, за исключением тех, которые начинаются с
SELECT SQL_NO_CACHE
. - 2 или ТРЕБОВАТЬ: кэшировать результаты только для кэшируемых запросов, которые начинаются с
SELECT SQL_CACHE
.
По сути, использование SQL_NO_CACHE
с любым параметром, отличным от 1
или SQL_CACHE
с любым другим параметром 2
бессмысленно.
Если это все еще то, что вам нужно в PostgreSQL: понятия не имею, но я должен был сделать это предельно ясным.
Ответ №3:
просто перейдите в /etc/postgresql/YOURVERSION/main/posgresql.conf (*nix) ( C:Program FilesPostgreSQLYOURVERSIONdatapostgresql.conf (win)) найдите shared_buffers, раскомментируйте егоб и укажите необходимый размер кэша.