AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 204178
Accepted
guettli
guettli
Asked: 2018-04-18 04:25:18 +0800 CST2018-04-18 04:25:18 +0800 CST 2018-04-18 04:25:18 +0800 CST

Autodetectar 'random_page_cost' vs 'seq_page_cost'

  • 772

Eu li este artigo sobre o desempenho do PostgreSQL no SSD:

https://amplitude.engineering/how-a-single-postgresql-config-change-improved-slow-query-performance-by-50x-85593b8991b0

Estas duas configurações parecem ser importantes random_page_costvs.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:

  1. O script cria algumas tabelas fictícias
  2. Scripts insere dados nas tabelas
  3. Script faz algumas consultas
  4. O script mostra valores correspondentes para random_page_cost e seq_page_cost
  5. Um sistema humano ou automatizado pega esses valores e atualiza a configuração. Este passo não faz parte da questão.
postgresql ssd
  • 1 1 respostas
  • 11044 Views

1 respostas

  • Voted
  1. Best Answer
    Evan Carroll
    2018-04-22T21:26:03+08:002018-04-22T21:26:03+08:00

    Como ambos os parâmetros precisam corresponder ao hardware específico, gostaria de saber se é possível detectar automaticamente os valores correspondentes?

    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

    • Leitura aleatória 101,4/mbps
    • Leitura sequencial 510,7/mbps

    Isso é aproximadamente uma proporção de 1:5, então

    SET random_page_cost = 5;
    SET seq_page_cost = 1;
    

    Atenção, random_page_costleva em consideração o cache,

    O acesso aleatório ao armazenamento em disco mecânico é normalmente muito mais caro do que o acesso sequencial quatro vezes. No entanto, um padrão mais baixo é usado (4.0) porque a maioria dos acessos aleatórios ao disco, como leituras indexadas, são consideradas em cache. O valor padrão pode ser considerado como modelar o acesso aleatório como 40 vezes mais lento que o sequencial, enquanto espera que 90% das leituras aleatórias sejam armazenadas em cache.

    Se você acredita que uma taxa de cache de 90% é uma suposição incorreta para sua carga de trabalho, você pode aumentar random_page_costpara refletir melhor o custo real das leituras de armazenamento aleatórias. Da mesma forma, se é provável que seus dados estejam completamente em cache, como quando o banco de dados é menor que a memória total do servidor, a diminuição random_page_costpode ser apropriada. O armazenamento que tem um baixo custo de leitura aleatória em relação ao sequencial, por exemplo, unidades de estado sólido, também pode ser melhor modelado com um valor menor para random_page_cost.

    Mostrei que o meu random_page_costé 5 vezes mais lento que o sequencial. Ainda é um curinga quanto do random_page_costjá 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.

    • 12

relate perguntas

  • Posso ativar o PITR depois que o banco de dados foi usado

  • Práticas recomendadas para executar a replicação atrasada do deslocamento de tempo

  • Os procedimentos armazenados impedem a injeção de SQL?

  • Sequências Biológicas do UniProt no PostgreSQL

  • Qual é a diferença entre a replicação do PostgreSQL 9.0 e o Slony-I?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve