Tablo kilidi
Tek tek satırlar yerine tablonun tamamına konan kilit. PostgreSQL’in 8 düzeyi vardır (AccessShare, RowShare, RowExclusive, ShareUpdateExclusive, Share, ShareRowExclusive, Exclusive, AccessExclusive). Esas olarak DDL işlemlerinde alınır.
AccessShare = SELECT, AccessExclusive dışındaki her şeyle uyumlu. AccessExclusive = SELECT dahil her şeyi engeller — ALTER TABLE, DROP TABLE ve REINDEX tarafından alınır. Anti-desen: 100 milyon satırlı bir tabloya varsayılan değerli ALTER TABLE ADD COLUMN → tablonun tamamen yeniden yazılması ve birkaç dakikalık kilit → uygulama kesintisi. Modern PG (11+): null olabilen ve değişmeyen varsayılanlar için yeniden yazma yapılmaz. Çevrimiçi DDL araçları: pt-online-schema-change (Percona), gh-ost (GitHub), pgroll (Xata). MySQL InnoDB’nin çevrimiçi DDL’i birçok işlemi kilitsiz halleder.