Операції в SQL - Кроки для виконання транзакцій із прикладами

Зміст:

Anonim

Вступ до транзакцій у SQL

Трансакція в SQL, як правило, відома як здійснення платежів (відправка, отримання, купівля тощо), але якщо мова йде про технічні поля, то це спосіб оновити логічну одиницю інформації в базі даних.

Транзакція - це впровадження однієї або декількох змін у базу даних. Ми можемо згрупувати кілька запитів SQL та запустити одразу транзакцію. Всі запити SQL або виконуватимуться за один раз, або всі будуть повернуті назад. Це матиме лише два результати - успіх чи невдача.

Щойно здійснена транзакція не може бути відкатом, її можна відкатати, лише якщо транзакція не вчинена. MYSQL автоматично здійснює зміни в базі даних, якщо всі запити виконуються успішно. Щоб явно здійснити зміни в базі даних, спочатку потрібно відключити автоматичну фіксацію за допомогою команди -

Синтаксис: SET autocommit = 0;

Властивості транзакції

Нижче наведено важливі властивості транзакцій, кожна транзакція повинна слідувати цим властивостям

1. Атомність

Угода повинна бути атомною, середня маніпуляція даними повинна бути завершена для певної логічної одиниці. Ця властивість гарантує, що зміни даних відбулися повністю інакше відкат транзакції.

2. Послідовність

Після завершення транзакції всі наявні записи будуть узгоджені протягом усієї транзакції. Це властивість забезпечує переключення стану власності бази даних після успішного виконання чи ні.

3. Виділення

Ізоляція стосується зміни даних на певній логічній одиниці, яка не повинна впливати на інший блок. Це дозволяє здійснювати транзакцію самостійно.

4. Міцність

Зміни, здійснені під час транзакцій, повинні бути постійними в системі. У разі виникнення системної помилки ця властивість також гарантує, що зміни даних відбудуться чи ні.

Наведене вище властивість транзакції також відоме як властивість ACID.

Крок трансакції

1. Починай

Транзакція може статися в декількох виконаннях SQL, але всі SQL повинні працювати відразу. Якщо будь-яка з транзакцій виявиться невдалою, то вся транзакція буде скасована. Заява для запуску транзакції - "ЗАПУСК ТРАНСАКЦІЇ". Починає абревіатуру для СТАРТОВОЇ трансакції.

Синтаксис: СТАРТОВА ПЕРЕХОДА;

2. Здійснити

Коміти постійно відображають зміни в базі даних. Заява про початок транзакції - “COMMIT”.

Синтаксис: COMMIT;

3. Відкат

Відкат використовується для повернення змін, тобто запис не буде змінено, це було б у попередньому стані. Заява про початок транзакції - “ROLLBACK”.

Синтаксис: ROLLBACK;

4. Savepoint

SAVEPOINT - це також виписка про транзакцію. Цей оператор використовується для створення точки зберігання в системі, щоб операція ROLLBACK могла досягти стану точки збереження.

5. Відпустіть Savepoint

RELEASE SAVEPOINT - це заява про звільнення точки збереження та пам'яті, споживаної системою при створенні точки збереження.

Синтаксис: RELEASE SAVEPOINT SP

Примітки - SP - це ім'я точки збереження, коли ця точка збереження була створена до початку транзакції.

6. Встановіть транзакцію

Команда SET TRANSACTION використовується для визначення атрибуту транзакції, такий як дана транзакція - це сеанс лише для читання або читання-запису.

Синтаксис : SET TRANSACTION (READ-WRITE | ЧИТАТИ ТІЛЬКИ);

Транзакція використовується для виконання складних змін у базі даних. Її головним чином використовують у банківській інформації, пов'язаної із зміною інформації, у реляційну базу даних.

Транзакція підтримується движком MYSQL InnoDB. За замовчуванням функція автоматичного фіксації залишається увімкненою, тому будь-коли виконується будь-який SQL після автоматичного виконання.

Операції з використанням SQL

Приклад №1

Банківська трансакція: рахунок, списаний на суму 50000 з особи. Ощадний рахунок і подав цю суму на кредитний рахунок А.

Почати транзакцію: Ця стартова транзакція перетворить усі запити 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

a) Використання транзакції покращує ефективність роботи , коли вставляти 1000 записів за допомогою транзакцій у тому випадку, що зайнятий час буде меншим, ніж звичайне вставлення. Як і у звичайній транзакції, кожен раз, коли COMMIT відбуватиметься після кожного виконання запиту, це збільшуватиме час виконання кожного разу, тоді як в транзакції немає необхідності виконувати оператор COMMIT після кожного запиту SQL. Наприкінці COMMIT відображатиме всі зміни в базі даних постійно. Також якщо використовувати транзакцію, то повернення змін буде набагато простіше, ніж звичайна транзакція. ROLLBACK поверне всі зміни одразу та збереже систему в попередньому стані.

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

Висновок

Використання транзакцій - найкраща практика оновлення інформації для логічної одиниці у реляційній базі даних. Для реалізації транзакцій двигун бази даних повинен підтримувати транзакції, як InnoDB engine. Транзакцію, як одиницю операторів SQL, можна одночасно повернути за допомогою одного оператора ROLLBACK. Транзакція забезпечує цілісність даних та покращує продуктивність бази даних.

Рекомендовані статті

Це посібник з транзакцій у SQL. Тут ми обговорюємо вступ, властивості, кроки, приклади транзакцій у SQL, а також переваги використання транзакцій у SQL.

  1. Що таке SQL
  2. Інструменти управління SQL
  3. Перегляди SQL
  4. Типи приєднань до SQL Server
  5. Топ 6 типів приєднань до MySQL з прикладами