DML и согласованность — Итоги

DML команды

  • INSERT добавляет строки в таблицу
  • UPDATE изменяет значения в существующих строках
  • DELETE удаляет строки
  • MERGE может комбинировать функционал команд INSERT, UPDATE и DELETE
  • Несмотря на то, что команда TRUNCATE это не DML команда, она удаляет все строки в таблице
  • Команда INSERT может добавлять строки в несколько таблиц
  • Подзапросы могут быть использованы для выбора строк которые необходимо добавить, изменить или удалить
  • Изменения сделанные командами INSERT, UPDATE и DELETE видны только после подтверждения транзакции
  • TRUNCATE удаляет все строки из таблицы
  • Команда TRUNCATE подтверждается сразу после выполнения автоматически: её нельзя отменить

 

Управление транзакциями

  • Транзакция это логическая единица работы, возможно состоящая из нескольких команд DML
  • Транзакции не видны другим сессиям пока не подтверждены
  • Пока транзакция не подтверждена она может быть отменена
  • Точка сохранения позволяет сессии отменить часть транзакции

 

Управление данными с помощью команд DML

  • Все команды DML создают данные повтора изменений (redo) и отката (undo)
  • Redo данные хранят все изменения сегментов – как сегментов данных, так и сегментов undo
  • Серверные процессы читают из файлов данных (используя буфер кэш); DBWn записывает данные в файлы данных

 

 

Объекты PL/SQL

  • Анонимные PL/SQL объекты хранятся на стороне клиента; хранимые объекты хранятся в словаре данных
  • Процедуры и функции могут объединятьяс в пакеты; триггеры не могут входить в пакеты
  • PL/SQL код может выполнять SQL код

 

Мониторинг и разрешение конфликтов блокировок

  • Уровень блокировки по умолчанию – строка
  • Блокировки необходимы для DML команд и доступны для команды SELECT
  • DML команды требуют исключительную блокировку строк и общую блокировку объектов используемых в команде
  • DDL команды требуют исключительную блокировку объекта
  • Deadlock – и разрешаются автоматически

 

Undo

  • Все DML команды создают данные undo
  • Данные undo используются для отменты транзакции и изоляции, а также для согласованности чтения и flashback запросов
  • Автоматическое управление undo используя сегменты undo является значением по умолчанию начиная с версии 11g

 

Транзакции и undo

  • Данные undo всегд хранятся пока транзакция не завершена командой COMMIT или ROLLBACK. Это активные данные undo
  • Данные undo сохраняются после того как они стали неактивными для согласованности чтения долгих запросов; это неустаревшие данные undo
  • Устаревшие данные не нужны для согласованности чтения и могут быть перезаписаны в любое время когда нужно место в сегменте undo

 

Управление undo

  • Экземпляр использует сегменты undo в одном явно указанном табличном пространтсве undo
  • Другие табличные пространтсва undo могут существовать, но только одно может быть активным
  • Табличное пространтсво undo должно быть достаточно большим чтобы вмещать данные при максимальной нагрузке в течении времени выполнения самого долгого запроса
  • Файлы данных в табличном пространстве undo такие же как и файлы данных обычного табличного пространства

Добавить комментарий