Следующий

SQL запросы. Простое определние транзакции в SQL и примеры из жизни транзакций в базах данных

10 Просмотры· 06/18/20
Кирилл Антонов
Кирилл Антонов
Подписчики
0

Рубрика SQLite на сайте: http://zametkinapolyah.ru/zametki-o-m...
Текстовая версия: http://zametkinapolyah.ru/zame....tki-o-mysql/tema-15-
Паблик блога в ВК: https://vk.com/zametkinapolyah
Тематическая группа в ВК: https://vk.com/zametki_bd

Помощь проекту:
WMR: R288272666982
WMZ: Z293550531456
Яндекс.Деньги: 410011531129223

Давайте разберемся что такое транзакция в SQL и попробуем поработать с транзакциями в базах данных SQLite. Некоторые говорят, что транзакция - это объект в базе данных, как например, таблица или представление. Другие говорят, нет, транзакция - это процесс, происходящий в базе данных.

Я ближе склонен ко второму варианту, хотя можно сказать, что транзакция - это объект в базе данных, который живет ровно то время, которое длится процесс.

Транзакция – это неделимый процесс, который включает в себя группу последовательных операций (этих операций может быть очень много) над данными в базе данных. Операции в транзакции могут быть либо выполнены целиком и полностью все, либо не выполнены вообще.

При этом соблюдается целостность данных в базе данных, а транзакция выполняется вне зависимости и параллельно от других транзакций. В качестве жизненного примера транзакций в базе данных можно описать следующую ситуацию. Например, вы оплачиваете покупку в магазине, это неделимое действие, которое условно можно разбить на несколько операций:

1. Кассир пробивает товар.
2. Вы даете ему карточку.
3. Кассир вставляет карточку в картоприемник.
4. Вы вводите пин-код.
5. Происходит перечисление денег с вашего счета на счет магазина.
6. Кассир отдает вам карточку с чеком.
7. Вы забираете товар и уходите.

У этого действия может быть два окончания: либо вы оплатили товар и забрали его, либо вы его не оплатили, и вам его не отдали. Забрать пол телевизора или половину бутылки с газировкой вы не сможете. Это типичный пример транзакций в SQL.

Транзакции повышают надежность и быстродействие операций в базе данных. С надежностью всё понятно, но за счет чего происходит увеличение быстродействия.

Мы знаем, что СУБД создает нам абстракцию. На самом деле все данные в базе данных – это обычный файл, лежащий на жестком диске, а СУБД представляет нам этот файл в виде базы данных, таблиц и других неестественных для файловой системы компьютера объектов. Когда мы выполняем ту или иную операцию в базе данных, то СУБД создает соединение с файлом на жестком диске, делает какие-то свои внутренние операции, затем выполняет SQL запрос и закрывает соединение с файлом. И, например, в SQLite каждый запрос к базе данных – это маленькая транзакция, состоящая из одной операции (за исключением команды SELECT).

Но, когда мы явно говорим SQLite о том, что хотим запустить транзакцию, она устанавливает соединение с файлом и не закрывает его до тех пор, пока транзакция не будет выполнена. Таким образом мы можем существенно экономить ресурсы, особенно, когда выполняем очень много однотипных операций, например, когда вставляем несколько сотен/тысяч строк в таблицу базы данных.

Показать больше

 0 Комментарии sort   Сортировать


Следующий