Учебное пособие Для студентов университетов Специальностей «Информатика», «Прикладная математика»



Pdf көрінісі
бет96/177
Дата15.02.2022
өлшемі2,58 Mb.
#25567
түріУчебное пособие
1   ...   92   93   94   95   96   97   98   99   ...   177
Глобальная область системы
 состоит из следующих компонентов: 
1)  разделяемый пул (shared pool); 
2)  кэш-буфер базы данных (database buffer cache); 
3)  буфер журнала транзакций (redo log buffer). 
Кратко опишем назначение каждого из этих разделов глобальной об-
ласти системы. 
Разделяемый пул кэширует информацию, используемую при разборе и 
выполнении  операторов SQL. Разделяемый  пул  содержит  два  основных 
раздела: кэш библиотек и кэш словаря данных. 
Кэш библиотек хранит текст SQL-выражений, форматы лексического 
анализатора и план выполнения предложений SQL. Кроме того, здесь же 
содержатся заголовки пакетов PL/SQL и процедур, которые могут совме-
стно  использоваться  пользовательскими  процессами.  Сервер Oracle ис-
пользует  кэш  библиотек  для  повышения  скорости  выполнения  операто-
ров SQL. Когда передается очередное SQL-выражение, сервер в первую 
очередь просматривает кэш в поисках такого же выражения, переданного 
ранее.  Если  оно  найдено,  то  используется  соответствующее  ему  дерево 
лексического анализа и план выполнения запроса, что избавляет от необ-
ходимости формировать их повторно. Кэш библиотек содержит и разде-
ляемые  области SQL, и  локальные  области SQL. Разделяемая  область 
SQL  включает  дерево  лексического  анализа  и  план  выполнения  
SQL-выражения,  а  локальная  область – информацию,  зависящую  от  те-
кущего сеанса работы. Это могут быть присоединенные переменные, па-
раметры окружения, стеки и буферы, необходимые при выполнении. Ло-
кальная  область  формируется  для  каждой  инициируемой  транзакции  и 
освобождается  после  того,  как  закрывается  соответствующий  курсор. 
Используя эти структуры памяти, сервер Oracle может повторно исполь-
зовать  информацию,  общую  для  всех  выражений SQL, а  информация, 
специфичная для данного сеанса, может быть выбрана из локальной об-
ласти. Локальная область SQL делится в свою очередь на переходящую 
(persistent)  область  и  область  времени  выполнения (runtime). При  этом 
переходящая  область  содержит  информацию,  которая  сохраняет  свое 
значение и может быть использована несколькими выражениями SQL, а 
 
114


 
область времени выполнения – только информацию для выражения, вы-
полняемого в текущий момент.  
Кэш словаря – хранит строки словаря данных, которые были исполь-
зованы для лексического анализа SQL-выражений. В этой области нахо-
дятся данные, касающиеся  сегментирования, привилегий доступа и раз-
меров  свободной  памяти.  При  запуске  экземпляра  он  загружается  неко-
торым начальным набором элементов и в процессе работы пополняется 
необходимыми данными из словаря.  
Кэш-буфер данных состоит из буферов БД и хранит информацию, за-
гружаемую  из  БД  серверными  процессами.  Все  модификации  над  дан-
ными реализуются в кэш-буфере. Имеется список, отслеживающий час-
тоту обращений к хранящимся в кэш-буфере блокам данных. Сервер пе-
реносит данные на диск в соответствии с порядком их размещения в спи-
ске LRU (Least Recently Used, дословно – «наиболее давно использовав-
шиеся»). Этот список отслеживает обращение к блокам данных и учиты-
вает  частоту  обращений.  Когда  выполняется  очередное  обращение  к 
блоку  данных,  хранящемуся  в  кэш-буфере,  он  помещается  в  тот  конец 
списка, который называется MRU (Most Recently Used – «только что ис-
пользованные»). Если серверу требуется место в кэш-буфере для загруз-
ки нового блока с диска, он обращается к списку LRU и решает, какой из 
блоков  перенести  на  диск,  чтобы  освободить  место  для  нового  блока. 
Блоки, наиболее удаленные в списке от MRU, самые вероятные кандида-
ты на удаление из кэш-буфера. Таким образом, дольше всего остаются в 
кэш-буфере  те  блоки,  к  которым  обращение  выполняется  чаще  всего. 
Модифицированные блоки называются «грязными» (dirty) и помещаются 
в  соответствующий dirty-список.  В  этом  списке  отслеживаются  все  мо-
дификации блоков данных, выполненные за время их нахождения в кэш-
буфере и не зафиксированные на диске. Когда Oracle получает запрос на 
изменение данных, соответствующие изменения выполняются в области 
кэш-буфера, а сведения об изменениях в блоках заносятся в dirty-список; 
одновременно  данные  о  выполненных  операциях  вносятся  в  журнал 
транзакций. В дальнейшем при обращении к блокам данных, попавшим в 
dirty-список,  будут  считываться  уже  модифицированные  значения,  хотя 
сами данные могут к этому времени еще не быть записаны на диск. Сер-
вер использует отложенную многоблочную процедуру записи на диск  с 
целью повышения производительности. Отложенная процедура означает, 
что обновление данных, выполненное Oracle, не фиксируется немедлен-
но в дисковой памяти. Перенос этих dirty-блоков назад в БД осуществля-
ется процессом DBWR при наступлении одного из определенных собы-
тий, таких как «контрольная точка», «выгрузка файла» и др.  
 
115


 
Буфер журнала транзакций хранит данные о транзакциях до тех пор, 
пока они не будут переписаны в оперативный файл журнала транзакций. 
Это типичный циклический буфер – он заполняется от начала до конца, и 
затем новая информация снова записывается в начало буфера. После за-
полнения  содержимое  буфера  процессом LGWR переносится  в  опера-
тивный файл журнала транзакций. Для того чтобы гарантировать после-
довательный характер записи в буфер журнала, сервер Oracle управляет 
доступом к нему при помощи защелок (latch). Такая защелка представля-
ет собой не что иное, как блокировку процессом Oracle некоторой струк-
туры  в  памяти – аналогично  блокировке  файла  или  строки  таблицы. 
Процесс  блокирует  посторонние  обращения  к  памяти,  выделенной  для 
буфера журнала транзакций. Таким образом, если один процесс наложил 
защелку  на  буфер,  другие  не  могут  обратиться  к  нему  до  тех  пор,  пока 
защелка не будет снята. Сервер Oracle ограничивает количество транзак-
ций, данные о которых заносятся в журнал одновременно. 


Достарыңызбен бөлісу:
1   ...   92   93   94   95   96   97   98   99   ...   177




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет