MYSQL:事务 transaction

是什么

必须在一起执行的一串sql操作,通常会有2个及以上的数据表被更改。数据表之间的数据相互关联,如果没有一起执行,会出现数据的业务意义错误。例如,销售流水表和库存表。

事务的4个特性

A原子性,I隔离性,C一致性,D持久性。

原子性:就是要求这一串sql语句要么全部执行成功,要么全部执行失败。但是事务不能保证做到这一点,需要根据mysql的执行结果,选择进行事务提交commit或者回滚rollback。

持久性:事务一旦commit成功,数据库中的数据就会永久性的改变,不会因为断电或异常丢失数据更改。

隔离性:当多个事务操作并发执行的时候,应指定隔离等级,防止同时对某一数据读取或更改,防止当某些事务执行出错后回滚,引起数据的业务信息错乱。

一致性:应用系统从一个正确的状态到另一个正确的状态。这里的正确是指:数据满足真实世界各种约束,例如 完整性约束,业务约束等。 如何理解数据库事务中的一致性的概念? - 知乎

ACID就是说事务能够通过AID来保证这个C的过程.C是目的, AID都是手段.

事务的基本操作

显式开始:start transaction 或者begin

提交:commit

回滚:rollback(  回滚需要在提交commit之前运行。)

在 MySQL 中,并不是所有的操作都可以回滚。比如创建数据库、创建数据表、删除数据库、删除数据表等,这些操作是不可以回滚的,所以,你在操作的时候要特别小心,特别是在删除数据库、数据表时,最好先做备份,防止误操作。

事务的隔离等级

事务隔离等级:

  • read uncommitted——可读取事务内,已修改,未提交的数据

  • read committed -——可读取事务内,已修改,已提交的数据

  • repeatable read—— 默认,事务内部读取与其他事务无关

  • serializable ——开启后,事务执行期间,其他事务无法对其中涉及的数据,进行读取或更改操作。代价花费最高,性能很低,很少使用,在此级别下,事务顺序执行。用于关键数据的清算、修改。

  • 数据库的4种隔离级别 - myseries - 博客园

猜你喜欢

转载自blog.csdn.net/lamanchas/article/details/121625817