0Pricing
SQL Academy · Lezione

Rinominare le colonne senza downtime

Aggiunga la nuova colonna, scriva su entrambe, esegua il backfill, sposti le letture e rimuova la vecchia: il modello canonico per rinominare senza downtime.

Rinominare le colonne senza downtime è una lezione SQL Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento SQL Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso SQL Academy include 4 lezioni in totale.

L'approccio ingenuo non funziona

ALTER TABLE t RENAME COLUMN a TO b; modifica solo i metadati ed è rapido. TUTTAVIA, l'applicazione si aspetta la colonna "a": dopo la ridenominazione, ogni query che legge "a" si interrompe.

Strategia: espandere → migrare → contrarre

Il modello canonico per ottenere zero downtime:

  1. Espandere — aggiungere la nuova colonna senza rimuovere quella precedente
  2. Fare in modo che l'applicazione scriva su entrambe per un certo periodo
  3. Migrare — riempire la nuova colonna con i dati storici
  4. Passare a leggere dalla nuova colonna
  5. Contrarre — eliminare la vecchia colonna

Passo per passo: rinominare user_name → full_name

Procedura dettagliata:

Passo 1 — Aggiungere la nuova colonna

Online (solo metadati su PG 11+ con un valore predefinito costante):

ALTER TABLE users ADD COLUMN full_name VARCHAR(100);

Passo 2 — Scrittura doppia

Distribuisca codice che scriva in ENTRAMBE le colonne:

// App writes to both:
UPDATE users SET user_name = $1, full_name = $1 WHERE id = $2;
INSERT INTO users (..., user_name, full_name) VALUES (..., $name, $name);

Passo 3 — Riempire i dati

Copi i dati storici in batch:

UPDATE users SET full_name = user_name
WHERE full_name IS NULL
  AND id IN (
    SELECT id FROM users WHERE full_name IS NULL LIMIT 10000
  );
-- Run in a loop until 0 rows affected.

Passo 4 — Aggiungere NOT NULL (online)

Dopo aver riempito i dati, applichi NOT NULL in sicurezza:

ALTER TABLE users
  ADD CONSTRAINT fn_not_null CHECK (full_name IS NOT NULL) NOT VALID;
ALTER TABLE users VALIDATE CONSTRAINT fn_not_null;
ALTER TABLE users ALTER COLUMN full_name SET NOT NULL;
ALTER TABLE users DROP CONSTRAINT fn_not_null;

Passo 5 — Passare alle nuove letture

Distribuisca codice che legga full_name invece di user_name.

Passo 6 — Interrompere le scritture doppie

Distribuisca codice che scriva solo in full_name.

Passo 7 — Eliminare la vecchia colonna

Online (solo metadati):

ALTER TABLE users DROP COLUMN user_name;

Compromesso: tempo e complessità

Una semplice ridenominazione diventa una sequenza di 4–7 distribuzioni nell'arco di giorni o settimane. Per i sistemi di produzione non banali, questo è l'unico percorso sicuro.

Rinominare le tabelle

Il modello è simile, ma più complesso. Usi VIEW come alias temporaneo:

ALTER TABLE old_name RENAME TO new_name;
CREATE VIEW old_name AS SELECT * FROM new_name;
-- Deploy new code. Then drop the view.

Riepilogo

Le ridenominazioni di colonne senza downtime seguono il modello espandere → migrare → contrarre.

  • Aggiungere la nuova colonna
  • Abilitare la scrittura doppia
  • Riempire i dati in batch
  • Passare alle nuove letture
  • Interrompere le vecchie scritture
  • Eliminare la vecchia colonna

Verifica rapida

Quale fase viene IMMEDIATAMENTE dopo la distribuzione delle scritture doppie su entrambe le colonne, vecchia e nuova?

Domande Frequenti

La lezione «Rinominare le colonne senza downtime» è gratuita?

Sì — il testo completo di «Rinominare le colonne senza downtime» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso SQL Academy, passa a CoddyKit PRO. Il corso SQL Academy include 4 lezioni in totale.

Cosa imparerò in «Rinominare le colonne senza downtime»?

Aggiunga la nuova colonna, scriva su entrambe, esegua il backfill, sposti le letture e rimuova la vecchia: il modello canonico per rinominare senza downtime. Eserciti SQL Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare SQL Academy?

Non è richiesta alcuna esperienza precedente. SQL Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Rinominare le colonne senza downtime»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione SQL Academy?

Sì. Ogni lezione SQL Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Migrazioni online: perché ALTER TABLE applica i lock
  2. Indici concorrenti (CREATE INDEX CONCURRENTLY)
  3. Rinominare le colonne senza downtime
  4. Strumenti: Flyway, Liquibase, Sqitch
← Torna a SQL Academy