Мое понимание таблицы в памяти - это таблица, которая будет создана в памяти и будет использовать диск как можно меньше, если вообще будет. Я предполагаю, что у меня достаточно оперативной памяти, чтобы вместить таблицу или, по крайней мере, большую ее часть. Я не хочу использовать явную функцию для загрузки таблиц (например, pg_prewarm) в память, я просто хочу, чтобы таблица была там по умолчанию, как только я выдаю CREATE TABLE
или CREATE TABLE AS select statement
, если память не заполнена или если я указать иначе. Меня не особо волнует запись на диск.
7 лет go, аналогичный вопрос был задан здесь PostgreSQL эквивалент MySQL таблиц памяти? . Он получил 2 ответа, и один из них немного запоздал (4 года спустя).
В одном ответе говорится, что нужно создать диск RAM и добавить для него табличное пространство. Или использовать таблицу UNLOGGED. Или ждать глобальных временных таблиц. Тем не менее, у меня нет специального оборудования, у меня есть только обычная оперативная память - поэтому я не уверен, как это сделать go. Я могу использовать функцию UNLOGGED, но, как я понимаю, взаимодействие с диском все еще довольно сильно (это то, что я пытаюсь уменьшить), и я не уверен, будут ли таблицы загружаться в память по умолчанию. Кроме того, я не вижу, как глобальные временные пространства связаны. Насколько я понимаю, это просто таблицы в пространствах, которые можно использовать совместно.
Другой ответ рекомендует механизм хранения столбцов в памяти. А затем использовать функцию, чтобы загрузить все в память. Проблема, с которой я столкнулся при таком подходе, заключается в том, что упомянутый двигатель выглядит старым и не поддерживается, и я не могу найти другой. Кроме того, я надеялся, что мне не придется явно прибегать к использованию функции «загрузка в память», но вместо этого все будет происходить по умолчанию.
Мне просто интересно, как теперь получить таблицы в памяти в Postgres 12, 7 лет спустя.