This hack is an old chestnut among PostgreSQL performance tuners, but it doesn't seem to be widely known elsewhere. That's a shame, because it's pure win, and it's ridiculously easy to set up. You don't even need to restart PostgreSQL.
Here's the situation: PostgreSQL writes certain temporary statistics. These go in the dir given by the
stats_temp_directory setting. By default, that's
pg_stat_tmp in the data dir. Temp files get written a lot, but there's no need for them to persist.
That makes them perfect candidates for a ramdisk (a.k.a. RAM drive). A ramdisk is a chunk of memory treated as a block device by the OS. Because it's RAM, it's super-fast. As far as the app is concerned, the ramdisk just holds a filesystem that it can read and write like any other. Moreover, PostgreSQL generally only needs a few hundred kilobytes for
stats_temp_directory; any modern server can fit that in RAM.
In Linux, you set up a ramdisk like this:
'mkdir /var/lib/pgsql_stats_tmp' 
'chmod 777 /var/lib/pgsql_stats_tmp'
'chmod +t /var/lib/pgsql_stats_tmp'
Add this line to
/etc/fstab. That 2G is an upper limit; the system will use only as much as it needs.
tmpfs /var/lib/pgsql_stats_tmp tmpfs size=2G,uid=postgres,gid=postgres 0 0
Change the stats_temp_directory setting in postgresql.conf:
stats_temp_directory = '/var/lib/pgsql_stats_tmp'
Tell PostgreSQL to re-read its configuration:
'pg_ctl -D YOUR_DATA_DIR reload'
And that's it!
Other operating systems have different ways to set up ramdisks. Perhaps I'll cover them in a later post.
 The directory
/var/lib/pgsql_stats_tmp is an arbitrary choice, but it works well for Debian's filesystem layout.