Мне интересно, где/как позволить PostgreSQL (9.6) обрабатывать проблемы памяти между вторичным хранилищем (например, жесткими дисками) и буферами памяти?Как обрабатывать буфер и вторичное хранилище с помощью программирования сервера PostgreSQL (SPI)?
Например, как загрузить релевантные данные в память, когда некоторые запросы, которые запрашиваются, не находятся в буфере; и как очистить некоторые данные на диске, когда буфер памяти заполнен?
Я еще не программировал сервер. Но когда я посмотрел на Server Programming Interface и раздел о memory management, я не могу найти упоминаний о «вторичном хранилище» или «буфере» и т. Д. Где такие проблемы обрабатываются?
Можете ли вы дать некоторые указания по этому поводу?
Спасибо за ваш ответ. «Управление хранилищами и буферизация данных происходят на другом, гораздо более низком уровне, и вы не можете влиять на это через SPI». Итак, есть ли способ вне SPI, чтобы убедиться, что серверные расширения, например, могут обрабатывать управление хранилищами? то есть не генерировать ошибки из памяти из-за ограничений основной памяти. – tinlyx
Для этого вам необходимо правильно настроить параметры операционной системы и базы данных. Невозможно избежать OOM, если у вас не хватает памяти ... Какова реальная проблема, которую вы пытаетесь решить? –
Например, напишите пользовательскую функцию SQL в C, которая не является OOM, если необходимые данные для функции превышают физическую память, но не место на жестком диске. – tinlyx