Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Введение в транзакционные
блокировки
Транзакция
Транзакция – это неделимая с точки зрения воздействия на базу данных,
последовательность операций манипулирован...
Система осуществляет неявный вызов транзакций при выполнении любых действий,
связанных с изменением данных, хранящихся в и...
Конкурентный ресурс
«Конкурентный ресурс», это некий ресурс системы (остаток товара
на складе, величина задолженности конт...
Уровни изоляции транзакций
• «Read Uncommited» - так называемое «грязное чтение». Используется при
чтении данных. В резуль...
Сравнительная таблица режимов работы с транзакционными
блокировками:
Повышение уровня блокировки
Суть данной ситуации: две транзакции первоначально параллельно накладывают на одни и те же дан...
|ДЛЯ ИЗМЕНЕНИЯ
| РегистрНакопления.ОстаткиНоменклатуры.Остатки";
Начало транзакций
Чтение данных
Чтение данных
Обработка
д...
Обращение к данным в разном порядке
Начало транзакций
Чтение данных
(ост.)
Чтение данных
(рез.)
Исключительная
(ост)
Исклю...
Другие причины, сказывающиеся на
параллельности работы системы:
• Неоптимальное написание (работа) запросов
• Большая влож...
Управляемый режим работы с
транзакционными блокировками
Режим разделения итогов
Совместное использование
автоматического и управляемого режимов
Режим существующей
транзакции
Режим начинаемой транзакции ...
Свойство «Удаление движений»
Записывать выбранные
Суть значения «Записывать выбранные» в том, что записываются только те наборы, для которых вы явно эт...
Блокировать для изменения
Движения.ОстаткиТоваров.БлокироватьДляИзменения=Истина;
На записываемые данные в момент записи б...
Контакты
Есть вопросы? Мы поможем! Свяжитесь с нами удобным для нас способом.
Прямые контакты
Андрей Бербека
Руководитель проектного направления
Телефон:
+7 (495) 135-22-96
Email:
aberbeka@koderline.r...
Upcoming SlideShare
Loading in …5
×

вебинар транзакционные блокировки

394 views

Published on

Компания "Кодерлайн" 29 июля 2015 г. провела вебинар "Введение в транзакционные блокировки". Ведущий - руководитель отдела компании Владимир КОСТЮК, Он же автор презентации.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

вебинар транзакционные блокировки

  1. 1. Введение в транзакционные блокировки
  2. 2. Транзакция Транзакция – это неделимая с точки зрения воздействия на базу данных, последовательность операций манипулирования данными, выполняющаяся по принципу: «или все, или ничего». Ошибки которые могут произойти в рамках транзакции подразделяются на: • Не восстановимые (система откатывает транзакцию назад и прекращает свою работу) • Восстановимые (система в принципе остается работоспособной) Восстановимые ошибки в свою очередь делятся на: • Ошибки связанные с базой данных (в этом случае в обязательном порядке будет произведен откат транзакции) • Ошибки не связанные с базой данных (разработчик может проанализировать эту ошибку в конструкции «Попытка/Исключение» и решить будет транзакция продолжаться или будет прервана).
  3. 3. Система осуществляет неявный вызов транзакций при выполнении любых действий, связанных с изменением данных, хранящихся в информационной базе. Режим работы с данными вне транзакции допускает только операции чтения данных, т.к. выполняется «не глядя» на блокировки (например, получение данных отчетом). Наряду с этим разработчик может использовать возможность определять транзакции в явном виде, с помощью средств встроенного языка.
  4. 4. Конкурентный ресурс «Конкурентный ресурс», это некий ресурс системы (остаток товара на складе, величина задолженности контрагента и т.п., который используется в системе для реализации прикладной логики. По значению данного ресурса система с точки зрения прикладной логики принимает решение: фиксировать данную транзакцию или нет. Для обеспечения этой логики нужно обеспечить «неизменность» значения «конкурентного» ресурса на время течения прикладной транзакции.
  5. 5. Уровни изоляции транзакций • «Read Uncommited» - так называемое «грязное чтение». Используется при чтении данных. В результат чтения могут войти данные внесенные (измененные) еще не зафиксированной транзакцией. • «Read Commited» - решает проблему грязного чтения. В результат чтения входят наиболее актуальные данные. Результат не содержит не зафиксированных изменений. • «Repeatable Read» - воспроизводимое чтение. При установке данного уровня изоляции на прочитанные данные накладывается блокировка, препятствующая их изменению из другой транзакции. Т.е. если данные будут прочитаны в начале транзакции (и установлен такой уровень изоляции), то при чтении данных в конце транзакции они будут точно такими же. • «Serializable» - решает так называемую «фантомную» проблему. Проблема заключается в том, что когда в начале транзакции считывается некий набор данных, то если произвести чтение этого набора в конце транзакции он будет содержать лишние записи.
  6. 6. Сравнительная таблица режимов работы с транзакционными блокировками:
  7. 7. Повышение уровня блокировки Суть данной ситуации: две транзакции первоначально параллельно накладывают на одни и те же данные разделяемую блокировку, а потом пытаются разделяемую переключить на исключительную. В результате возникает взаимоблокировка. Начало транзакций Чтение данных Чтение данных Разделяемая Разделяемая Обработка данных Обработка данных Запись данных Исключительная Запись данных Исключительная Взаимоблокировка
  8. 8. |ДЛЯ ИЗМЕНЕНИЯ | РегистрНакопления.ОстаткиНоменклатуры.Остатки"; Начало транзакций Чтение данных Чтение данных Обработка данных Обработка данных Запись данных Исключительная Запись данных Исключительная
  9. 9. Обращение к данным в разном порядке Начало транзакций Чтение данных (ост.) Чтение данных (рез.) Исключительная (ост) Исключительная (рез.) Чтение данных (рез.) Чтение данных (ост.) Взаимоблокировка
  10. 10. Другие причины, сказывающиеся на параллельности работы системы: • Неоптимальное написание (работа) запросов • Большая вложенность подзапросов, соединения с подзапросами • Несоответствие индексов и условий запроса • Некорректное использование параметров виртуальных таблиц • Отсутствие функции ВЫРАЗИТЬ для полей составного типа • Получение лишних полей через точку Видео канал KoderLine: goo.gl/eqGWK1
  11. 11. Управляемый режим работы с транзакционными блокировками
  12. 12. Режим разделения итогов
  13. 13. Совместное использование автоматического и управляемого режимов Режим существующей транзакции Режим начинаемой транзакции Результат Автоматический Автоматический Начинаемая транзакция будет выполнена в автоматическим режиме Управляемый Управляемый Начинаемая транзакция будет выполнена в управляемом режиме Автоматический Управляемый Начинаемая транзакция будет выполнена в автоматическим режиме Управляемый Автоматический Будет вызвана исключительная ситуация
  14. 14. Свойство «Удаление движений»
  15. 15. Записывать выбранные Суть значения «Записывать выбранные» в том, что записываются только те наборы, для которых вы явно это укажите. У коллекции «Движения.ИмяРегистра» появилось свойство «Записывать». При выходе из обработки проведения в регистры сбрасываются данные только тех коллекций, у которых свойство «Записывать» установлено в значение «Истина». Движения.ОстаткиТоваров.Записывать = Истина; Также у свойства документа «Движения» появился метод «Записать()». Он «принудительно сбрасывает» данные в регистры только по тем наборам, у которых свойство «Записывать» установлено в значение «Истина». Движения.Записать(); Важно отметить, что метод «принудительной» записи, который использовался ранее, значение флага «Записывать» не сбрасывает. Движения.ОстаткиНоменклатуры.Записать();
  16. 16. Блокировать для изменения Движения.ОстаткиТоваров.БлокироватьДляИзменения=Истина; На записываемые данные в момент записи будет установлена исключительная блокировка. Важно понимать, что блокирование данных происходит именно в момент записи и то, что указанное свойство работает в «тандеме» с режимом разделения итогов регистров накопления и бухгалтерии
  17. 17. Контакты Есть вопросы? Мы поможем! Свяжитесь с нами удобным для нас способом.
  18. 18. Прямые контакты Андрей Бербека Руководитель проектного направления Телефон: +7 (495) 135-22-96 Email: aberbeka@koderline.ru Skype: andrijberbeka Игорь Шлепанов Руководитель Департамента по работе с корпоративными клиентам Телефон: +7 (495) 135-22-96 Email: ishlepanov@koderline.ru Skype: igor_shlepanov Владимир Костюк Руководитель отдела разработки Email: vkostyuk@koderline.ru Skype: vkostyuk.koderline Юлия Зорева Руководитель коммерческой службы Email: uzoreva@koderline.ru Skype: uzoreva-koderline

×