mysql 笔记:事务

一、问题读取

1. 脏读(Dirty Read): 事务1更新了某一条记录,但未提交;事务2读取到新的未提交记录;事务1回滚。

2. 不可重复读取(Nonrepeatable Read): 不可重复读,是指在数据库访问中,一个 事务 范围内两个相同的查询却返回了不同数据。 例子: 事务1读取某一条记录;事务2修改事务1读取的记录提交后;事务1再次读取该记录。

3. 幻象读取(Phantom Read):事务1按 WHERE 子句读取一批记录;事务2插入一条或多条符合事务1读取规则的记录;事务1再按一样的 WHERE 子句读取一批记录。


二、隔离级别(级别由低到高)

1. READ UNCOMMITTED (读取未提交内容)
2. READ COMMITED (读取提交内容)
3. REPEATABLE READ (可重读)
4. SERIALIZABLE  (可串行化)  
隔离级别
脏读
不可重复读
幻读
Read Uncommitted
Read Committed
×
Repeatable Read
×
×
Serializable
×
×
×

三、事务控制语句
查看当前会话隔离级别
select @@tx_isolation;
查看系统当前隔离级别
select @@global.tx_isolation;
设置当前会话隔离级别
set session transaction isolatin level repeatable read;
设置系统当前隔离级别
set global transaction isolation level repeatable read;
命令行,开始事务时
set autocommit=off 或者 start transaction

四、事务的特性(ACID)
原子性  (atomicity)
原子性是指 一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。 只有使事务中所有的数据库操作执行都成功,才算整个事务成功。只要有一个 sql 语句执行失败,那么在这个事务中已经执行的 sql 语句都必须撤销,数据库状态应该退回到执行事务前的状态。
一致性 (consistency)
  事务必须是使 数据库 从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。 在事务开始之前和结束之后,数据库的完整性约束没有被破坏。
隔离性  (isolation)
  一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰,这些通过锁来实现。
持久性 (durability) 
持续性也称永久性( permanence ),指一个事务一旦提交,它对 数据库 中数据的改变就应该是永久性的。接下来的其他操作或故障(比如说宕机等)不应该对其有任何影响。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值