172 похожих чатов

Привет! подскажите, у меня есть такой запрос, который сильно медленно

отрабатывается, результат запроса 15 МБ.
explain (analyze,buffers) SELECT OAV."ID",OAV."TEXT_VALUE" FROM public."AO_8542F1_IFJ_OBJ_ATTR_VAL" OAV JOIN public."AO_8542F1_IFJ_OBJ_ATTR" OA ON OA."ID" = OAV."OBJECT_ATTRIBUTE_ID" WHERE OA."OBJECT_TYPE_ATTRIBUTE_ID" IN (529, 10, 506, 143) ;
QUERY PLAN
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Gather (cost=1000.57..712718.82 rows=599184 width=34) (actual time=0.474..2319.057 rows=655844 loops=1)
Workers Planned: 4
Workers Launched: 4
Buffers: shared hit=3296662 read=258958
-> Nested Loop (cost=0.56..651800.42 rows=149796 width=34) (actual time=0.111..2204.502 rows=131169 loops=5)
Buffers: shared hit=3296662 read=258958
-> Parallel Seq Scan on "AO_8542F1_IFJ_OBJ_ATTR" oa (cost=0.00..425675.07 rows=152918 width=8) (actual time=0.053..1049.557 rows=131169 loops=5)
Filter: ("OBJECT_TYPE_ATTRIBUTE_ID" = ANY ('{529,10,506,143}'::integer[]))
Rows Removed by Filter: 7888265
Buffers: shared hit=13870 read=258958
-> Index Scan using index_ao_8542f1_ifj228666017 on "AO_8542F1_IFJ_OBJ_ATTR_VAL" oav (cost=0.56..1.47 rows=1 width=42) (actual time=0.008..0.008 rows=1 loops=655844)
Index Cond: ("OBJECT_ATTRIBUTE_ID" = oa."ID")
Buffers: shared hit=3282792
Planning time: 0.326 ms
Execution time: 2340.710 ms


Подскажите куда копать ? буффера, довольно норм

7 ответов

16 просмотров
Gonchik-Tsymzhitov Автор вопроса

этот же запрос повторяется с частотой 2-3 минуты, на стороне приложения пока готовятся, но как быть с продом ?

Перед тем, как копаться — А Вам действительно нужно 655844 rows в результате (т.е. какой в этом смысл для клиента? Или это часть какого-то ETL и т.п.?)?

У вас, для начала, совсем чуть-чуть берется из кэша, а остальное читается с дисков. Buffers: shared hit=13870 read=258958

Если не ошибаюсь - read=258958 - это около 2 Gb. Вроде читать 1Gb/s с диска нормально?

Sergey Gr
Если не ошибаюсь - read=258958 - это около 2 Gb. В...

Если диск не ssd, да ещё и другим вводом-выводом нагружен, то всё может быть сильно грустнее. Я бы попробовал сделать индекс на OA(OBJECT_TYPE_AtTRIBUTE_ID, ID). Можно и без ID, но его наличие в индексе по идее может позволить сделать index only scan, без обращения к самой таблице за значениями в поле ID

Gonchik-Tsymzhitov Автор вопроса
sexxst
Если диск не ssd, да ещё и другим вводом-выводом н...

диски ssd, насчет iops на уровне виртуалки только одна базулька, но ниже на уровне вирт. инфраструктуры не уверен сколько

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта