Como tornar o PostgreSQL ridiculamente lento?

2025-07-28
Como tornar o PostgreSQL ridiculamente lento?

Este artigo desafia o leitor a tornar o PostgreSQL o mais lento possível, ajustando parâmetros no arquivo `postgresql.conf`, sem recorrer à limitação da CPU ou à exclusão de índices. Através de uma série de ajustes cuidadosamente escolhidos, incluindo a redução drástica do tamanho do cache de buffer (`shared_buffers`), o acionamento agressivo de autovacuum e análise (`autovacuum_*` parameters), e a configuração do WAL (`wal_*` parameters) para frequência máxima de gravação e contenção de E/S, o autor consegue reduzir o TPS do PostgreSQL em mais de 7000 vezes, de 7000+ para menos de um dígito, até abaixo de 0,1 TPS. O autor detalha a justificativa e o impacto de cada alteração de parâmetro e fornece uma configuração reprodutível. Este é um experimento fascinante que mostra o profundo impacto do ajuste de parâmetros do banco de dados.

Leia mais
Desenvolvimento Ajuste de parâmetros

Benchmarks em JavaScript: Uma confusão de compiladores JIT, diferenças de engine e imprecisões de tempo

2024-12-24
Benchmarks em JavaScript: Uma confusão de compiladores JIT, diferenças de engine e imprecisões de tempo

Fazer benchmarks de desempenho em JavaScript é notoriamente difícil. Este artigo destaca os desafios: as otimizações dinâmicas do compilador JIT levam a resultados amplamente variáveis entre as execuções; diferentes engines JavaScript (como V8 e JavaScriptCore) exibem disparidades significativas de desempenho, com o mesmo código apresentando desempenho dramaticamente diferente; e os navegadores reduzem intencionalmente a precisão de tempo para mitigar ataques de tempo, tornando as medições precisas difíceis. O autor sugere o uso de ferramentas como d8 no lado do servidor para maior controle sobre os níveis de otimização e coleta de lixo, enquanto os testes do lado do cliente dependem muito das informações limitadas fornecidas pelas ferramentas do desenvolvedor. Em resumo, benchmarks em JavaScript exigem consideração cuidadosa da compilação JIT, variações de engine e precisão de tempo, tornando-o significativamente mais complexo do que em outras linguagens.

Leia mais