Здійснити проти швидкої фіксації проти прибирання очищення в базі даних Oracle


12

Мені було цікаво, чи може хтось перевірити моє розуміння щодо відмінностей між цими 3 термінами стосовно баз даних Oracle.

Багато джерел плутають ці терміни і не пояснюють їх докладно, тому знайти інформацію було трохи складно.

З того, що я збираю:

  1. Здійснення та швидка фіксація - це саме те саме, усі коміти - це швидкі коміти.
  2. Швидка фіксація по суті лише оновлює прапор у таблиці транзакцій заголовка сегмента "скасувати / відкат", щоб вказати, що транзакція здійснена. Однак фактичний блок не переглядається, тобто зміна байтової адреси (UBA) у списку зацікавлених транзакцій (ITL), яка знаходиться у заголовку блоку даних, все ще вказує на таблицю транзакцій відповідного сегмента скасування. Крім того, байти блокування відповідних рядків не звільняються, а кількість блокувань у ITL не змінюється (рядки все ще заблоковані).
  3. В Ком СКА, блок буде знову і ITL оновлюються з фіксацією SCN. Однак кількість блокувань в ITL та байт блокування, що зберігаються з кожним рядком, досі не оновлюються (рядок все ще заблокована так само, як і в швидкій фіксації), це не генерує повтор, навіть якщо блок змінено.
  4. Блоки, які були вчинені нормально (== швидко скоєно), підлягають затримці очищення блоку при наступному торканні (і генерують повтор).
  5. Блоки, які пройшли очищення, здійснюють затримку очищення блоку реєстрації після наступного торкання (та генерування повтору).

Сподіваємось, хтось може перевірити ці моменти! Дякую!

Відповіді:


6

Ви маєте основні права. Існує лише один тип фіксування (немає нормальних , швидких ...).

з понять doc :

Коли транзакція вчиняється, відбуваються такі дії:

  • Для COMMIT створюється номер зміни системи (SCN).

    Внутрішня таблиця транзакцій для пов'язаних з ними скасувати простір таблиць, які транзакція здійснила. Відповідний унікальний SCN транзакції присвоюється і записується в таблицю транзакцій. Див. "Рівень ізоляції, який можна реалізувати".

  • Процес запису журналів (LGWR) записує залишки запису журналу повторень у буфери повторних журналів до онлайн-журналу повторень та записує транзакцію SCN в онлайн-журнал повтору. Ця атомна подія є зобов'язанням транзакції.

  • Oracle Database випускає блокування у рядках і таблицях.

    Користувачам, які отримали чергові очікування на замки, що відбулися через недійсну транзакцію, дозволяється продовжувати свою роботу.

  • База даних Oracle видаляє точки збереження.

  • База Oracle виконує очищення.

    Якщо модифіковані блоки, що містять дані про вчинену транзакцію, все ще знаходяться в SGA, і якщо жоден інший сеанс не модифікує їх, то база даних видаляє інформацію про транзакції, пов’язану з блокуванням. В ідеалі, COMMIT очищає блоки, щоб наступний SELECT не повинен виконувати це завдання.

Тому очищення (повне з повтором) буде виконуватися під час фіксації, якщо блоки все ще знаходяться в SGA.

В активних системах зазвичай блоки, що мають невмілі транзакції, записуються на диск і видаляються з SGA. У цьому випадку блок залишається таким, як є, і наступний запит, який торкається блоку, виконає затримку очищення блоку (ваш пункт 5 відбувається не у всіх випадках).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.