RU (Русский) Перевод
Здравствуйте, будущие маги баз данных! Сегодня мы отправимся в увлекательное путешествие в мир транзакций MySQL. Не волнуйтесь, если вы новички в программировании – я буду вашим доброжелательным проводником, который разложит сложные концепции на удобные для понимания части. Так что возьмите杯 любимого напитка и погружайтесь с нами!
Транзакции в 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 означает:
- Атомарность: Все операции в транзакции либо успешны, либо все fail.
- Консистентность: База данных находится в согласованном состоянии до и после транзакции.
- Изоляция: Транзакции изолированы друг от друга до их завершения.
- Постоянство: 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 хранилища данных включают:
- InnoDB
- 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