0Pricing
PostgreSQL Performance & Query Optimization · Aula

Bloqueios consultivos para coordenação de aplicativos

Aprenda como os bloqueios consultivos do PostgreSQL fornecem ao aplicativo um mutex leve e controlado pelo programador para coordenar tarefas e proteger seções críticas sem bloquear linhas da tabela.

Bloqueios consultivos para coordenação de aplicativos é uma aula grátis de PostgreSQL Performance & Query Optimization no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de PostgreSQL Performance & Query Optimization, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de PostgreSQL Performance & Query Optimization inclui 4 aulas no total.

Partes desta aula ainda não foram traduzidas e aparecem em inglês.

What Are Advisory Locks?

Advisory locks are locks whose meaning is defined entirely by your application. PostgreSQL does not associate them with any row or table — your code decides what a given lock key represents.

Why Use Them?

They are perfect for coordination that does not map to a single row:

  • Ensuring only one worker runs a nightly job
  • Serializing access to an external API
  • Preventing two processes from importing the same file

Lock Keys

An advisory lock is identified by a 64-bit integer, or by two 32-bit integers. You pick the numbers; a common pattern is to hash a string into an integer key.

SELECT hashtext('nightly-report');

Session-Level Locks

pg_advisory_lock holds the lock until you release it or the session ends. It blocks if another session already holds the same key.

SELECT pg_advisory_lock(42);
-- do exclusive work
SELECT pg_advisory_unlock(42);

Try-Lock Without Blocking

Often you do not want to wait. pg_try_advisory_lock returns true if it got the lock and false immediately if someone else holds it.

SELECT pg_try_advisory_lock(42);

The Single-Worker Pattern

A cron-triggered job uses try-lock to ensure only one instance runs. If it returns false, this instance simply exits.

-- if this returns false, another worker is running
SELECT pg_try_advisory_lock(hashtext('nightly-report'));

Transaction-Level Locks

The _xact_ variants release automatically at COMMIT or ROLLBACK, so you cannot forget to unlock. Great for short critical sections.

BEGIN;
SELECT pg_advisory_xact_lock(42);
-- protected work here
COMMIT; -- lock auto-released

Inspecting Held Locks

Advisory locks show up in pg_locks with locktype 'advisory'. Use it to debug who is holding what.

SELECT pid, classid, objid, granted
FROM pg_locks
WHERE locktype = 'advisory';

Advisory vs Row Locks

Key differences from SELECT ... FOR UPDATE:

  • Advisory locks are not tied to any row
  • They survive across statements without holding row versions
  • Their meaning is purely a convention your app agrees on

Pitfalls to Avoid

Watch out for:

  • Forgetting to unlock session-level locks (prefer xact variants)
  • Key collisions between unrelated features — namespace your keys
  • Connection poolers reusing sessions and leaking locks

Unlocking Session Locks Cleanly

Session-level locks can be acquired multiple times and must be unlocked the same number of times. To clear everything held by the current session at once, use the unlock-all helper.

SELECT pg_advisory_unlock_all();

Quick Check

Test your advisory lock knowledge.

Recap

You learned advisory locks:

  • Application-defined locks not tied to rows or tables
  • Identified by 64-bit or paired 32-bit keys
  • Session-level vs auto-releasing transaction-level variants
  • pg_try_advisory_lock powers single-worker patterns
  • Namespace keys and prefer xact locks to avoid leaks

Perguntas Frequentes

A aula “Bloqueios consultivos para coordenação de aplicativos” é grátis?

Sim — o texto completo de “Bloqueios consultivos para coordenação de aplicativos” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de PostgreSQL Performance & Query Optimization, atualize para CoddyKit PRO. O curso de PostgreSQL Performance & Query Optimization inclui 4 aulas no total.

O que vou aprender em “Bloqueios consultivos para coordenação de aplicativos”?

Aprenda como os bloqueios consultivos do PostgreSQL fornecem ao aplicativo um mutex leve e controlado pelo programador para coordenar tarefas e proteger seções críticas sem bloquear linhas da tabela. Você pratica PostgreSQL Performance & Query Optimization com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar PostgreSQL Performance & Query Optimization?

Nenhuma experiência prévia é necessária. PostgreSQL Performance & Query Optimization no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “Bloqueios consultivos para coordenação de aplicativos”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de PostgreSQL Performance & Query Optimization?

Sim. Cada aula de PostgreSQL Performance & Query Optimization inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Entendendo bloqueios e deadlocks
  2. Identificação e resolução de contenção de bloqueios
  3. Estratégias de bloqueio em nível de linha
  4. Bloqueios consultivos para coordenação de aplicativos
← Voltar para PostgreSQL Performance & Query Optimization