Jeremy Haile wrote:
What is a decent default setting for work_mem and maintenance_work_mem, considering I am regularly querying tables that are tens of millions of rows and have 2-4 GB of RAM?
Well, work_mem will depend on your query-load. Queries that do a lot of sorting should benefit from increased work_mem. You only have limited RAM though, so it's a balancing act between memory used to cache disk and per-process sort memory. Note that work_mem is per sort, so you can use multiples of that amount in a single query. You can issue a "set" to change the value for a session.
How you set maintenance_work_mem will depend on whether you vacuum continually (e.g. autovacuum) or at set times.
Also - what is the best way to determine decent settings for temp_buffers and random_page_cost?
With all of these, testing I'm afraid. The only sure thing you can say is that random_page_cost should be 1 if all your database fits in RAM.
-- Richard Huxton Archonet Ltd