Size: a a a

pgsql – PostgreSQL

2020 August 10

AW

Alexander Walther in pgsql – PostgreSQL
источник

AW

Alexander Walther in pgsql – PostgreSQL
источник

AW

Alexander Walther in pgsql – PostgreSQL
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Alexander Walther
Я в базах совсем нулевый, показать код который выполняет этот запрос?
Нет, всё правильно Вы показали...
Но по screenshots трудно заметить что-то, и никто ничего не может у себя повторить.
источник

AW

Alexander Walther in pgsql – PostgreSQL
\d+ event_en
 SELECT i.id,
   i.created_at,
   i.updated_at,
   i.external_id,
   i.extra,
   i.date,
   i.parent_id,
   i.place_id,
   i.landing_id,
   i.is_periodical,
   i.flat_category,
   i.flat_place,
   COALESCE(NULLIF(t.name, ''::text), i.name::text) AS name,
   COALESCE(NULLIF(t.annotate, ''::text), i.annotate) AS annotate,
   COALESCE(NULLIF(t.text, ''::text), i.text) AS text
  FROM event i
    LEFT JOIN event_translate t ON t.item_id = i.id AND t.lang::text = 'en'::text;
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Alexander Walther
С базой точно всё ок, она работала стабильно до того, как я начал вносить изменения в модели
Вы в тестовую базу всё это "вытащите" (относящиеся к делу DDL и запрос), и посмотрите, будет ли проблема там.
Или покажите это здесь текстом (или paste site + ссылка) — тогда кто-то ещё сможет повторить / проверить.
И вообще, Вы точно к той базе подключились?
источник

AW

Alexander Walther in pgsql – PostgreSQL
\sv event_en
CREATE OR REPLACE VIEW public.event_en AS
SELECT i.id,
   i.created_at,
   i.updated_at,
   i.external_id,
   i.extra,
   i.date,
   i.parent_id,
   i.place_id,
   i.landing_id,
   i.is_periodical,
   i.flat_category,
   i.flat_place,
   COALESCE(NULLIF(t.name, ''::text), i.name::text) AS name,
   COALESCE(NULLIF(t.annotate, ''::text), i.annotate) AS annotate,
   COALESCE(NULLIF(t.text, ''::text), i.text) AS text
  FROM event i
    LEFT JOIN event_translate t ON t.item_id = i.id AND t.lang::text = 'en'::text
источник

AW

Alexander Walther in pgsql – PostgreSQL
Yaroslav Schekin
Вы в тестовую базу всё это "вытащите" (относящиеся к делу DDL и запрос), и посмотрите, будет ли проблема там.
Или покажите это здесь текстом (или paste site + ссылка) — тогда кто-то ещё сможет повторить / проверить.
И вообще, Вы точно к той базе подключились?
Точно к той
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Alexander Walther
Точно к той
Тогда или покажите всё, относящееся к делу, на paste site (там просто много текста получится), или попробуйте в тестовой базе (для этого данные вообще не нужны, это не ошибка при выполнении).
источник

AW

Alexander Walther in pgsql – PostgreSQL
Yaroslav Schekin
Тогда или покажите всё, относящееся к делу, на paste site (там просто много текста получится), или попробуйте в тестовой базе (для этого данные вообще не нужны, это не ошибка при выполнении).
Структуру таблиц + код исполняющий запрос?
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Alexander Walther
Структуру таблиц + код исполняющий запрос?
Да. Вы почти всё это уже показывали, просто нужен текст в одном месте (чтобы кто-то мог попробовать).
Так уж куда легче проблему заметить...
источник

AW

Alexander Walther in pgsql – PostgreSQL
Хорошо, сейчас сделаю
источник

AN

Alexander Nikitin in pgsql – PostgreSQL
Yaroslav Schekin
А что там ещё есть в логах?
И Вы настройки проверяли для того пользователя, с помощью SHOW (и т.п.)?
Да в логах ничего толком больше нет, vacuum (verbose, analyze) relname; запускался из-под пользователя postgres. Все настройки, которые я писал, они как раз получены через SHOW из-под этого пользователя.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Alexander Nikitin
Да в логах ничего толком больше нет, vacuum (verbose, analyze) relname; запускался из-под пользователя postgres. Все настройки, которые я писал, они как раз получены через SHOW из-под этого пользователя.
Вы, кажется, параметры autovacuum показывали, а они тут ни при чём, в таком случае. ;)
Я поэтому подумал, что речь про autovacuum.
Тогда у Вас есть вывод этой команды vacuum (на данный момент) — покажите его целиком.
источник

AW

Alexander Walther in pgsql – PostgreSQL
Yaroslav Schekin
Да. Вы почти всё это уже показывали, просто нужен текст в одном месте (чтобы кто-то мог попробовать).
Так уж куда легче проблему заметить...
Ко мне подключился коллега, который хорошо шарит, так что сейчас мне помогут :)
источник

