Обзор особенностей Oracle

Статьи про Oracle -> Архитектура

Обзор особенностей Oracle

Предлагаю вам мой перевод части документации Oracle Database Concepts 10g Release 2 (10.2) B14220-02.

v:1.0 20.09.2007

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

Read Consistency (Устойчивое чтение)

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

Устойчивое чтение, записи отката и трансакции.
Чтобы управлять многовариантной устойчивой моделью, Oracle должен обеспечить устойчивое чтение, если таблица обновляется во время извлечения из нее данных. Во время обновления (update) первоначальные данные изменяются и сохраняются в записи отката базы данных. Пока трансакция обновления не будет завершена (commit), выборка обновленных данных, выполненная из другой сессии, вернет первоначальные значения. Чтобы создать read-consistent view (представление устойчивого чтения) данных таблицы, Oracle использует текущую информацию из SGA и информацию из записей отката.
Изменения, сделанные трансакцией, фиксируются только после завершения (команда commit), и только после этого измененные данные будут видны в других сессиях.
Трансакция - это ключевой фактор стратегии обеспечения целостности данных в СУБД Oracle.

Трансакции, не меняющие данные (Read-Only Transactions).
По умолчанию Oracle гарантирует устойчивое чтение на уровне запроса. Набор данных, возвращаемый одиночным запросом, блокируется только на время выборки. Однако, в некоторых случаях вам может потребоваться устойчивое чтение на уровне трансакции. Это возможность выполнить множество запросов в рамках одной трансакции, причем можно быть уверенным, за время выполнения последующих запросов данные, которые вернул первый запрос, не изменятся, т.е. не будут учтены изменения, сделанные за это время завершенными трансакциями. Если вам надо сделать несколько запросов из разных таблиц, и вы не изменяете эти таблицы, используйте трансакции read-only.

Механизм блокировок

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

Автоматические блокировки.
Oracle устанавливает такие блокировки автоматически, без участия пользователя. Скрытая блокировка устанавливается для SQL-выражений, если необходимо проконтролировать зависимости. Механизм блокировок Oracle автоматически блокирует таблицы данных на уровне отдельных записей. Блокировка отдельных записей, а не таблиц целиком позволяет свезти к минимуму конкурентный доступ к одним и тем же данным. Механизм блокировок поддерживает несколько типов блокировок записей. Необходимый тип выбирается зависимости от того, какая операция выполняется. В целом блокировки разделяют на два типа: exclusive locks (эксклюзивные блокировки) и share locks (общие блокировки). Одновременно только одна эксклюзивная блокировка может быть наложена на ресурс (запись или таблицу). В то же время, на один ресурс можно установить несколько общих блокировок. И эксклюзивные и общие блокировки всегда разрешают выполнять выборку заблокированного ресурса, но запрещают другие действия, такие как изменение и удаление.

Ручные блокировки.
В некоторых обстоятельствах пользователь может захотеть дополнить стандартный механизм. Oracle позволяет пользователю самостоятельно устанавливать блокировки на уровне записей или таблицы целиком.

Quiesce Database (замороженная база данных)
Время от времени администратору базы данных требуется изоляция от одновременных не административных действий, например не административных трансакций, выборок, PL/SQL выражений. Первый способ достигнуть такой изоляции - выключение базы данных и повторный запуск в ограниченном режиме. Есть еще один способ - переведение системы в "замороженный" режим без беспокойства пользователей. В "замороженном" состоянии администратор базы данных может безопасно выполнить необходимы действия.

Real Application Clusters
Real Application Clusters (RAC) включает в себя несколько инстанций Oralce, запущенных на нескольких компьютерах, объединенных в кластер, которые взаимодействуют между собой через так называемые соединения. RAC использует кластерное программное обеспечение для организации доступа к разделяемой базе данных, которая располагается на общем диске. RAC собирает вычислительную мощность взаимосвязанных компьютеров, создавая системную избыточность, линейную масштабируемость и высокую надежность. Кроме того, RAC предоставляет значительные преимущества для OLTP и систем хранения данных, все системы и приложения могут эффективно использовать кластеризованное окружение.
Вы можете масштабировать приложения в RAC окружении в соответствии с возрастающими требованиями к обработке данных, не изменяя при этом код приложения. Как только вы добавляете новый ресурс в кластер (например, новый узел или устройство хранения), RAC увеличивает вычислительную мощность системы в соответствии с этим ресурсом.

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

Петрелевич Сергей
petrelevich@yandex.ru

Метки: Oracle Concepts  

Комментарии.

Внимание.
Комментировать могут только зарегистрированные пользователи.
Возможно использование следующих HTML тегов: <a>, <b>, <i>, <br>.