Mysql事务详解

事务是一个最小的不可在分的工作单元;通常一个事务对应一个完整的业务。
一.事务特性
事务包括四大特性:ACID
原子性:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
一致性:事务必须保证多条DML语句同时成功或者同时失败。在事务开始之前和事务结束以后,数据库的完整性没有被破坏。
隔离性:隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。
持久性:最终数据必须持久化到硬盘文件中,事务才算成功的结束。
二.事务隔离级别
第一级别:读未提交(READ UNCOMMITTED):事物A和事物B,事物A未提交的数据,事物B可以读取到。读未提交存在脏读现象:一个事务读取到另一个事务未提交的数据。
第二级别:读已提交(READ COMMITTED):对方事务提交之后的数据我方可以读取到。这种隔离级别解决了脏读现象。
存在不可重复读:一个事务因读取到另一个事务已提交的update。导致对同一条记录读取两次以上的结果不一致。
第三级别:可重复读(REPEATABLE READ)这种隔离级别解决了:不可重复读问题。存在问题:读取到的数据是幻象。幻读:一个事务因读取到另一个事务已提交的insert数据。导致对同一张表读取两次以上的结果不一致。
第四级别:序列化/串行化读(SERIALIZABLE),解决所有的问题,但效率低。需要事务排队。
三.事务处理主要有两种方法:
1、用 BEGIN, ROLLBACK, COMMIT来实现
BEGIN 开始一个事务
ROLLBACK 事务回滚
COMMIT 事务确认
2、直接用 SET 来改变 MySQL 的自动提交模式:
SET AUTOCOMMIT=0 禁止自动提交
SET AUTOCOMMIT=1 开启自动提交

刷脏:Mysql为了保证存储效率,于是每次将要读写的文件是先存储在缓存池中,对于数据的操作是在缓存池中,而mysql将会定期的刷新到磁盘中。
开启事务:START TRANSACTION
事务的提交:COMMIT
事务的回滚:ROLLBACK (一旦事务提交失败,我们需要将数据回滚到之前的状态,需要用到rollback语句)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值