Re: [HACKERS] Q about heap_getattr
От | Tom Lane |
---|---|
Тема | Re: [HACKERS] Q about heap_getattr |
Дата | |
Msg-id | 8044.917208305@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Re: [HACKERS] Q about heap_getattr (Bruce Momjian <maillist@candle.pha.pa.us>) |
Ответы |
Re: [HACKERS] Q about heap_getattr
|
Список | pgsql-hackers |
Bruce Momjian <maillist@candle.pha.pa.us> writes: >> Tom Lane wrote: >>>> I've been doing some more backend profiling, and observe that in a large >>>> SELECT from a table with lots of columns, nocachegetattr (the guts of >>>> heap_getattr) is at the top of the list, accounting for about 15% of >>>> runtime. >>>> >>>> The percentage would be lower in a table with fewer columns or no null >>>> columns, but it still seems worth working on. (Besides, this case right >>>> here is a real-world case for me.) > nocachegetattr() computes all offsets, even offsets after the column you > are requesting, to prevent future calls. You must have nulls or > varlena's that is causing nocachegetattr to be called so many times. > Is this true? Right, this table has 38 columns, many of which can be NULL and several of which are variable-size. So it's probably the worst-case scenario as far as the cost of nocachegetattr is concerned. It looked to me like the pre-computation aspect of nocachegetattr only works for tables where all the tuples have the same physical layout, ie, no varlenas or nulls; is that right? > heap_getattr() certainly is called many times, and needs any > optimization we can give it. I have done as much as I could. Perhaps > there are more opportunities I missed. I thought I had spotted a couple of possibilities for small improvements of the code inside nocachegetattr, but it was awfully late by then so I didn't try changing anything. I'll take another look. regards, tom lane
В списке pgsql-hackers по дате отправления: