Although the executor uses the work_men and temp_buffers, which are allocated in the memory, for query processing, it uses temporary files if the processing cannot be performed within the memory alone.
Using the ANALYZE option, the EXPLAIN command actually executes the query and displays the true row counts, true run time, and the actual memory usage. A specific example is shown below:
In Line 6, the EXPLAIN command shows that the executor has used a temporary file whose size is 10000kB.
Temporary files are created in the base/pg_tmp subdirectory temporarily, and the naming method is shown follows:
{"pgsql_tmp"} + {PID of the postgres process which creates the file} . {sequencial number from 0}
For example, the temporary file ‘pgsql_tmp8903.5’ is the 6th temporary file created by the postgres process with the pid of 8903.
$ ls -la /usr/local/pgsql/data/base/pgsql_tmp*
-rw------- 1 postgres postgres 10240000 12 4 14:18 pgsql_tmp8903.5