RU (Русский) Перевод

Здравствуйте, будущие маги баз данных! Сегодня мы отправимся в увлекательное путешествие в мир транзакций MySQL. Не волнуйтесь, если вы новички в программировании – я буду вашим доброжелательным проводником, который разложит сложные концепции на удобные для понимания части. Так что возьмите杯 любимого напитка и погружайтесь с нами!

MySQL - Transactions

Транзакции в MySQL

Представьте, что вы находитесь в банке и производите перевод средств с вашего сберегательного счета на текущий. Вы не хотите, чтобы деньги исчезли со сберегательного счета, не попав на текущий, верно? Вот где на помощь приходят транзакции!

В MySQL транзакция – этоsequence операций, которые treated как единое целое. Это как защитный пузырь вокруг набора операций с базой данных, который обеспечивает их либо всех успешных, либо всех失败的.

Давайте рассмотрим простой пример:

START TRANSACTION;
UPDATE savings_account SET balance = balance - 100 WHERE account_id = 123;
UPDATE checking_account SET balance = balance + 100 WHERE account_id = 456;
COMMIT;

В этой транзакции мы перемещаем $100 со сберегательного счета на текущий. Команда START TRANSACTION начинает нашу транзакцию, а команда COMMIT в конце固定изирует изменения.

Сvojstva transakcij

Транзакции в MySQL следуют свойствам ACID. Нет, не того кислота, который вы найдете в лаборатории! ACID означает:

  1. Атомарность: Все операции в транзакции либо успешны, либо все fail.
  2. Консистентность: База данных находится в согласованном состоянии до и после транзакции.
  3. Изоляция: Транзакции изолированы друг от друга до их завершения.
  4. Постоянство: Once транзакция фиксирована, она остается таковой даже в случае failure системы.

Думайте о ACID как охраняющем ангеле ваших операций с базой данных, который ensures, что все остается чистым и опрятным!

Statements для управления транзакциями в MySQL

MySQL предоставляет несколько statements для управления транзакциями. Давайте посмотрим на них в удобной таблице:

Statement Описание
START TRANSACTION Начинает новую транзакцию
COMMIT Сохраняет изменения навсегда в базе данных
ROLLBACK Отменяет изменения, сделанные в текущей транзакции
SET autocommit Включает или отключает режим автосохранения
SAVEPOINT Создает точку в транзакции, к которой можно later откатиться

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

Команда COMMIT

Команда COMMIT как кнопка "сохранить" для вашей транзакции. Once вы commit, все ваши изменения становятся permanent.

START TRANSACTION;
INSERT INTO students (name, age) VALUES ('Alice', 20);
INSERT INTO students (name, age) VALUES ('Bob', 22);
COMMIT;

After этого COMMIT, Alice и Bob officially становятся частью нашей таблицы students. Добро пожаловать, Alice и Bob!

Команда AUTOCOMMIT

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

SET autocommit = 0;

Теперь вам нужно вручную commit ваши изменения. Это как отключение автосохранения в видеоигре – убедитесь, что вы regularly сохраняете (commit).

Команда ROLLBACK

ROLLBACK – это ваша кнопка "отмены". Если что-то пошло не так в вашей транзакции, вы можете использовать ROLLBACK, чтобы отменить все изменения.

START TRANSACTION;
DELETE FROM students WHERE name = 'Alice';
-- Ой! Мы не хотели удалять Alice!
ROLLBACK;

Уф! Alice в безопасности в нашей базе данных. Помните, что ROLLBACK работает только для изменений, которые еще не были commit.

Команда SAVEPOINT

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

START TRANSACTION;
INSERT INTO students (name, age) VALUES ('Charlie', 21);
SAVEPOINT charlie_added;
INSERT INTO students (name, age) VALUES ('David', 23);
-- Ой! Мы只想 добавить Charlie
ROLLBACK TO SAVEPOINT charlie_added;
COMMIT;

В этой ситуации Charlie присоединяется к классу, а David нет. Извините, David!

Типы таблиц, поддерживающие транзакции в MySQL

Не все типы таблиц в MySQL поддерживают транзакции. Основные transaction-safe хранилища данных включают:

  1. InnoDB
  2. NDB Cluster

InnoDB наиболее часто используется и является по умолчанию в последних версиях MySQL. Это как швейцарский армейский нож среди хранилищ данных MySQL – универсальный и надежный!

Транзакции с использованием клиентской программы

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

mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO pet_shop (pet_name, species) VALUES ('Fluffy', 'cat');
Query OK, 1 row affected (0.01 sec)

mysql> INSERT INTO pet_shop (pet_name, species) VALUES ('Rover', 'dog');
Query OK, 1 row affected (0.01 sec)

mysql> COMMIT;
Query OK, 0 rows affected (0.02 sec)

И вот так Fluffy the cat и Rover the dog нашли новый дом в нашей базе данных pet shop!

Remember, транзакции – ваши друзья в поддержании целостности данных. Они обеспечивают надежность ваших операций с базой данных, даже когда事情 не идут по плану. Практикуйте использование транзакций в ваших операциях MySQL, и вы станете мастером баз данных в кратчайшие сроки!

Вот и все на сегодня по транзакциям MySQL. Надеюсь, вам понравилось это путешествие так же, как и мне. Continue практикуйте, stay curios и happy coding!

Credits: Image by storyset