Size: a a a

pgsql – PostgreSQL

2020 June 13

TS

Tagil Steel in pgsql – PostgreSQL
2flower _
вы с поиском совершили грубейшую ошибку в производительности, я даже не знаю как не один человек это пропустил, это
просто дичь.
поэтому без обид, но можно я оставлю себе возможность сомневаться в оптимальном исполнении ваших возможностей.
лучше напишите скрипт с вложенными sql который тормозит
За указание на ошибку спасибо - устранили, проблема практически решилась, допустили потому что писали быстро и пишем функции в основном на С - вот и просмотрели.
А вот сложные запросы пишем постоянно - и этот писали - так, как Вы говорите, получается 4 уровня вложенности, а не 2, как в нашем случае.  С соответствующим дичайшим оверхедом.
источник

2_

2flower _ in pgsql – PostgreSQL
Tagil Steel
За указание на ошибку спасибо - устранили, проблема практически решилась, допустили потому что писали быстро и пишем функции в основном на С - вот и просмотрели.
А вот сложные запросы пишем постоянно - и этот писали - так, как Вы говорите, получается 4 уровня вложенности, а не 2, как в нашем случае.  С соответствующим дичайшим оверхедом.
я не буду вас из болота тянуть, если вы этого не хотите, вы уперлись, что вы все делаете правильно, ваш код заставляет меня сомневаться( вы писали sql в стиле с).
дело ваше, рад что хоть чем то смог помочь, больше не буду вам докучать.
источник

TS

Tagil Steel in pgsql – PostgreSQL
2flower _
я не буду вас из болота тянуть, если вы этого не хотите, вы уперлись, что вы все делаете правильно, ваш код заставляет меня сомневаться( вы писали sql в стиле с).
дело ваше, рад что хоть чем то смог помочь, больше не буду вам докучать.
Возможно можно и правильнее, но я показал как мы сделали и сказал как пытались. То, что Вы предлагаете (как я понял, так как конкретики Вы не предлагаете), мы пытались сделать - оно не проходит, результат получается значительно хуже.
источник

2_

2flower _ in pgsql – PostgreSQL
Tagil Steel
Возможно можно и правильнее, но я показал как мы сделали и сказал как пытались. То, что Вы предлагаете (как я понял, так как конкретики Вы не предлагаете), мы пытались сделать - оно не проходит, результат получается значительно хуже.
я не могу сказать ничего конкретного пока вы код не покажете, я уже несколько раз вам писал.
code review не дураки придумали.
источник

TS

Tagil Steel in pgsql – PostgreSQL
2flower _
я не могу сказать ничего конкретного пока вы код не покажете, я уже несколько раз вам писал.
code review не дураки придумали.
О каком коде Вы говорите? Я же выкладывал запрос.
источник

2_

2flower _ in pgsql – PostgreSQL
Tagil Steel
О каком коде Вы говорите? Я же выкладывал запрос.
можете продублировать, я либо его пропустил, либо не понял, что это оно.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Tagil Steel
Еще раз - этот запрос выполняется оптимальным образом, быстрее, чем есть - эту задачу не решить.
Вы бы показали его (и структуру таблиц) полностью (или, хотя бы, существенную часть) — чтобы другие тоже могли посмотреть и попробовать.
Потому что ситуации, когда ровно после подобных утверждений кто-то ускорял запрос на пару порядков , бывали (и даже прямо в этом чате, насколько я помню). ;)
источник

2_

2flower _ in pgsql – PostgreSQL
Yaroslav Schekin
Вы бы показали его (и структуру таблиц) полностью (или, хотя бы, существенную часть) — чтобы другие тоже могли посмотреть и попробовать.
Потому что ситуации, когда ровно после подобных утверждений кто-то ускорял запрос на пару порядков , бывали (и даже прямо в этом чате, насколько я помню). ;)
так здесь так и было, вначале были утверждения какой медленный pgplsql
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Tagil Steel
О каком коде Вы говорите? Я же выкладывал запрос.
Таблицы (идеально — с тестовыми данными, конечно).
Запрос (лучше — с пояснением задачи).
Код и CREATE FUNCTION всех относящихся к делу функций (агрегатов).
А, и типов тоже (пропустил).
В одном месте (paste site, например).
источник

