Postgres Выбор запроса из кэша

#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, раскомментируйте егоб и укажите необходимый размер кэша.