Documentazione di PostgreSQL 9.0 > Il linguaggio SQL > Controllo concorrente
PrecedenteMigration from Pre-8.3 Text SearchIsolamento transazionaleSuccessivo

13. Controllo concorrente

Questo capitolo descrive il comportamento del sistema di database PostgreSQL™ quando due o più sessioni provano ad accedere agli stessi dati contemporaneamente. Gli obiettivi in questa situazione sono di permettere un accesso efficiente per tutte le sessioni mentre si mantiene una severa integrità dei dati. Ogni sviluppatore di applicazioni database dovrebbe essere familiare con gli argomenti trattati in questo capitolo.

13.1. Introduzione

PostgreSQL™ fornisce agli sviluppatori un ricco insieme di strumenti per gestire l'accesso concorrente ai dati. Internamente, la consistenza dei dati è mantenuta usando un modello multiversione (Multiversion Concurrency Control, MVCC). Questo significa che mentre una transazione interroga un database, vede un'istantanea dei dati (una versione del database) come era poco prima, senza curarsi dello stato attuale dei dati sottostanti. Questo protegge una transazione dal vedere dati inconsistenti che potrebbero essere causati da (altre) transazioni di update concorrenti sulle stesse righe di dati, fornendo un isolamento di transazione per ogni sessione di database. MVCC, evitando le metodologie di lock esplicite dei sustemi di database tradizionali, minimizano i lock in modo da permettere performance elevate in sistemi multiutente.

Il vantaggio principale dell'uso del modello di controllo concorrente MVCC piuttosto che i meccanismi di lock è che nell'MVCC i lock acquisiti per interrogare dati (lettura), non vanno in conflitto con i lock acquisiti per scrivere dati, e così la lettura non blocca mai la scrittura e la scrittura non blocca mai la lettura.

Funzionalità di locking a livello di riga e tabella sono comunque disponibili in PostgreSQL™ per applicazioni che non si adattano facilmente al comportamento MVCC. Comunque, un uso appropriato di MVCC generalmente risulterà in performance migliori rispetto ai lock. Inoltre, i lock consultivi prevedono un meccanismo per l'acquisizione dei lock che non sono legati a una singola transazione.

Documentazione di PostgreSQL 9.0 > Il linguaggio SQL > Controllo concorrente
PrecedenteMigration from Pre-8.3 Text SearchIsolamento transazionaleSuccessivo