PostgreSQL: "ПРЕДУПРЕЖДЕНИЕ: недостаточно общей памяти" на простом SELECT
Всякий раз, когда я пытаюсь сделать простой SELECT на моей базе данных Postgres, я получаю эту ошибку:
tutorial=> select id from table LIMIT 1;
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
WARNING: out of shared memory
ERROR: out of shared memory
HINT: You might need to increase max_locks_per_transaction.
Я пытаюсь увеличить "max_locks_per_transaction" до 256, увеличил все параметры памяти, он ничего не делает. Команде потребовалось больше времени, чтобы вернуться.
Все просто работало отлично в течение нескольких месяцев, затем появляется эта проблема, и я не могу отследить журналы, чтобы найти, что происходит.
Вот последовательность загрузки, когда проблема появляется, после того, как я пытаюсь перезагрузить postgres, когда эта проблема возникает:
LOG: database system was not properly shut down; automatic recovery in progress
LOG: redo starts at 2/2C7A1580
LOG: invalid record length at 2/2C848AC8: wanted 24, got 0
LOG: redo done at 2/2C848AA0
LOG: last completed transaction was at log time 2018-01-29 14:38:52.726603+00
LOG: MultiXact member wraparound protections are now enabled
LOG: database system is ready to accept connections
LOG: autovacuum launcher started
Моя база данных реализует плагин TimescaleDB и PostGIS и состоит только из одной таблицы. Я могу сделать все остальные заявления (INSERT, UPDATE и т. Д.), Но SELECT не будет работать, и это довольно раздражает.
Это касается только этой гипертабельной. У меня есть только таблица пространственный_реф_сейс рядом с ним, и у меня нет проблем с этим.
С EXPLAIN я получаю точно такое же поведение и не записываю информацию:
tutorial=> EXPLAIN SELECT id FROM table LIMIT 1;
WARNING: out of shared memory
ERROR: out of shared memory
HINT: You might need to increase max_locks_per_transaction.
Сервер представляет собой 64-битное ядро Debian 2x86 и 2 ГБ памяти. Я настроил эту базу данных с помощью Docker, выполнив следующие действия: http://docs.timescale.com/v0.8/getting-started/installation/linux/installation-docker
Вот инструкции, которые я использовал для настройки БД:
CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;
CREATE EXTENSION postgis;
CREATE EXTENSION postgis_topology;
CREATE TABLE "public"."table" (
"id" BIGSERIAL NOT NULL PRIMARY KEY,
"id_s" int8 NOT NULL,
"id_g" int8,
"datetime" TIMESTAMPTZ DEFAULT now(),
[...]
);
SELECT create_hypertable('table', 'datetime');
ALTER TABLE table ADD CONSTRAINT id_pkey PRIMARY KEY (id, datetime);
CREATE INDEX ON table (id_s, datetime DESC);
CREATE INDEX ON table (id_g, datetime DESC);
ALTER TABLE table ADD COLUMN geom geometry(POINT,2192)