AW

Alexander Walther in pgsql – PostgreSQL
Спасибо, что откликнулись :)
источник

VJ

Vladimir Juriev in pgsql – PostgreSQL
Alexander Walther
SELECT
      "t1"."id",
      "t1"."created_at",
      "t1"."updated_at",
      "t1"."external_id",
      "t1"."name",
      "t1"."annotate",
      "t1"."text",
      "t1"."extra",
      "t1"."date",
      "t1"."parent_id",
      "t1"."place_id",
      "t1"."landing_id",
      "t1"."is_periodical",
      "t1"."flat_category",
      "t1"."flat_place",
      CASE
          WHEN ("t1"."parent_id" IS NOT NULL) THEN "t2"."external_id"
          ELSE "t1"."external_id"
      END AS "id",
      CAST("t1"."extra" AS JSON),
      "t3"."id",
      "t3"."name",

 (SELECT row_to_json(_place)
  FROM
    (SELECT "t3"."id",
            "t3"."name",
            CAST("t3"."extra"->>'preview' AS JSON) AS "preview",
            CAST("t3"."extra"->>'address' AS JSON) AS "map_config",
            "t3"."extra"->>'plan_address' AS "address"
     FROM "place" AS "t3"
     WHERE ("t3"."id" = "t1"."place_id")) AS "_place") AS "place_info"
FROM "event_en" AS "t1"
LEFT OUTER JOIN "place" AS "t3" ON ("t3"."id" = "t1"."place_id")
LEFT OUTER JOIN "event_en" AS "t2" ON ("t2"."id" = "t1"."parent_id")
WHERE (("t1"."date" < now())
      AND ("t1"."landing_id" = 108))
GROUP BY "t1"."id",
        "t3"."id",
        "t2"."external_id"
ORDER BY "t1"."date" ASC
А не в том ли ошибка, что в Select'е есть неагрегированные поля, которых нет в group by? И ошибка жалуется на первое же такое поле; если его убрать, начнёт жаловаться на второе, и т.д.
источник

AN

Alexander Nikitin in pgsql – PostgreSQL
Yaroslav Schekin
Вы, кажется, параметры autovacuum показывали, а они тут ни при чём, в таком случае. ;)
Я поэтому подумал, что речь про autovacuum.
Тогда у Вас есть вывод этой команды vacuum (на данный момент) — покажите его целиком.
источник

2_

2flower _ in pgsql – PostgreSQL
Alexander Walther
SELECT
      "t1"."id",
      "t1"."created_at",
      "t1"."updated_at",
      "t1"."external_id",
      "t1"."name",
      "t1"."annotate",
      "t1"."text",
      "t1"."extra",
      "t1"."date",
      "t1"."parent_id",
      "t1"."place_id",
      "t1"."landing_id",
      "t1"."is_periodical",
      "t1"."flat_category",
      "t1"."flat_place",
      CASE
          WHEN ("t1"."parent_id" IS NOT NULL) THEN "t2"."external_id"
          ELSE "t1"."external_id"
      END AS "id",
      CAST("t1"."extra" AS JSON),
      "t3"."id",
      "t3"."name",

 (SELECT row_to_json(_place)
  FROM
    (SELECT "t3"."id",
            "t3"."name",
            CAST("t3"."extra"->>'preview' AS JSON) AS "preview",
            CAST("t3"."extra"->>'address' AS JSON) AS "map_config",
            "t3"."extra"->>'plan_address' AS "address"
     FROM "place" AS "t3"
     WHERE ("t3"."id" = "t1"."place_id")) AS "_place") AS "place_info"
FROM "event_en" AS "t1"
LEFT OUTER JOIN "place" AS "t3" ON ("t3"."id" = "t1"."place_id")
LEFT OUTER JOIN "event_en" AS "t2" ON ("t2"."id" = "t1"."parent_id")
WHERE (("t1"."date" < now())
      AND ("t1"."landing_id" = 108))
GROUP BY "t1"."id",
        "t3"."id",
        "t2"."external_id"
ORDER BY "t1"."date" ASC
column "t1.created_at" must appear in the GROUP BY clause or be used in an aggregate function
это значит что у вас column должен быть описан в GROUP BY, в вашем запросе так и есть.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Т.к. это обычный vacuum, то используется maintenance_work_mem.
Только почему-то используется 1 Гб, а Вы писали, что там 4, так?
А всякие настройки задержек —  отсюда, на всякий случай : https://www.postgresql.org/docs/current/runtime-config-resource.html#RUNTIME-CONFIG-RESOURCE-VACUUM-COST
А какая это полная версия PostgreSQL (SELECT version();)?
источник