Oracle
 sql >> база данни >  >> RDS >> Oracle

Защо в Oracle SQL изтритите (некоммитирани) редове не се виждат в текущата сесия, но се виждат в други сесии?

Както и обсъждането на свойствата на ACID, към които ziesemer ви препоръча, трябва да знаете за Контрол на паралелността на много версии или MVCC. Ако искате да знаете „всичко за това“, можете да прочетете Контрол на паралелността и възстановяване в системи за бази данни от Philip A. Bernstein, Vassos Hadzilacos, Nathan Goodman (налично за изтегляне).

В Oracle и други подобни MVCC СУБД, когато стартирате транзакция, се запазва бележка за клеймо за време, което идентифицира този начален час (но стойността на клеймото не е непременно проста стойност „секунди от Unix Epoch“). Докато тази транзакция се изпълнява, тя няма да види никакви данни, вмъкнати с клеймо за време след началния час. Системата поддържа предишни версии на страниците с данни достъпни за транзакции, които все още се изпълняват. Когато транзакцията напише страница, тя създава ново копие с ново времево клеймо, но това копие не е достъпно за други транзакции, докато модифициращата транзакция не се ангажира, и дори тогава то е достъпно само за транзакции, които започват след ангажирането.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Референтен SQL за дете + родител

  2. Как да направя топ 1 в Oracle?

  3. Как да изберете записи с максимални стойности в две колони?

  4. Как да намерите събитието на чакане История на сесията на Oracle

  5. Как мога да избегна твърде дълги грешки в необработената променлива дължина в SQL Developer?