Механизмы СУБД для поддержки транзакций
Поддержка транзакций требует значительных ресурсов и существенно (во много раз!) замедляет производительность сервера. Однако в современных условиях допустить потерю или порчу информации в базе данных абсолютно недопустимо, поэтому правила АСИД реализуются всеми СУБД. Несмотря на особенности конкретных реализаций, имеется ряд универсальных механизмов поддержки транзакций. Мы рассмотрим эти обшие механизмы, добавив немного конкретных сведений по их воплощению в Oracle. Журнализация транзакций Ведение журналов транзакций преследует одновременно две цели: 1). Возможность отката транзакции. 2). Восстановление БД в случае аварийных ситуаций или сбоев.
Сервер ведёт 2 вида журналов транзакций: Undo-журналы: используются для отката и ведутся для каждой транзакции отдельно. Как только очередная транзакция зафиксирована или откачена, то информация из соответствующего Undo-журнала удаляется. В Oracle такие журналы иначе называются сегментами отката, они располагаются в отдельном табличном пространстве и содержат полную информацию о каждой транзакции, достаточную для ее успешного отката. Рекомендуемое количество Undo журналов в базе данных, которые должны быть в наличии, равно n/2 (где n – количество одновременно работающих пользователей). Redo-журнал необходим для повторного выполнения транзакций при восстановлении данных. Это единый системный журнал, в который записываются результаты всех зафиксированных транзакций. В аварийной ситуации, приведшей к порче данных, они восстанавливаются по резервной копии. Но резервная копия была снята в какой-то момент времени в прошлом. Все транзакции, которые прошли в системе после снятия последней резервной копии, восстанавливаются по Redo-журналу.
Такой механизм полностью гарантирует выполнение правила Долговечность из аббревиатуры АСИД. Для того, чтобы гарантировать возможность безусловного восстановления всех зафиксированных транзакций, принято правило упреждающей записи в журнал транзакций – по команде COMMIT результаты транзакции сначала заносятся в Redo-журнал, а потом (возможно не сразу), записываются в табличное пространство. Кратко рассмотрим, как организовано ведение системного журнала транзакций в Oracle. С учетом огромного количества информации, которая постоянно записывается в этот журнал в процессе нормальной работы информационной системы, он состоит из двух частей – оперативной и архивной. Оперативная часть, в свою очередь, содержит два журнала (для повышения надежности каждый из журналов обычно ведется в двух экземплярах). В каждый момент времени один из журналов заполняется информацией о транзакциях сервера, а другой в это время копируется в архивный журнал, который организован на отдельном носителе большого объема. Этот процесс схематически показан на рис. 5.2
Рис. 5.2 – заполнение журнала транзакций в Oracle
Читайте также: II тип гиперчувствительности (цитотоксический). Механизмы развития (комплементзависимый цитолиз, фагоцитоз, антителозависимая клеточная цитотоксичность) и клинические проявления. Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|