Въведение в транзакции в 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
SAVEPOINT също е извлечение за транзакция. Това изявление се използва за създаване на точка за съхранение в системата, така че операцията ROLLBACK да може да постигне състоянието на запаметената точка.
5. Пуснете Savepoint
RELEASE SAVEPOINT е декларация за освобождаване на запаметената точка и паметта, консумирана от системата при създаване на точка за запис.
Синтаксис: ИЗПЪЛНЕТЕ 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 извърши промени, не може да бъде върната, защото трайно прави промени в базата данни;
Предимства от използването на Transaction в SQL
а) Използването на транзакция подобрява производителността , когато вмъкването на 1000 записа чрез транзакции в този случай отнетото време би било по-малко от нормалното вмъкване. Както при нормалната транзакция, всеки път, когато COMMIT се осъществява след всяко изпълнение на заявката, и това увеличава времето на изпълнение всеки път, докато в транзакция не е необходимо да се изпълнява оператор COMMIT след всяка SQL заявка. COMMIT в края ще отразява всички промени в базата данни постоянно. Ако използвате транзакция, тогава връщането на промените ще бъде много по-лесно от обичайната транзакция. ROLLBACK ще възстанови всички промени наведнъж и ще запази системата в предишното състояние.
б) транзакцията осигурява целостта на данните в релационната база данни. По-голямата част от базата данни използва множество таблици за поддържане на данните и докато прави актуализации, може да има промени в множеството таблици по това време, ако някоя от SQL заявките се провали, транзакцията ще запази данните непроменени.
заключение
Използването на транзакции е най-добра практика за актуализиране на информация за логическа единица в релационна база данни. За реализацията на транзакции двигателят на базата данни трябва да поддържа транзакцията като InnoDB. Сделката като единица от SQL оператори може да бъде върната наведнъж с помощта на един ROLLBACK оператор. Транзакцията гарантира целостта на данните и подобрява работата на базата данни.
Препоръчителни статии
Това е ръководство за транзакции в SQL. Тук обсъждаме въвеждането, свойствата, стъпките, примери за транзакции в SQL, както и ползите от използването на транзакция в SQL.
- Какво е SQL
- Инструменти за управление на SQL
- SQL изгледи
- Видове присъединения в SQL Server
- Топ 6 вида съединения в MySQL с примери