MySql笔记-事务处理

本文探讨了MySQL中的事务处理,重点介绍了ACID原则,包括Atomic原子性、Consistent稳定性、Isolated孤立性和Durable可靠性。同时,详细阐述了事务隔离性的重要性,列举了脏读、不可重复读和幻读三种数据问题,并讨论了解决这些问题的非事务处理方法,如利用锁和相对更新操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ACID原则 - Atomic原子性 Consisten稳定性 Isolated孤立性 Durable可靠性

START TRANSACTION;
INSERT INTO t SET name='Bob';
SAVEPOINT my_savepoint;
INSERT INTO t SET name='Alice';
COMMIT;

ROLLBACK;
SET autocommit=0; //禁用自动提交模式
SET autocommit=1;

隔离性
数据问题
1.脏读(Drity Read):某个事务已更新一份数据,另一个事务在此时读取了同一份数据,由于某些原因,前一个RollBack了操作,则后一个事务所读取的数据就会是不正确的。
2.不可重复读(Non-repeatable read):在一个事务的两次查询之中数据不一致,这可能是两次查询过程中间插入了一个事务更新的原有的数据。
3.幻读(Phantom Read):在一个事务的两次查询中数据笔数不一致,例如有一个事务查询了几列(Row)数据,而另一个事务却在此时插入了新的几列数据,先前的事务在接下来的查询中,就会发现有几列数据是它先前所没有的。

隔离级别脏读(Dirty read)不可重复读(NonRepeatable read)幻读(Phantom Read)
未提交读(Read uncommitted)可能可能可能
已提交读(Read committed)不可能可能可能
可重复读(Repeatable read)不可能不可能可能
可串行化(Serializable )不可能不可能不可能
transaction-isolation = {READ-UNCOMMITTED | READ-COMMITTED | REPEATABLE-READ | SERIALIZABLE}
SET [SESSION | GLOBAL] TRANSACTION ISOLATION LEVEL {READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE}
SELECT @@global.tx_isolation;
SELECT @@session.tx_isolation;
SELECT @@tx_isolation;

事务的非事务处理

  • 利用锁
LOCK TABLES tbl_name READ\WRITE, ...;
UNLOCK TABLES;
  • 使用相对更新操作
UPDATE tbl_name SET var=var+10 where ...;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值