Подтвердить что ты не робот

Эквивалент PostgreSQL таблиц памяти MySQL?

Имеет ли PostgreSQL эквивалент MySQL таблицы памяти?

Эти таблицы памяти MySQL могут сохраняться в сеансах (т.е. отличаются от временных таблиц, которые выпадают в конце сеанса). Я не смог ничего найти с PostgreSQL, который может сделать то же самое.

4b9b3361

Ответ 1

Нет, на данный момент они не существуют в PostgreSQL. Если вам действительно нужна таблица памяти, вы можете создать RAM-диск, добавьте tablespace и создайте на нем таблицы.

Если вам нужна только временная таблица, которая видна между различными сеансами, вы можете использовать таблицу UNLOGGED. Это не настоящие таблицы памяти, но они будут вести себя удивительно аналогично, когда данные таблицы значительно меньше, чем системная RAM.

Глобальные временные таблицы будут другим вариантом, но не поддерживаются в PostgreSQL с 9.2 (см. комментарии).

Ответ 2

Отвечая на четырехлетний вопрос, но так как он попадает на результаты поиска google даже сейчас.

Нет встроенного способа кэширования полной таблицы в памяти, но есть расширение, которое может это сделать.

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

Преимущество заключается в том, что таблица хранится внутри postgres shared_buffers, поэтому при выполнении запроса postgres сразу же обнаруживает, что страницы находятся в памяти и извлекаются оттуда.

Недостатком является то, что shared_buffers на самом деле не предназначен для работы таким образом, и могут возникнуть нестабильности (обычно это не так), но вы, вероятно, можете иметь это во вторичном кластере/машине с этой конфигурацией, чтобы быть в безопасности.

Все остальные обычные оговорки о postgres и shared_buffers по-прежнему применяются.