O documento discute a implementação de um banco de dados PostgreSQL em nuvem de alto desempenho. Ele aborda tópicos como tuning do banco de dados, otimização de consultas, balanceamento de carga e escalabilidade horizontal e vertical para melhorar o desempenho e disponibilidade. O foco é na solução SaveInCloud que oferece bancos de dados escaláveis com recursos como replicação automática e backups diários sem custo.
Oracle e SQL Server na prática mitos, semelhanças e diferenças
Cloud PostgreSQL escalável e de alto desempenho
1. Cloud PostgreSQL em alta
performance
15/12/2020
Fábio de Carvalho Vieira
Powered
2. COMPARAÇÃO
● Downtimes/Oscilações no Deploy
● Downtimes/Oscilações ao reiniciar serviço
● Alto risco de falhas ou sobrecarga na VM
● Dificuldade para escalar
● Modular e Flexível
● Deploy e atualizações independentes
● Mais fácil para escalar e manter
4. ESCOPO PROJETO - CHECKLIST
★ Qual versão utilizar:
https://www.postgresql.org/about/featurematrix/
★ Qual topologia utilizar ?
★ Utilizar Balanceador ?
★ Otimização com PostgresqlTuner
★ Monitoramento
5. FOCO NA SOLUÇÃO
1. Tuning do banco de dados
2. Otimização das consultas e monitoramento de queries lentas
3. Escalabilidade dos servidores e infra estrutura
6. TUNING DO BANCO
1. Uso de memória / buffer / cache
2. Principais variáveis para levar em consideração ao tuning:
shared_buffer, wal_buffers, effective_cache_size, work_mem,
maintenance_work_mem, max_connections,
checkpoints_segments, random_page_cost
3. Utilizando o postgresqltuner (https://github.com/jfcoz/postgresqltuner)
4. Tratar resultados e aplicar configurações
7. OTIMIZAÇÃO DAS CONSULTAS
● Monitorar consultas lentas e re-escrever ou eliminar
● SLOW QUERIES
● Dicas de como analisar queries lentas:
https://marmelab.com/blog/2019/02/13/how-to-improve-postgres-perfor
mances.html
● Ferramenta auxiliar: http://pgbadger.darold.net
8. SAVEINCLOUD COM DB ESCALÁVEIS
Vantagens
● Escalabilidade Vertical e Horizontal (assinados automaticamente em
diferentes hardwares físicos)
● Instalação de ambientes complexos em alguns cliques
● Rede Privada de Alta Performance
● Discos SSD Enterprise com RAID 10
● Flexibilidade para contratar mais IOPs, os ambientes iniciam com 1000
IOPs
● Backup Full diário sem custos
9. AUTOMAÇÃO
➔ Opção de replicação master-slave automático
➔ Para Master-Master opções manuais aqui
NA PRÁTICA - PostgreSQL ESCALÁVEL
10. Balancer
➔ HA Proxy ou NGINX Balancer
(mais simples)
➔ https://www.pgpool.net
(mais robusto)
➔ Automatic Fail Over
➔ Restart containers de DB
sem downtime
➔ Escalabilidade
11. Balancer no JDBC
➔ Separar os bancos por vírgula e os parâmetros desejados,
exemplo:
➔ jdbc:postgresql://banco1.saveincloud.com:3433,banco2.saveincloud.com:3433,banco3.saveincloud.com:3433/ac
counting? targetServerType=preferSlave&loadBalanceHosts=true
targetServerType: any: The JDBC driver connects to any database. / master: The JDBC driver only connects to the primary
database. / slave: The JDBC driver only connects to the secondary database. / preferSlave: The JDBC driver connects to the
secondary database in priority. If no secondary database is available, the JDBC driver connects to the primary database.
loadBalanceHosts: specifies whether to randomly connect to the databases. Valid values:
● False: The databases are connected in the sequence specified in the command. This is the default value.
● True: The databases are randomly connected.
12. Balancer no libpq
➔ Utilizar a biblioteca https://www.postgresql.org/docs/9.5/libpq.html
➔ Detalhes de implementação abaixo:
https://www.postgresql.org/docs/12/libpq-connect.html?spm=a2c6
3.p38356.879954.4.5933696bm4ERNA#LIBPQ-CONNSTRING