русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Обробка транзакцій


Дата добавления: 2015-07-09; просмотров: 460; Нарушение авторских прав


Єдина, з погляду користувача, операція може зажадати декількох операцій над БД. Більше того, між цими операціями може навіть порушуватися несуперечність БД. Класичною ілюстрацією є ситуація, з якою зіштовхується банк, коли його клієнт переказує гроші з ощадного рахунку на поточний рахунок. Ця банківська транзакція складається з двох операцій: спочатку - відновлення ощадного балансу для відображення дебету, а потім - відновлення поточного балансу на основі кредиту. Якщо ці дві операції відновлення не трактувати як єдину стосовно розглянутої бази даних, то виникає небезпека, що якийсь інший користувач виконає запит у проміжку між ними. Якщо хтось з банківських службовців задасть запит, що стосується балансу даного клієнта, після того як гроші будуть зняті з ощадного рахунка, але до того як вони надійдуть на поточний рахунок, то результати цього запиту не будуть відповідати дійсності. Об'єднання ж цих двох операцій у одну гарантує, що переказ грошей буде або довершений цілком, або не відбудеться взагалі.

Суперечливість БД зникає тільки після виконання усіх відновлень, тобто виконання логічної одиниці роботи. Транзакція чи логічна одиниця роботи, - це послідовність декількох операцій, що перетворять деякий несуперечливий стан БД в інший несуперечливий стан, але не гарантують збереження несуперечності в усі проміжні моменти часу. Ніхто, крім користувача, що генерує ту чи іншу послідовність SQL-пропозицій, не може знати про те, коли може виникнути суперечливий стан БД і після виконання яких SQL-пропозицій він зникне, тобто БД знову стане актуальною. Тому у більшості СУБД створюється механізм обробки транзакцій, при ініціюванні якого всі зміни даних будуть розглядатися як попередні доти, поки користувач (рідше система) не видасть пропозиції:

· COMMІT («фіксувати»), що перетворює всі попередні відновлення в остаточні;



· ROLLBACK («відкат»), що анулює всі попередні відновлення.

Між командами SQL, що відзначають початок і кінець транзакций, може міститися будь-яка кількість операторів SQL. У залежності від синтаксису, що підтримує ваша система, це може виглядати приблизно так:

оператор початку транзакції

SQL оператор

SQL оператор

SQL оператор

оператор кінця | відкату транзакції

Таким чином, транзакцією можна назвати послідовність SQL-пропозицій, розташованих між "точками синхронізації", засновуваних на початку виконання програми і виданні COMMІT чи ROLLBACK. Варто мати на увазі, що існує і неявний COMMІT (режим AUTOCOMMІT), у якому система видає COMMІT після виконання кожної SQL-пропозиції) і ROLLBACK (який виконується при аварійному завершенні програми).

Виникають проблеми, що зв'язані з рівнобіжним використанням БД множиною різноманітних користувачів. Більшість СУБД дозволяють будь-якій кількості транзакцій одночасно здійснювати доступ до однієї й тієї ж БД і в них існують механізми керування рівнобіжними процесами, що запобігають небажаним впливам одних транзакцій на інші. По суті це механізм блокування, головна ідея якого досить проста. Якщо транзакції потрібні гарантії, що деякий об'єкт (БД, таблиця, рядок чи поле), у якому вона „зацікавлена”, не буде змінено яким-небудь непередбаченим чином протягом необхідного проміжку часу, механізм блокування встановлює блокування цього об'єкту. Мета блокування полягає у тому, щоб ізолювати цей об'єкт від інших транзакцій і, зокрема , запобігти його зміні засобами цих транзакцій.



<== предыдущая лекция | следующая лекция ==>
Оператори керування правами доступу | Посилальна цілісність. Тригери.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.046 сек.