Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Фиксация записи при commit  [new]
cobalt_frog
Member

Откуда: Железные острова
Сообщений: 180
Добырй день,
Допустим? мы изменили какую либо строку, при этом:
1. Изменяемый блок подкачивается в буферный кэш
2. Блок становится грязный
3. Генерируется инфа в undo сегменте
4. Добавяется инфа в редо кэше(которая сбрасывается на диск в 3 кейсах)

При commit-e
1. Генерируется scn который записывается в буфер повторения
2. Буфер повторения сбрасывает на диск
3. Измененные блоки из буферного кэше сбрасываются на диск

Вопросы:

1. Правильно ли я понимаю, что из буферного кэша блоки сбрасываются на диск
и до commit?
2. Могут ли грязные блоки из буферного кэша извлекаться до коммита?
Например если в буферном кэше не хватает места?
3. Как грязные блоки в кэше становятся чистыми?
10 ноя 17, 17:46    [20944554]     Ответить | Цитировать Сообщить модератору
 Re: Фиксация записи при commit  [new]
проходил мимо...
Member

Откуда: от верблюда
Сообщений: 1178
cobalt_frog,

1. да
2. извлекаться? может, удаляться? да.
3. в кэше - commit cleanout в itl блока. на диске этим займётся первый select этих данных
11 ноя 17, 10:30    [20945397]     Ответить | Цитировать Сообщить модератору
 Re: Фиксация записи при commit  [new]
AlexFF__|
Member

Откуда:
Сообщений: 2854
проходил мимо...
cobalt_frog,
3. в кэше - commit cleanout в itl блока. на диске этим займётся первый select этих данных

Грязный блок - это измененный блок. Никакой cleanout не сделает его чистым.
Только сброс на диск.
11 ноя 17, 12:05    [20945500]     Ответить | Цитировать Сообщить модератору
 Re: Фиксация записи при commit  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 10045
Clean it up

SY.
11 ноя 17, 14:56    [20945725]     Ответить | Цитировать Сообщить модератору
 Re: Фиксация записи при commit  [new]
Veo
Guest
cobalt_frog
Добырй день,
Допустим? мы изменили какую либо строку, при этом:
1. Изменяемый блок подкачивается в буферный кэш
2. Блок становится грязный
3. Генерируется инфа в undo сегменте
4. Добавяется инфа в редо кэше(которая сбрасывается на диск в 3 кейсах)

При commit-e
1. Генерируется scn который записывается в буфер повторения
2. Буфер повторения сбрасывает на диск
3. Измененные блоки из буферного кэше сбрасываются на диск

Вопросы:

1. Правильно ли я понимаю, что из буферного кэша блоки сбрасываются на диск
и до commit?
2. Могут ли грязные блоки из буферного кэша извлекаться до коммита?
Например если в буферном кэше не хватает места?
3. Как грязные блоки в кэше становятся чистыми?


Процесс сброса грязных буферов на диск называется чекпоинтом и не связан с коммитом.

Для лучшего понимания можно представить транзакцию, изменяющую данных в несколько раз больше, чем размер буферного кэша. Пользовательский процесс грузит блоки с диска в буферный кэш, там их меняет, они становятся грязными, подгружает другие, меняет, они тоже становятся грязными. В фоне DBWR сбрасывает грязные буферы на диск, после чего буферы становятся чистыми, т.е. в эти буферы можно уже загружать другие блоки, если понадобится. Вот и всё. А коммит случится где-то в будущем. А может не случится.
11 ноя 17, 16:05    [20945793]     Ответить | Цитировать Сообщить модератору
 Re: Фиксация записи при commit  [new]
cobalt_frog
Member

Откуда: Железные острова
Сообщений: 180
всем спасибо за помощь
13 ноя 17, 09:59    [20948117]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить