Il Controllo della concorrenza multiversione (in inglese: Multiversion concurrency control) in sigla MCC o MVCC, in informatica, nel campo delle basi di dati, è un metodo di Controllo della concorrenza comunemente usato dai sistemi di gestione delle basi di dati per fornire un accesso concorrente alle basi di dati e nei linguaggi di programmazione per implementare una memoria transazionale.
Il Controllo della concorrenza multiversione è descritto per la prima volta in dettaglio nel 1981 da Philip Bernstein e Nathan Goodman.
Una base di dati implementa gli aggiornamenti selezionando il dato vecchio come obsoleto e aggiungendo la versione nuova del dato, archiviando così più copie dello stesso dato. Questo permette al database di evitare sovraccarichi di azioni di riempimento di buchi in memoria ma richiede (generalmente) che il sistema periodicamente faccia pulizia e cancelli i dati più vecchi impostati come obsoleti. Per una base di dati orientata al documento come CouchDB lo MVCC permette al sistema di ottimizzare i documenti scrivendo interi documenti in sezioni contigue del disco quando lo si aggiorna, l'intero documento può essere riscritto piuttosto che diviso in parti e collegato in aree non contigue.
MVCC usa marche temporali o un ID di transazione per determinare quale stato della base di dati bisogna leggere, utile per evitare la gestione dei blocchi in lettura delle transazioni. MVCC fornisce ad ogni utente connesso alla base di dati uno stato della basi di dati stessa, ma ogni cambiamento non sarà visto dagli altri utenti fin quando la transazione non è stata eseguita.
Basi di dati con MVCC Altibase ArangoDB Berkeley DB Bigdata Clustrix CouchDB IBM DB2 – since IBM DB2 9.7 LUW ("Cobra") under CS isolation level - in currently committed modeDB2 Version 9.7 LUW Information Center, Currently committed semantics improve concurrency IBM Cognos TM1 – in versions 9.5.2 and up.TM1 9.5.2 Information Center, Parallel Interaction Drizzle eXtremeDB FirebirdWhite paper by Roman Rokytsky Firebird and Multi Version Concurrency Control FLAIM GE Smallworld Version Managed Data Store H2 Database Engine – experimental since version 1.0.57 (2007-08-25)
HSQLDB – starting with version 2.0 SAP HANA – SAP HANNA DATABASE InfiniDB Ingres InterBase – all versions MarkLogic Server - a bit of this is described in
Meronymy SPARQL Database Server Microsoft SQL Server – when using READ_COMMITTED_SNAPSHOT, starting with SQL Server 2005 MySQL when used with InnoDB,MySQL 5.1 Reference Manual, Section 14.2.12: Implementation of Multi-Versioning Falcon,or Maria MySQL 5.1 Reference Manual, or Archive storage engines. Netezza ObjectStore Oracle database – all versions since Oracle 3Oracle Database Concepts: Chapter 13 Data Concurrency and Consistency Multiversion Concurency Control OrientDB PostgreSQLPostgreSQL 9.1 Documentation, Chapter 13: Concurrency Control Rdb/ELN RDM EmbeddedRDM Embedded 10.1 Reference Manual, d_trrobegin REAL Server ScimoreDB sones GraphDBhttp://www.sones.com Sybase SQL Anywhere Sybase IQ ThinkSQL Zope Object Database
Note
Voci correlate Controllo della concorrenza Controllo della concorrenza con marca temporale Transazione (basi di dati) Marca temporale
Categoria:Teoria delle basi di dati