Databasis:Wat is Multiversion gelyktydigheidsbeheer (MVCC) en wie ondersteun hulle?[gesluit]

StackOverflow https://stackoverflow.com/questions/27499

  •  09-06-2019
  •  | 
  •  

Vra

Onlangs Jeff het gepos ten opsigte van sy probleme met databasis dooie verwante te lees. Multiversion gelyktydigheidsbeheer (MVCC) eise om hierdie probleem op te los.Wat is dit, en databasisse wat dit ondersteun?

opgedateer:hierdie ondersteun dit (wat ander?)

  • oracle
  • postgresql
Was dit nuttig?

Oplossing

Oracle het 'n uitstekende multi weergawe beheer stelsel in plek het sedert baie lang (ten minste sedert die binneste van 8,0)

Na aanleiding van jou behoort te help.

  1. Gebruiker A begin 'n transaksie en is die opdatering van 1000 rye met 'n paar waarde ten tyde T1
  2. Gebruiker B lees dieselfde 1000 rye by die tyd T2.
  3. Gebruiker A updates ry 543 met waarde Y (oorspronklike waarde X)
  4. Gebruiker B bereik ry 543 en bevind dat 'n transaksie in werking is sedert die tyd T1.
  5. Die databasis terug die onveranderde rekord van die stompe. Die teruggekeer waarde is die waarde wat ten tyde minder as of gelyk aan T2 gepleeg is.
  6. Indien die rekord nie kan opgehaal van die oordoen logs dit beteken die databasis is nie opstel gepas. Daar moet meer ruimte om die logs toegeken word.
  7. Op hierdie manier die lees consitency bereik. Die teruggekeer resultate is altyd dieselfde met betrekking tot die aanvang van die tyd van die transaksie. So binne 'n transaksie die lees konsekwentheid bereik.

Ek het probeer om te verduidelik in die eenvoudigste terme moontlik ... daar is 'n baie om te multiversioning in databasisse.

Ander wenke

Die volgende het 'n implementering van MVCC:

SQL Server 2005 (Nie verstek SET READ_COMMITTED_SNAPSHOT ON)

Oracle (sedert weergawe 8)

MySQL 5 (net met InnoDB tafels)

PostgreSQL

Firebird

Informix

Ek is redelik seker Sybase en IBM DB2 Mainframe / LUW nie 'n implementering van MVCC het

PostgreSQL se Multi-weergawe gelyktydigheidsbeheer

Asook hierdie artikel wat beskik oor 'n diagram van hoe MVCC werk wanneer die uitreiking van INSERT, UPDATE en DELETE state.

XtremeData dbX ondersteun MVCC.

Daarbenewens, dbX kan maak gebruik van SQL primitiewes geïmplementeer in die FPGA hardeware.

Firebird doen dit, hulle noem dit MGA (Multi Gene Architecture).

Hulle hou die oorspronklike weergawe ongeskonde, en voeg 'n nuwe weergawe wat net die sessie gebruik dit kan sien, wanneer verbind die ouer weergawe is afgeskakel, en die nuwer weergawe is geaktiveer vir almal (die lêer stapels-up met data en behoeftes gereelde skoonmaak).

Oracle oor skryf die data self, en maak gebruik van 'n rollback segmente / ongedaan table spaces vir ander sessies en om terugrol.

SAP HANA gebruik ook MVCC. SAP HANA is 'n volledige In-Memory Computing System, so MVCC kos vir kies is 'n baie lae ...:)

SQL Server 2005 en up bied MVCC as 'n opsie; dit is nie die standaard, egter. MS noem dit snapshot isolasie, as ek reg onthou.

MVCC kan ook met die hand uitgevoer word, deur die toevoeging van 'n weergawe nommer kolom om jou tafels, en altyd doen inserts in plaas van updates.

Die koste van hierdie is 'n veel groter databasis, en stadiger kies sedert elkeen 'n subquery moet die jongste rekord op te spoor.

Dit is 'n uitstekende oplossing vir stelsels wat 100% ouditering vir al die veranderinge vereis.

McObject aangekondig in 09/11 dat dit 'n opsionele MVCC transaksie bestuurder om sy eXtremeDB ingeboude databasis bygevoeg:

http://www.mcobject.com/november9/2009

eXtremeDB, oorspronklik ontwikkel as 'n in-geheue databasis stelsel (IMDS), is nou beskikbaar in uitgawes met gemengde (in-geheue / on-skyf) stoor, High Beskikbaarheid, 64-bit ondersteuning en nog baie meer.

Daar is 'n goeie verduideliking van MVCC - met diagramme - en 'n paar prestasie nommers vir eXtremeDB in hierdie artikel, geskryf deur McObject se mede-stigter en hoof uitvoerende beampte, in RTC Magazine:

http://www.rtcmagazine.com/articles/view/101612

Dit is duidelik dat MVCC is toenemend voordelig as 'n aansoek skale om baie take uitvoer op verskeie CPU cores sluit.

DB2 weergawe 9.7 het 'n gelisensieerde weergawe van postgres plus in dit. Dit beteken dat hierdie funksie (in die regte modus) hierdie funksie ondersteun.

Berkeley DB ondersteun ook MVCC.

En toe BDB stoor enjin is gebruik in MySQL, MySQL ondersteun ook MVCC.

Berkeley DB is 'n baie kragtige, aanpas ten volle suur voldoen DBMS. Dit word ondersteun deur verskeie verskillende metodes vir kruip, meester-slaaf-replikasie, kan gebruik word as 'n suiwer sleutel waarde winkel met sy eie dinamiese API of bevraagteken met SQL as wou. Die moeite werd om 'n blik op.

Nog 'n dokument georiënteerde DBMS omhels MVCC sou wees CouchDB . MVCC is hier ook 'n groot pluspunt vir die gebou in peer-to-peer replikasie.

scroll top