TS

Tagil Steel in pgsql – PostgreSQL
2flower _
так здесь так и было, вначале были утверждения какой медленный pgplsql
Так он и работал медленно. Потому что в массиве искали с помощью foreach.Хорошо? конечно, что можно череp any сделать, но foreach - то тоже должен работать быстро! Не в 10 же раз медленнее!
источник

2_

2flower _ in pgsql – PostgreSQL
Tagil Steel
Так он и работал медленно. Потому что в массиве искали с помощью foreach.Хорошо? конечно, что можно череp any сделать, но foreach - то тоже должен работать быстро! Не в 10 же раз медленнее!
вы просто мыслите категориями другого языка, здесь надо думать в стиле sql а не с.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Tagil Steel
Так он и работал медленно. Потому что в массиве искали с помощью foreach.Хорошо? конечно, что можно череp any сделать, но foreach - то тоже должен работать быстро! Не в 10 же раз медленнее!
Хмм... можете показать интерпретируемый (или даже "компилируемый" в bytecode) язык, у которого циклы работают не "в 10 же раз медленнее" (а то и хуже!), чем написанные в каком-то компилируемом в машинный код (или JIT)?
источник

TS

Tagil Steel in pgsql – PostgreSQL
Yaroslav Schekin
Хмм... можете показать интерпретируемый (или даже "компилируемый" в bytecode) язык, у которого циклы работают не "в 10 же раз медленнее" (а то и хуже!), чем написанные в каком-то компилируемом в машинный код (или JIT)?
Я это понимаю, поэтому и спросил мнения сообщества, будет ли на jit -  языке, например, на plv8 хотя-бы не в 10 а в 3 раза медленнее.
Мне посоветовали заменить foreach на any - заменил, получил хороший результат. Э то не то, чт о на С, но приемлемо для нашего применения, так как работать будет в "авральном случае".
Далее стал вопрос, как обойтись вообще без наших агрегатов.
источник

KK

Konstantin K in pgsql – PostgreSQL
искать через foreach - последнее дело
источник

TS

Tagil Steel in pgsql – PostgreSQL
Konstantin K
искать через foreach - последнее дело
Смотря на чем - на С - это единственная возможность, если данные хранятся в массиве. В нашем случае мы хранимв b-дереве и все ищется очень быстро, а в PGSQL - мы уже увидели производительность.
источник

TS

Tagil Steel in pgsql – PostgreSQL
Yaroslav Schekin
Таблицы (идеально — с тестовыми данными, конечно).
Запрос (лучше — с пояснением задачи).
Код и CREATE FUNCTION всех относящихся к делу функций (агрегатов).
А, и типов тоже (пропустил).
В одном месте (paste site, например).
Тут таблицы и запрос.
https://pastebin.com/BH0f4XS3
источник

Ð

Ð in pgsql – PostgreSQL
а почему данные хранятся в массиве, а не в таблице?
источник

TS

Tagil Steel in pgsql – PostgreSQL
Ð
а почему данные хранятся в массиве, а не в таблице?
Какие именно?
источник

Ð

Ð in pgsql – PostgreSQL
Tagil Steel
Смотря на чем - на С - это единственная возможность, если данные хранятся в массиве. В нашем случае мы хранимв b-дереве и все ищется очень быстро, а в PGSQL - мы уже увидели производительность.
упомянутые тут
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Извините, но это и близко не тянет на test case (выполнить это ни у кого не получится).
В общем, чтобы получить конкретные советы, нужно что-то воспроизводимое показать.
источник