Size: a a a

pgsql – PostgreSQL

2020 June 29

А

Антревольт in pgsql – PostgreSQL
Максим
Он создаёт таблицу временную и кидает Тула все данные?
Временная таблица,существует пока выполняется запрос.
Если нужно что бы она оставалась на диске, можно использовать материальные представления
источник

М

Максим in pgsql – PostgreSQL
Не нужно вообще, чтобы она трогала диск
источник

СГ

Сергей Голод... in pgsql – PostgreSQL
Максим
Не нужно вообще, чтобы она трогала диск
что мешает создать табличное пространство для временных таблиц, которое будет указывать на память вместо диска?
источник

s

sexst in pgsql – PostgreSQL
Максим
Он создаёт таблицу временную и кидает Тула все данные?
Или не создаёт. Иногда оптимизация свопачивает запрос прямо внутрь родительского. Иногда это и правда временная таблица. Можно принудительно заставлять сворачивать запрос или наоборот материализовать .
На диск пишет если в память разрешенную не влезло.
источник

EK

Eduard Korolev in pgsql – PostgreSQL
кто нибудь может помочь с анализом EXPLAIN запроса в личку? Запрос большой, сложный, тут долго писать. Суть в том, что есть селект из таблицы, 7 джоинов, сортировка по 1 джоину по сгрупированному параметры и условие в запросе по LIKE concat(...). Понятно, что нужно денормализовывать таблицу, но самое странное, что в этом виде запрос работает хорошо - до 100 мс, а если заменишь лайк на условие с UUID id, то запрос вырастает до 2к мс. Как такое может быть? Когда по id есть уникальный индекс и внешние ключи на каждой таблице
источник

s

sexst in pgsql – PostgreSQL
Eduard Korolev
кто нибудь может помочь с анализом EXPLAIN запроса в личку? Запрос большой, сложный, тут долго писать. Суть в том, что есть селект из таблицы, 7 джоинов, сортировка по 1 джоину по сгрупированному параметры и условие в запросе по LIKE concat(...). Понятно, что нужно денормализовывать таблицу, но самое странное, что в этом виде запрос работает хорошо - до 100 мс, а если заменишь лайк на условие с UUID id, то запрос вырастает до 2к мс. Как такое может быть? Когда по id есть уникальный индекс и внешние ключи на каждой таблице
Ну так выкладывайте explain на  https://explain.tensor.ru/ для начала
Кстати в LIKE concat не вижу ничего ужасного, если только начало строки в условии фиксировано, а не wildcardом задано
источник

I

Igor in pgsql – PostgreSQL
А где можно почитать про совместимость версий постгреса при бэкапе-ресторе? Например, если база 10 версии дампится версие 9.2 pg_dump и восстанавливается тоже версией 9.2 pg_restore в базу 10 версии, то ок всё будет?
источник

I

Igor in pgsql – PostgreSQL
Почему-то дампы делаются, но восстановить не получается
источник

СГ

Сергей Голод... in pgsql – PostgreSQL
Igor
Почему-то дампы делаются, но восстановить не получается
ресторить нужно pg_restore из 10ой версии. Да и дампить тоже нужно pg_dump из родной же версии
источник

I

Igor in pgsql – PostgreSQL
А если бы версии были разными?
источник

СГ

Сергей Голод... in pgsql – PostgreSQL
Igor
А если бы версии были разными?
компот. Обычно в комлекте с соответствующей версией СУБД идут утилиты этой же самой версии что и СУБД
источник

I

