Re: Worse performance with higher work_mem?
От | Tom Lane |
---|---|
Тема | Re: Worse performance with higher work_mem? |
Дата | |
Msg-id | 5228.1578961177@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Worse performance with higher work_mem? (Israel Brewster <ijbrewster@alaska.edu>) |
Ответы |
Re: Worse performance with higher work_mem?
|
Список | pgsql-general |
Israel Brewster <ijbrewster@alaska.edu> writes: > In looking at the explain analyze output, I noticed that it had an “external merge Disk” sort going on, accounting forabout 1 second of the runtime (explain analyze output here: https://explain.depesz.com/s/jx0q <https://explain.depesz.com/s/jx0q>).Since the machine has plenty of RAM available, I went ahead and increased the work_memparameter. Whereupon the query plan got much simpler, and performance of said query completely tanked, increasingto about 15.5 seconds runtime (https://explain.depesz.com/s/Kl0S <https://explain.depesz.com/s/Kl0S>), most ofwhich was in a HashAggregate. > How can I fix this? Thanks. Well, the brute-force way not to get that plan is "set enable_hashagg = false". But it'd likely be a better idea to try to improve the planner's rowcount estimates. The problem here seems to be lack of stats for either "time_bucket('1 week', read_time)" or "read_time::date". In the case of the latter, do you really need a coercion to date? If it's a timestamp column, I'd think not. As for the former, if the table doesn't get a lot of updates then creating an expression index on that expression might be useful. regards, tom lane
В списке pgsql-general по дате отправления: