#801

Adaugă o cheie externă la o tabelă mare de producție fără blocare

O tabelă mare de producție are nevoie de o cheie externă. Adăugarea obișnuită ia un lock exclusiv — citirile și scrierile sunt blocate cât timp scanează. Trucul are doi pași: mai întâi atârnă cheia cu «nu valida încă» (instantaneu, nu blochează scriitorii), apoi rulează validarea pe rândurile vechi într-o comandă separată (fără lock-uri de scriere). Construiește parents și children, inserează câteva rânduri. Adaugă la children o cheie externă children_parent_id_fkey de la coloana parent_id la parents(id) fără validare imediată. Apoi rulează validarea pentru aceeași cheie — ea trebuie să ajungă marcată ca validată.

Doar CREATE/ALTER/DROP — nu este nevoie de un SELECT la final.

Rezultatul interogării tale va apărea aici

Fără schemă inițială

Această problemă începe fără tabele — le vei crea prin CREATE TABLE.