Igor in pgsql – PostgreSQL
Сергей Голод
компот. Обычно в комлекте с соответствующей версией СУБД идут утилиты этой же самой версии что и СУБД
Спасибо, попробую
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Eugen
А что если бы PostgreSQL поддерживал специальную оптимизацию для функций, которые возвращают QUERY?  (см. UPD часть тут: https://stackoverflow.com/a/62614600/4632019 Сорри, что возможно там сумборное объяснение, но это пока только идея)

Как вам такая идея?
Лично я её не понял. Объяснение невнятное, IMHO.
Кстати, вот скажите, зачем Вы даёте ссылки на fiddles, которые таковыми не являются (ни сам сайт, и никто вообще не может выполнить / воспроизвести то, что там выложено)?!
И вообще, кажется, что запрос можно было бы переписать иначе ("выразить" его через CTE), но попробовать что-то, опять-таки, ни у кого не выйдет. :(
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Максим
Зачем with в sql
По идее, это средство абстракции для облегчения написания запросов.
А его поведение в отношении оптимизации зависит от версии PostgreSQL.
Вкратце, до v12 — рассматривается как независимая оптимизационная проблема и результат всегда материализуется (т.е. результат выполнения сохраняется в temporary storage), а с v12 — по умолчанию, по возможности (когда это не изменило бы результат запроса в рамках разрешённых ISO SQL оптимизаций) выполняется inlining, т.е. оптимизируется вместе с остальным запросом, и материализации не выполняется (т.е. обрабатывается так, как вложенные запросы до v12).
Упомянутый temporary storage по мере возможности сохраняется в памяти, если не влезает — используется диск.
источник

kp

krn p in pgsql – PostgreSQL
гайз, такой вопрос.
а как запилить условие типа
WHERE a=0 AND (b = 0 OR c=0)
?
источник

АП

Агент Печенька... in pgsql – PostgreSQL
krn p
гайз, такой вопрос.
а как запилить условие типа
WHERE a=0 AND (b = 0 OR c=0)
?
Так ты его уже написал.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Eduard Korolev
кто нибудь может помочь с анализом EXPLAIN запроса в личку? Запрос большой, сложный, тут долго писать. Суть в том, что есть селект из таблицы, 7 джоинов, сортировка по 1 джоину по сгрупированному параметры и условие в запросе по LIKE concat(...). Понятно, что нужно денормализовывать таблицу, но самое странное, что в этом виде запрос работает хорошо - до 100 мс, а если заменишь лайк на условие с UUID id, то запрос вырастает до 2к мс. Как такое может быть? Когда по id есть уникальный индекс и внешние ключи на каждой таблице
Да выложили бы Вы запрос, план (EXPLAIN (ANALYZE, BUFFERS), и желательно на https://explain.depesz.com/ ), и \d каждой таблицы. Так хоть те,  у кого будет возможность, посмотрят / подскажут...
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Igor
А где можно почитать про совместимость версий постгреса при бэкапе-ресторе? Например, если база 10 версии дампится версие 9.2 pg_dump и восстанавливается тоже версией 9.2 pg_restore в базу 10 версии, то ок всё будет?
> А где можно почитать про совместимость версий постгреса при бэкапе-ресторе?

Во-первых, pg_dump создаёт не backup (для него есть pg_basebackup), а просто дамп. ;)
Во-вторых, он (довольно далеко, кстати) обратно совместим. Т.е. pg_dump v11 может снимать дампы с 9.4, например.
Это официально поддерживается проектом, и должно работать (потому что это — один из путей upgrade).

А вот наоборот — не получится вообще. Т.е. pg_dump 9.4 откажется работать с сервером v11.
Далее, дампы, снятые с сервера v11 (тем же или более новым pg_dump) — скорее всего, не загрузятся в 9.4.

И, кстати, не факт, что дампы, снятые со старых версий PostgreSQL старым же pg_dump, удастся загрузить в новые версии PostgreSQL (т.е. официально не поддерживается, но почти всегда работает). ;)
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
> оукей, в чем суть:

"Суть" в том, что из трёх вещей, которые я Вас попросил показать, Вы показали ноль. :(
Соответственно, смотреть тут просто почти не на что (это практически пустая трата времени).
И ещё, кстати — какая это версия PostgreSQL? И есть ли какие-то не default настройки costs?

> Вопрос, как сделать с минимальной кровью.

Просто "чтоб не думать" — Вы пробовали этот запрос с from_collapse_limit = join_collapse_limit = geqo_threshold = 14 (или более)?
источник

РR

Руслан Ruslan73... in pgsql – PostgreSQL
Дмитрий Лукьянов
Некоторые современные разработчики и SQL не знают. Херачат все через ORM, и не парятся
Потом все равно отчётик простенький хоть надо наваять, чего нить поджойнить. Или страничку со списком чего-то из разных таблиц. Не видел таких чтоб не знали совсем. Нечасто пользуются - да. Но знают.
источник