-
-
Notifications
You must be signed in to change notification settings - Fork 140
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Como melhorar a performance de escrita em HD? #120
Comments
Depende muito. Você pode passar as configurações (processador, memória) do computador rodando o processo, bem como as opções utilizadas no comando Além disso, o que eu faço, vez ou outra:
Isso tudo não levara uma manhã, e, vez o ou outra, o provedor de nuvem nem cobra por ser muito pouco tempo (mesmo para uma máquina cara). Talvez com esse link vc consiga uns créditos na DigitalOcean. Lá, para fazer esse processo, normalmente uso esse: |
Complementando com coisas que pensei e não escrevi:
|
Eu estou rodando em um servidor com um processador Intel(R) Xeon(R) Bronze 3106 (32 núcleos lógicos) e 32GB de RAM. Ele tem um HD de 4TB, mas não tem SSD. Tenho que rodar on-premise mesmo. Utilizei os parâmetros default mesmo. --max-parallel-db-queries=32 e --batch-size=8192. Valeu pela ajuda tão rápida! Admirando ainda mais o seu trabalho aqui!!! |
Perfeito! Conta como foi que tô curioso. Com uma máquina dessa, com certeza o gargalo é a escrita mesmo. |
Oi, Também queria saber como é essa questão de performance, contratei uma maquina bem parruda na AWS e aumentei os parámetros --max-parallel-db-queries=50 mas ainda assim a taxa de apenas 466 it/segundo o que deixa o processo tudo para ser completado em 55 horas, será que esotu fazendo algo errado? Obrigado! |
Difícil dizer sem saber o que é essa máquina parruda e como está teu processo.
Fora isso, como falei antes:
Você mencionou que colocou as queries paralelas para 50. Testou outros valores? Quais? Testou mudar o tamanho do lote (batch size)? Com quais valores? |
Máquina parruda, das carateristicas que vocẽ comentou antes: Uma t3a.2xlarge Execução e banco de dados na mesma máquina? Na mesma região? Sim, e sim. North Virginia
Também testei valores com e sem --no-pŕivacy O resultado sempre está dando igual.. tem uma tarxa de 3000it/sec e passa a 400 it/se. Por isso queria entender se estou fazendo alguma coisa errada. |
Talvez seja pouco: considerando sistema operacional, instalação do Postgres, dados de fownload, swap etc. Como diz a documentação: É necessário cerca de 150Gb disponíveis de espaço em disco para armazenar os dados. Você deve estar operando nesse limite. No exemplo que dei, uso 320Gb de SSD.
Acho que a variação aqui foi pouca. Normalmente teste valores exponenciais: o padrão acho que é 32, você testou 64, mas acho que pode continuar no exponencial de 128 e 256, pelo menos.
Acho bons os intervalos. Com isso e a variação de paralelismo no banco de dados, você deve conseguir uma velocidade maior. Eu deveria ter anotado os valores que usei. Mas precisamos de um benchmark mais formal numa máquina desse padrão mesmo… (os valores que uso são isso: acerto e erro; acerto, erro e esquecimento, no caso hahaha…). Uma ciclo que faço é:
|
Fala pessoal Estou usando o projeto para um trabalho pessoal e entendendo todo o contexto, vim compartilhar um teste que vou fazer (assim que o servidor ftp me permitir 🙃). Vi todo esse problema do tamanho dos dados pós inserção no postgres e também de questões de performace. Vou testar uma abordagem diferente, eis o que vou fazer: Após baixar os dados em CSV, vou processar eles e salvar em formato parquet (otimizado). Como a API é apenas para leitura dos dados, penso em usar o postgres apenas como uma interface para consulta desses dados. Tendo esses dados gravados em formato otimizado para leitura, talvez seja possível reduzir o problema de tempo de gravação e também de custos (embora a arquitetura deveria ser repensada). De qualquer modo, assim que eu finalizar os testes, volto aqui para compartilhar mais detalhes |
Você pode (se confiar em mim hehehe) baixar do mirror extra-oficial que mantenho. Curiosíssimo para ver o resultado desse experimento — muito obrigado, @matheus-rossi : ) |
@matheus-rossi, se ajudar, criei o arquivo Parquet aqui com base no banco de dados de produção, ficou com 25Gb (o banco em produção ocupa 107Gb). Usei o O que não consegui ainda é criar um |
Fechado por inatividade. |
Meu servidor do postgres tem um HD. Está pedindo 10 dias para incluir os registros. Alguma dica de como acelerar o processo de escrita no postgresql?
The text was updated successfully, but these errors were encountered: