Ооп бд объектно-ориентированная база данных

Вид материалаДокументы

Содержание


20. Архітектура Oracle. Смугова організація дисків. Розподіл дисків
GSA (Глобальная системная область, ГСО)
Использование разделяемого пула для обработки SQL-выражений
Назначение и функционирование кэш-буфера
Параллельная обработка
Технология RAID, зеркальное копирование и производительность
Подобный материал:
1   ...   9   10   11   12   13   14   15   16   17

20. Архітектура Oracle. Смугова організація дисків. Розподіл дисків


При работе Oracle одновременно присутствует множество процессов, выполняющих специфические задачи. Каждый процесс имеет отдельный блок памяти для хранения локальных переменных, стек адресов и другую информацию. Все эти процессы имеют общую область памяти, называемую разделяемой областью памяти. В этой памяти хранятся данные общего пользования. В англоязычной литературе называется Global System Area (GSA). Доступ к GSA для записи и чтения могут получить одновременно различные процессы и программы. Эта область находится в разделяемом сегменте памяти. Можно считать, что GSA - единый центр для координации и управления всеми процессами обработки информации, происходящими в системе.

GSA (Глобальная системная область, ГСО)

В GSA хранятся структуры памяти, необходимые для манипулирования данными для анализа предложений SQL, для кэширования транзакций. Все операции базы данных в том или ином виде используют информацию, находящуюся в GSA.

GSA состоит из разделяемого пула (Shared Pool), который в свою очередь содержит:

* кэш библиотек,

* кэш словаря,

* управляющие структуры сервера.

Кэш библиотеки используется для:

- хранения текста,

- хранения форматов лексического анализатора,

- хранения плана выполнения предложений SQL,

- хранения заголовков PL/SQL пакетов и процедур, выполнявшихся ранее.


Кэш словаря предназначен для хранения строки словаря данных, которая была использована для анализа предложений SQL. Таких строк может быть несколько.

// Оракл работает со своей версией SQL - называется PL/SQL

Использование разделяемого пула для обработки SQL-выражений




Сервер Oracle использует кэш библиотеки для повышения производительности и скорости выполнения операций и операторов SQL. Когда передается очередное SQL-выражение, в первую очередь просматривается кэш, и в нем отыскивается выражение, подобное выполнявшемуся ранее. Если оно найдено, то выполняется соответствующее дерево лексического анализа (в соответствии с хранящимися форматами лексического анализатора) - это приводит к существенному повышению скорости выполнения операторов SQL. Однако такой механизм работает только в том случае, если SQL-выражение полностью идентичны, включая совпадения регистров символов.


Локальная область формируется для каждой инициируемой транзакции и освобождается после закрытия соответствующего курсора, связанного с соответствующей транзакцией.


Поэтому Oracle может повторно использовать информацию, общую для всех выражений SQL, а информация, специфическая для данного сеанса, выбирается из локальной области предусмотренной в разделяемом пуле.


В общем, для кэша библиотек в разделяемом пуле выделяется две области:

1. Разделяемая область SQL.

2. Локальная область SQL.


Локальная область SQL делится также на две части:

1. Переходящая область SQL - содержит информацию, которая сохраняет свое значение и может быть использована несколькими выражениями SQL.

2. Область времени выполнения (runtime) - содержит только ту информацию, которая нужна для выполняемого в текущий момент выражения.


Кэш словаря содержит информацию содержит, необходимую для лексического анализа SQL-выражений.


Контрольные суммы предназначены для анализа правильности вычисления выражений и выполнения действий, указанных ранее.


Учитывая изложенный механизм работы Oracle, следует отметить, что выполнение одиночных, простых SQL-инструкций на Oracle не будет выполняться быстрее, чем Delphi & FoxPro. Однако, реализация сложной программы выполнится с существенными преимуществами по эффективности и времени.


Однако в целом можно сказать, что производительность системы зависит от функционирования кэш-буфера.


Назначение и функционирование кэш-буфера


Данные загружаются в кэш-буфер. Он состоит из блоков памяти того же размера, что и блоки Oracle. В блоках кэш-буфера выполняется любое обновление данных. Oracle переносит данные между кэш-буфером и диском в соответствии со списочной организацией памяти, в которой учитывается частота обращения к блокам данных. Данные, изменения которых наименее вероятно, располагаются в начале списка и в первую очередь записываются на диск.

Часто обновляемые данные остаются в кэше на наиболее длительное время.

Параллельная обработка

Параллельная обработка в среде Oracle строится на двух продуктах: Oracle Parallel Query Option (PQO) и Oracle Parallel Server (OPS), которые предназначены для того, чтобы задействовать для обслуживания текущей рабочей нагрузки все имеющиеся аппаратные средства. Parallel Query Option стремится ускорить полное сканирование таблиц. Oracle Parallel Server дает возможность отдельным экземплярам Oracle вместе использовать одну физическую базу данных. Такой подход позволяет Oracle поддерживать те аппаратные средства, в которых процессоры могут совместно использовать дисковые устройства (или читать и записывать данные на дисковые устройства, принадлежащие друг другу, в так называемых архитектурах shared nothing), но не могут совместно использовать оперативную память, в силу чего не могут одновременно обращаться к одним и тем же находящимся в оперативной памяти управляющим структурам.

Даже если не использовать ни один из этих продуктов, есть способы, при помощи которых можно (а в большинстве случаев и нужно) путем выполнения множества операций достичь хотя бы некоторой степени параллелизма в обработке. Таким образом, многие рассматриваемые в этой главе подходы касаются сред с одним центральным процессором, а не только сред, где процессоров в избытке.

Как правило, мы выполняем на сервере несколько процессов. Одни из них относятся к операционной системе (например, процесс, принимающий электронную почту), другие касаются работы базы данных (например, процесс записи в базу данных Oracle — DBWR), а третьи представляют собой пользовательские процессы, в которых интерпретируются и обрабатываются наши SQL-предложения.


Существует один жизненно важный процесс, который называется планировщиком и работает в двух весьма специфических обстоятельствах. В однопроцессорной машине планировщик вступает в игру, когда возникает одна из следующих ситуаций:

• процесс, использующий машину, решает передать управление — обычно потому, что ему требуется подождать ввода или вывода в той или иной форме;

• процесс, использующий машину, не передает управление, а пытается продолжать применять ее после истечения некоторого установленного срока. Период времени, в течение которого процессу разрешается работать, называется его квантом времени, а такая форма планирования изначально была известна как квантование времени.


Параллелизм необходим для того, чтобы, пока один процесс ожидает ввода-вывода, другой мог вступить в игру и начать использовать процессор или другой ресурс ввода-вывода. Нужен он и для того, чтобы одновременно задействовать не один, а несколько центральных процессоров и более одного устройства ввода-вывода. Для оптимальной работы одновременно должно работать столько процессов, сколько требуется для достижения предельного уровня загрузки устройства ввода-вывода или центрального процессора. Эмпирическое правило гласит: при оперативной обработке транзакций для этого требуется от четырех до восьми активных процессов на процессор.

Стрипинг

Стрипинг (striping) — это метод распределения данных по дискам.

При таком размещении не имеет значения, какая таблица "популярна" в данный момент времени — у нас есть хотя бы небольшой шанс распределить нагрузку ввода-вывода на несколько дисков. Тогда каждая таблица может быть загружена в собственное табличное пространство. Метод стрипинга обладает одним известным недостатком: очень трудно управлять вставкой новых строк. В большинстве случаев все они будут размещены в текущем блоке (или блоках) таблицы и, возможно, будут иметь тенденцию размещаться на одном и том же физическом диске. В этом случае и в случае, когда интенсивность вставки в таблицу высока или чаще всего запрашиваются строки, которые вставлены последними, такой стрипинг окажется крайне неэффективным.

Технология RAID, зеркальное копирование и производительность

Технология RAID (Redundant Arrays of Inexpensive Disks — избыточные массивы недорогих дисков) широко распространена как средство повышения целостности данных и производительности. Наш опыт работы с RAID показывает, что у этой технологии есть и преимущества, и недостатки.

Одна из особенностей таких массивов состоит в том, что RAID-контроллер реализует "логические тома", однако преобразование в этом случае выполняется в контроллере, а операционной системе вовсе не обязательно знать о лежащей в их основе физической структуре.

RAID-контроллеры могут также использоваться для реализации зеркального копирования дисков — процесса, в котором каждая операция записи выполняется на двух отдельных дисках. Один из дисков в паре является зеркальным отражением другого, что снижает вероятность потери данных вследствие отказа дисковода. Когда сервер запрашивает блок данных на диске, его можно прочитать с любого из дисков, на которых он находится, благодаря чему уменьшается вероятность конфликта за право доступа к диску. Это — технология RAID 1.