Eu li este artigo sobre o desempenho do PostgreSQL no SSD:
Estas duas configurações parecem ser importantes random_page_cost
vs.seq_page_cost
Como ambos os parâmetros precisam corresponder ao hardware específico, gostaria de saber se é possível detectar automaticamente os valores correspondentes?
Atualizar
Tenho estes passos em mente:
- O script cria algumas tabelas fictícias
- Scripts insere dados nas tabelas
- Script faz algumas consultas
- O script mostra valores correspondentes para random_page_cost e seq_page_cost
- Um sistema humano ou automatizado pega esses valores e atualiza a configuração. Este passo não faz parte da questão.
Certamente é possível definir os parâmetros automaticamente, mas ninguém enviou um patch para isso.
Você precisa conhecer as velocidades de leitura sequencial e não sequencial da unidade. Existem várias maneiras de obter isso, mas você também pode usar o Google porque provavelmente não importa muito . Por exemplo, uma rápida pesquisa no Google para o desempenho de leitura sequencial e não sequencial do Samsung SSD 840 Pro (256 GB) mostra isso da AnandTech, com
Isso é aproximadamente uma proporção de 1:5, então
Atenção,
random_page_cost
leva em consideração o cache,Mostrei que o meu
random_page_cost
é 5 vezes mais lento que o sequencial. Ainda é um curinga quanto dorandom_page_cost
já está armazenado em cache. Infelizmente, esses valores realmente não importam muito, a menos que a varredura de índice e a sequencial estejam tão próximas que você possa escolher a varredura sequencial por acidente. Isso raramente é o caso. Não é incomum que um Índice acelere as coisas milhares de vezes.Por exemplo, meu
cpu_index_tuple_cost
é0.005
. AFAIK, isso significa que escanear 1.000 entradas no índice é o mesmo aos olhos do planejador que ir ao heap uma vez para buscar um bloco.