Skip to content
Snippets Groups Projects
Commit 2b37dc92 authored by mgy20's avatar mgy20
Browse files

Edit Postgresql.md

parent 22ff7ea2
No related branches found
No related tags found
No related merge requests found
......@@ -211,67 +211,9 @@ postgres=#\COPY (SELECT count(*) FROM customer) TO '/path/to/file/on/server' WIT
```
## Tunning
Por padrão o postgres vem com uma configuração básica para funcionar com a maioria dos sistemas, o que não é ideal para produção.
Caso seja necessário, é possivel alterar parâmetros e padrões de comportamento que resultem em sua otimização.
Para isso é possível alterar as configurações no arquivo `postgresql.conf` que pode ser localizado com `SHOW config_file`. Dependendo do parâmetro alterado pode-se atualizar o serviço sem a necessidade de reiniciar com o comando `SELECT pg_reload_conf()`.
#### max_connections
Configura o número máximo de conexões concorrentes que o servidor suporta.
<Verificar os problemas com altos valores de max_connections>
#### shared_buffers
Configura a quantidade máxima de memória compartilhada que o servidor postgres utiliza. O aumento de shared_buffers também requer o aumento de max_wal_size.
- Recomendação: Configurar valor com 25% da memória disponível, pois para os outros 75% será utilizado para tarefas como cacheamento e conexões.
#### effective_cache_size
Retorna ao planer de consulta do postgres a quantidade de memória disponível para cacheamento tanto em shared_buffers quanto no filesystem. É utilizado para fazer estimativas, não faz alocações efetivamente.
- Recomendação: Configurar entre 50% e 75% da memória disponível.
#### work_mem
Configura a quantidade máxima de memoria que uma consulta pode usar em dados temporários como ORDER BY, Hash Joins, Hash Aggregate e Window Functions.
- Recomendação: Depende da complexidade das queries. Além disso work_mem multiplicado por max_connections resulta no uso máximo de memória transiente.
#### maintenance_work_mem
Configura a quantidade de memória disponível para operações de manutenção como VACUUM, criação de indices e etc.
#### wal_buffers
#### effective_io_concurrency
#### random_page_cost/seq_page_cost
#### log_min_duration_statement
Configura o tempo de execução mínimo para uma consulta ser registrada no log, util para debugging.
- Recomendação: Por default é desativado com -1. Entretanto é interessante para estudar consultas que consomem mais de 1000ms(1 segundo).
## Particionamento de Tabelas
Em situações em que tabelas não possuem altas taxas de atualização de tuplas, mas sim de inserções ou deleções é possível realizar o particionamento de tais tabelas para aumento de performance.
## Indexes
Realizando alterações nos métodos de acesso aos dados das tabelas com a criação de índices, embora possa reduzir a velocidade de escrita, pode aumentar a performance da árvore de consulta do postgres.
### Tipo\Casos de uso
#### B-Tree
B-Tree serve para ...
#### Hash
Hash serve para ...
#### Gist
Gist serve para ...
#### SP-Gist
SP-Gist serve para ...
#### Gin
Gin serve para ...
#### Brin
Brin serve para ...
### Indices em partição separada
Para fins de aumento de performance, é possível alterar o local em que o postgres armazena seus objetos como índices em uma partição separada. Entretanto esse método apenas funciona de forma relevante se a velocidade de leitura e escrita for maior que a do diretório onde o cluster está.
Uma solução mais interessante é cacheamento L2ARC com zfs de NVME ou SSD para todo o diretório do cluster.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment