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 ответов

14 просмотров
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 на уровне виртуалки только одна базулька, но ниже на уровне вирт. инфраструктуры не уверен сколько

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта