sort statistics and functions

Started by Satoshi Nagayasuover 21 years ago1 messages
#1Satoshi Nagayasu
nagayasus@nttdata.co.jp

Hello all,

I'm now working on performance tuning for PostgreSQL application.

I know shared_buffers and sort_mem have huge impacts for the performance.

If a disk sort (called tape sort in the code) is occured, we need to
increase sort_mem value. Then I found it is difficult to get a
reasonable value for sort_mem.

So I've implemented new five functions. These functions can give some
hints to estimate the sort_mem value.

- pg_stat_get_heap_all_sorts()
- pg_stat_get_heap_tape_sorts()
- pg_stat_get_index_all_sorts()
- pg_stat_get_index_tape_sorts()
- pg_stat_get_max_sort_size()

Using these functions, we can create a new system view about sort memory
condition and statistics as below.
------------------------------------------------------------------
snaga=# select pg_stat_get_heap_all_sorts() as heap_all,
pg_stat_get_heap_tape_sorts() as heap_tape,
pg_stat_get_index_all_sorts() as index_all,
pg_stat_get_index_tape_sorts() as index_tape,
pg_stat_get_max_sort_size() as max_sort_size;
heap_all | heap_tape | index_all | index_tape | max_sort_size
----------+-----------+-----------+------------+---------------
2 | 1 | 0 | 0 | 110203384
(1 row)

snaga=#
------------------------------------------------------------------

And my patch reports sort memory condition to the log.

------------------------------------------------------------------

NOTICE: tuplesort is attempting to use physical device.
NOTICE: Max used size of the sort memory (213109 kB)

------------------------------------------------------------------

I'm ready to post this patch.

Is this useful? Any comments?

--
NAGAYASU Satoshi <nagayasus@nttdata.co.jp>
OpenSource Development Center,
NTT DATA Corp. http://www.nttdata.co.jp/