sql >> Database >  >> RDS >> Oracle

Waarom zijn in Oracle SQL de verwijderde (niet-vastgelegde) rijen niet zichtbaar in de huidige sessie, maar wel in andere sessies?

Evenals de bespreking van ACID-eigenschappen waarnaar ziesemer u heeft doorverwezen, zou u moeten weten over Multi-Version Concurrency Control of MVCC. Als je 'alles erover' wilt weten, overweeg dan om Gelijktijdigheidscontrole te lezen en herstel in databasesystemen door Philip A. Bernstein, Vassos Hadzilacos, Nathan Goodman (beschikbaar om te downloaden).

In Oracle en andere soortgelijke MVCC DBMS wordt, wanneer u een transactie start, een aantekening bijgehouden van een tijdstempel die die starttijd identificeert (maar de tijdstempelwaarde is niet noodzakelijkerwijs een eenvoudige 'seconden sinds de Unix Epoch'-waarde). Terwijl die transactie wordt uitgevoerd, worden er na de starttijd geen gegevens met een tijdstempel weergegeven. Het systeem houdt eerdere versies van de gegevenspagina's beschikbaar voor transacties die nog lopen. Wanneer de transactie een pagina schrijft, maakt het een nieuwe kopie met een nieuwe tijdstempel, maar die kopie wordt niet beschikbaar gemaakt voor andere transacties totdat de wijzigende transactie zich commit, en zelfs dan wordt het alleen beschikbaar gemaakt voor transacties die beginnen na de vastlegging.



  1. Hoe voeg je er een toe aan een string in orakel

  2. Kolomtitels uitvoeren in CSV Export

  3. Opmerkingen insluiten in MySQL-instructies

  4. Mysql-dumps en -importen versnellen