Kenneth Marshall <ktm@rice.edu> writes:
> I have a system that was running version 9.6.17 running on a system with
> 48gb of memory and spinning disks front-ed by a HW RAID controller with
> NVRAM cache. We moved to a new box running version 12.3 on a system with
> 64gb of memory and NVME SSD drives. Here are the system config options:
> OLD:
> shared_buffers = 2048MB # min 128kB
> work_mem = 128MB # min 64kB
> maintenance_work_mem = 1024MB # min 1MB
> effective_io_concurrency = 8 # 1-1000; 0 disables prefetching
> max_parallel_workers_per_gather = 0 # taken from max_worker_processes
> effective_cache_size = 24GB
> default_statistics_target = 500 # range 1-10000
> from_collapse_limit = 30
> join_collapse_limit = 30 # 1 disables collapsing of explicit
> seq_page_cost = 1.0 # measured on an arbitrary scale
> random_page_cost = 4.0 # same scale as above
> NEW:
> shared_buffers = 12GB # min 128kB
> work_mem = 128MB # min 64kB
> maintenance_work_mem = 2GB # min 1MB
> effective_io_concurrency = 200 # 1-1000; 0 disables prefetching
> max_worker_processes = 24 # (change requires restart)
> max_parallel_workers_per_gather = 4 # taken from max_parallel_workers
> max_parallel_workers = 24 # maximum number of max_worker_processes that
> seq_page_cost = 1.0 # measured on an arbitrary scale
> random_page_cost = 1.1 # same scale as above for SSDs
> effective_cache_size = 36GB
> default_statistics_target = 500 # range 1-10000
> from_collapse_limit = 30
> join_collapse_limit = 30 # 1 disables collapsing of explicit
Maybe you should be changing fewer variables at one time ...
In particular, decreasing random_page_cost as you've done here is
going to encourage the planner to rely on nestloop-with-inner-indexscan
joins. Does undoing that change improve matters?
I personally think that v12 is way too enthusiastic about invoking
JIT compilation, too. You might want to play with the parameters
for that as well.
regards, tom lane