Notas de PHP e Web

Artigos curtos e práticos sobre PHP, Laravel, bancos de dados e engenharia web (site estático).

Performance 23 de outubro de 2023 ~3 min

Paginação por cursor: por que é mais estável que LIMIT/OFFSET

Paginação por cursor: por que é mais estável que LIMIT/OFFSET — Performance é consequência de boas escolhas e de medir o que realmente importa (p95/p99, DB, cache).

O objetivo aqui é prático: decisões pequenas que melhoram confiabilidade e manutenção. Se você já lidou com bugs intermitentes, sabe o valor de padrões simples.

Como eu abordo

  • Comece com o caso real (o que está quebrando ou ficando caro).
  • Defina uma regra pequena e aplicável (sem reescrever tudo).
  • Instrumente: teste, log ou métrica para confirmar melhora.
  • Documente o “porquê” em poucas linhas para não perder contexto.

Armadilhas comuns

  • Otimizar cedo sem medir.
  • Misturar camadas (controller fazendo SQL, por exemplo).
  • Não registrar contexto (request id, rota, usuário) nos logs.
  • Apostar em “mágica” de framework sem entender o fluxo.
Dica: prefira mudanças pequenas e reversíveis. Se não dá para reverter, você está fazendo uma aposta grande demais.

Checklist rápido

  • Qual é o risco principal (segurança, performance, disponibilidade)?
  • Como eu valido a mudança (teste, log, métrica)?
  • O que pode dar errado e como reverter?
  • Quem mantém isso daqui a 3 meses?

Trecho de código

<?php
// Transação com rollback seguro
$pdo->beginTransaction();
try {
  $pdo->exec('UPDATE accounts SET balance = balance - 10 WHERE id = 1');
  $pdo->exec('UPDATE accounts SET balance = balance + 10 WHERE id = 2');
  $pdo->commit();
} catch (Throwable $e) {
  $pdo->rollBack();
  throw $e;
}

Se esta nota te poupou tempo, anote o que você ajustou e por quê. Isso vira um guia interno com o tempo.

#sql #postgres #api #performance #symfony #cookies #lint
Autor
Rafael Almeida
Contato
rafael.almeida.dev@example.com