Hi there, I have recently found a nice utility called memstat (which shows how much of private (not shared)) memory each process uses. What kind of surprised me was the amount of memory that is used by PL/pgSQL (one more reason not to provide it by default? ;-)). For example: # sysctl -w|grep plpgsql.so|head -6 39048k: PID 23814 (/usr/lib/postgresql/8.2/lib/plpgsql.so) 38972k: PID 23815 (/usr/lib/postgresql/8.2/lib/plpgsql.so) 39048k: PID 23817 (/usr/lib/postgresql/8.2/lib/plpgsql.so) 39048k: PID 23822 (/usr/lib/postgresql/8.2/lib/plpgsql.so) 39048k: PID 23825 (/usr/lib/postgresql/8.2/lib/plpgsql.so) 39048k: PID 23835 (/usr/lib/postgresql/8.2/lib/plpgsql.so) Its an x86_64 platform, memory settings are: temp_buffers = 8MB work_mem = 8MB ...this does not include the plpgsql.so library, which is shared by all backends (which use PL/pgSQL). I know that system will eventually swap out unused parts, but then again, 40MB * number_of_connections is a bit wasteful. It seems to me that both temp_buffers and work_mem don't affect plpgsql.so's allocations. I wonder if this is something specific for my setup, or if not, can we reduce memory used a bit. Regards, Dawid PS: I am just starting research now, I thought other people's view is valuable. ---------------------------(end of broadcast)--------------------------- TIP 9: In versions below 8.0, the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match