- •Файл-серверные приложения
- •3. Представления
- •5. Определение триггера в стандарте языка sql
- •Типы триггеров
- •6. Понятие хранимой процедуры
- •Типы хранимых процедур
- •7. Табличные переменные
- •Функции пользователя
- •8. Понятие курсора
- •Вложенные транзакции
- •10. Параллельная работа транзакций
- •Работа транзакций в смеси
- •Проблемы параллельной работы транзакций
- •Проблема потери результатов обновления.
- •Проблема незафиксированной зависимости (чтение "грязных" данных).
- •Проблема несовместимого анализа данных.
- •11. 1. Проблема потери результатов обновления
- •12. Проблема незафиксированной зависимости (чтение "грязных" данных)
- •13. 3.1. Неповторяемое считывание
- •14. Фиктивные элементы (фантомы)
- •15. Несовместимый анализ данных
- •16. Конфликты между транзакциями
- •17. Модель конфликтов транзакций. Граф предшествования
- •18. Типы блокировок.
- •19. Решение проблем параллелизма при помощи блокировок
- •Проблема потери результатов обновления
- •Проблема незафиксированной зависимости (чтение "грязных" данных)
- •Проблема несовместимого анализа Неповторяемое считывание
- •Фиктивные элементы (фантомы)
- •Несовместимый анализ данных
- •Разрешение тупиковых ситуаций
- •20.Разрешение тупиковых ситуаций. Граф ожидания.
- •21.Назначение многомерных бд. Структурные компоненты многомерной модели.
- •Основные преимущества многомерных субд
- •22. Агрегация данных в многомерных базах данных.
- •Существует частичная и полная агрегация.
- •24. Организация запросов средствами языка mdx.
8. Понятие курсора
Курсор в SQL – это область в памяти БД, которая предназначена для хранения результата оператора выборки SQL. Указанная область в памяти поименована и доступна для прикладных программ.
В каждый момент времени прикладной программой может быть проверена одна строка курсора. Курсоры часто применяются в операторах, встроенных в написанные на языках процедурного типа прикладные программы.
В соответствии со стандартом SQL при работе с курсорами можно выделить следующие основные действия:
создание или объявление курсора;
открытие курсора, т.е. наполнение его данными, которые сохраняются в памяти;
выборка из курсора и изменение с его помощью строк данных;
закрытие курсора, после чего он становится недоступным для пользовательских программ;
освобождение курсора, т.е. удаление курсора как объекта, поскольку его закрытие необязательно освобождает ассоциированную с ним память.
Недостатки:
не позволяют проводить операции изменения над всем объемом данных;
скорость выполнения операций обработки данных посредством курсора заметно ниже, чем у стандартных средств SQL.
Таким образом, при манипулировании данными следует избегать работы с курсорами и использовать командами обработки данных: UPDATE, INSERT, DELETE.
Курсоры делятся на две категории: последовательные и прокручиваемые. Последовательные позволяют выбирать данные только в одном направлении – от начала к концу. Прокручиваемые же курсоры предоставляют большую свободу действий – допускается перемещение в обоих направлениях и переход к произвольной строке результирующего набора курсора.
SQL Server поддерживает курсоры статические, динамические, быстрые последовательные и управляемые набором ключей (ключевые курсоры).
9.
Понятие транзакции
Определение. Транзакция - это последовательность операторов манипулирования данными, выполняющаяся как единое целое (все или ничего) и переводящая базу данных из одного целостного состояния в другое целостное состояние.
Транзакция обладает четырьмя важными свойствами, известными как свойства АСИД:
(А) Атомарность. Транзакция выполняется как одна операция - либо выполняется вся транзакция целиком, либо она целиком не выполняется.
(С) Согласованность. Транзакция переводит базу данных из одного согласованного (целостного) состояния в другое согласованное (целостное) состояние. Внутри транзакции согласованность базы данных может нарушаться.
(И) Изоляция. Транзакции разных пользователей не должны мешать друг другу (например, как если бы они выполнялись строго по очереди).
(Д) Долговечность (устойчивость). Если транзакция выполнена, то результаты ее работы должны сохраниться в базе данных, даже если в следующий момент произойдет сбой системы.
Транзакция обычно начинается автоматически с момента выполнения запроса и продолжается до тех пор, пока не произойдет одно из следующих событий:
Подана команда COMMIT (зафиксировать транзакцию).
Подана команда ROLLBACK TRANSACTION (откатить транзакцию).
Произошло отсоединение пользователя от СУБД.
Произошел сбой системы.
Одним из способов поддержки транзакций является ведение журнала. Журнал транзакций — это структура данных, в которой хранятся записи о планирующихся и выполненных операциях. Работа с ним состоит из трёх шагов:
Записать намерение произвести некоторые операции
Запись о выполнении задания
Записать об отсутствии ошибок
