Введение в транзакции в SQL
Транзакция в SQL обычно известна как осуществление платежей (отправка, получение, покупка и т. Д.), Но когда дело доходит до технических полей, это способ обновления логической единицы информации в базе данных.
Транзакция - это внедрение одного или нескольких изменений в базу данных. Мы можем группировать несколько SQL-запросов и запускать их одновременно в транзакции. Все SQL-запросы либо будут выполнены за один раз, либо все будут откатаны. Это будет иметь только два результата: успех или неудача.
Однажды зафиксированная транзакция не может быть откатом. Откат может быть выполнен, только если транзакция не зафиксирована. MYSQL автоматически фиксирует изменения в базе данных, если все запросы выполнены успешно. Чтобы явно зафиксировать изменения в базе данных, сначала необходимо отключить авто-фиксацию с помощью команды -
Синтаксис: SET autocommit = 0;
Свойства сделки
Ниже приведены важные свойства транзакций, каждая транзакция должна следовать этим свойствам
1. Атомность
Транзакция должна быть атомарной, то есть манипулирование данными должно выполняться для определенной логической единицы. Это свойство гарантирует, что изменения данных произошли полностью, иначе сделайте откат транзакции.
2. Согласованность
После завершения транзакции все доступные записи будут согласованы на протяжении всей транзакции. Это свойство гарантирует, что свойство базы данных переключится в состояние после успешной фиксации или нет.
3. Изоляция
Изоляция относится к изменениям данных в определенной логической единице, которая не должна влиять на другую единицу. Это позволяет транзакции выполняться независимо.
4. Долговечность
Изменения, сделанные во время транзакций, должны быть постоянными в системе. В случае системной ошибки это свойство также гарантирует, что изменения данных происходят или нет.
Указанное выше свойство транзакции также известно как свойство ACID.
Шаги транзакции
1. Начните
Транзакция может происходить в нескольких выполнениях SQL, но все SQL должны выполняться одновременно. Если какая-либо из транзакций завершится неудачей, вся транзакция будет отменена. Оператор для запуска транзакции - «START TRANSACTION». Начинается аббревиатура для START TRANSACTION.
Синтаксис: НАЧАТЬ СДЕЛКУ;
2. Фиксация
Коммиты постоянно отражают изменения в базе данных. Оператор для запуска транзакции - «COMMIT».
Синтаксис: COMMIT;
3. Откат
Откат используется для отмены изменений, то есть запись не будет изменена, она будет в предыдущем состоянии. Оператор для запуска транзакции - «ROLLBACK».
Синтаксис: ROLLBACK;
4. Точка сохранения
SAVEPOINT также является оператором транзакции. Этот оператор используется для создания точки сохранения в системе, чтобы операция ROLLBACK могла достичь состояния точки сохранения.
5. Отпустите точку сохранения
RELEASE SAVEPOINT - это оператор для освобождения точки сохранения и памяти, используемой системой при создании точки сохранения.
Синтаксис: RELEASE SAVEPOINT SP
Примечания - SP - это имя точки сохранения, когда эта точка сохранения была создана до начала транзакции.
6. Установить транзакцию
Команда SET TRANSACTION используется для указания атрибута транзакции, например, данная транзакция предназначена только для чтения или для чтения и записи.
Синтаксис : SET TRANSACTION (READ-WRITE | READ ONLY);
Транзакция используется для выполнения сложных изменений в базе данных. В основном он используется в банковских информационных изменениях в реляционной базе данных.
Транзакция поддерживается MYSQL движком InnoDB. По умолчанию автоматическая фиксация остается включенной, поэтому всякий раз, когда выполняется какой-либо SQL после автоматической фиксации выполнения.
Транзакции с использованием SQL
Пример № 1
Банковская операция: счет был списан с 50000 человек от лица Сберегательного счета и отправил эту сумму на кредитный счет A.
Начальная транзакция: эта стартовая транзакция преобразует все запросы SQL в одну единицу транзакции.
UPDATE `account` SET `balance` = `balance` - 50000 WHERE user_id = 7387438;
Этот запрос SQL вычитает сумму из существующего баланса счета.
UPDATE `loan_account` SET `paid_amount` = `paid_amount` + 50000 WHERE user_id = 7387438;
Этот запрос SQL добавляет сумму к учетной записи пользователя кредита.
Insert into `transaction_details`(`user_id`, 'amount') values (7387438, '50000');
Этот запрос SQL вставляет новую запись в таблицу сведений о транзакциях, эта таблица содержит сведения обо всех транзакциях пользователей. Если все запросы выполнены успешно, необходимо выполнить команду COMMIT, так как изменения должны постоянно храниться в базе данных.
Фиксация: этот оператор фиксации сохраняет изменения, вызванные транзакцией, в базу данных. Если какая-либо из транзакций завершится неудачно во время выполнения, то должна быть выполнена команда ROLLBACK, чтобы отменить всю транзакцию
Откат: Откат происходит после сбоя любого запроса во время выполнения.
Пример № 2
Инвентаризация: в данной таблице предметов доступно 6 предметов.
Выполнение следующего оператора START TRANSACTION для запуска транзакции.
Теперь выполните команду SET AUTOCOMMIT = 0 ; отключить авто-фиксацию
Теперь выполните следующую инструкцию, чтобы удалить запись из таблицы элементов
Теперь Доступно записей в таблице 4, т.е. записи временно удалены из элементов таблицы
Теперь, выполнив команду ROLLBACK, чтобы отменить изменения, удаленная запись будет доступна в элементах таблицы, как и ранее, до начала транзакции.
Опять же, если применить ту же операцию удаления, то операция COMMIT после ее изменения будет сохранена в базе данных навсегда.
Теперь мы можем видеть, что после выполнения команды ROLLBACK запись находилась в новом состоянии. Это означает, что после выполнения операции COMMIT изменения не могут быть отменены, поскольку она постоянно вносит изменения в базу данных;
Преимущества использования транзакций в SQL
а) Использование транзакции повышает производительность , когда при вставке 1000 записей с использованием транзакций в этом случае время будет меньше, чем при обычной вставке. Как и в обычной транзакции, каждый раз, когда COMMIT будет иметь место после каждого выполнения запроса, и это будет увеличивать время выполнения каждый раз, когда в транзакции нет необходимости выполнять оператор COMMIT после каждого запроса SQL. COMMIT в конце будет постоянно отражать все изменения в базе данных. Также при использовании транзакции отмена изменений будет намного проще, чем при обычной транзакции. ROLLBACK отменит все изменения сразу и сохранит систему в прежнем состоянии.
б) транзакция обеспечивает целостность данных в реляционной базе данных. Большая часть базы данных использует несколько таблиц для хранения данных, и при выполнении обновлений в это время могут быть изменения в нескольких таблицах, если какой-либо из SQL-запросов завершится неудачно, транзакция сохранит данные без изменений.
Вывод
Использование транзакций - это лучшая практика обновления информации для логической единицы в реляционной базе данных. Для реализации транзакции ядро базы данных должно поддерживать транзакцию как движок InnoDB. Транзакция как единица операторов SQL может быть сразу отменена с помощью одного оператора ROLLBACK. Транзакция обеспечивает целостность данных и повышает производительность базы данных.
Рекомендуемые статьи
Это руководство по транзакциям в SQL. Здесь мы обсуждаем введение, свойства, шаги, примеры транзакций в SQL, а также преимущества использования транзакций в SQL.
- Что такое SQL
- Инструменты управления SQL
- Представления SQL
- Типы объединений в SQL Server
- 6 лучших типов соединений в MySQL с примерами