mysql数据库note4:TCL事务控制语言,隔离级别

重点:事务的隔离级别,脏读幻读不可重复读。
脏读:

A事务执行过程中,B事务读取了A事务的修改。但是由于某些原因,A事务可能没有完成提交,发生RollBack了操作,则B事务所读取的数据就会是不正确的。这个未提交数据就是脏读(Dirty Read)

不可重复读

B事务读取了两次数据,在这两次的读取过程中A事务修改了数据,B事务的这两次读取出来的数据不一样。B事务这种读取的结果,即为不可重复读(Nonrepeatable Read)

幻读

B事务读取了两次数据,在这两次的读取过程中A事务添加了数据,B事务的这两次读取出来的集合不一样。

隔离级别:

REPEATABLE READ Repeatable Read 可重复读
READ COMMITTED Read Committed 读取提交内容
READ UNCOMMITTED Read UnCommitted 读取未提交内容
SERIALIZABLE Serializable 可串行化
在这里插入图片描述

修改隔离级别:默认是RR

#需要修改mysql.ini配置文件
#可选参数有:READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE.
[mysqld]
transaction-isolation = REPEATABLE-READ

– 查看当前隔离级别
select @@tx_isolation;
– 修改当前会话Session隔离级别
set session transaction isolation level read committed
– 查看事务自动提交状态
show variables like ‘autocommit’;
– 开启事务自动提交
set autocommit=0 – 0 是off,1是on

-- Transaction TCL:transaction control language	事务控制语言
/*
	数据库事务:逻辑单元,针对DML语句
	事务ACID:atomicity,consistency,isolation,durability
		原子性:事务中的所有操作,要么全做,要么都不做。偏向事务总体的规则。
		一致性:数据库从一种状态转换到另一种状态的一致性。偏向事务状态的一致性。
						一个操作导致一张表发生变化,相关表也应该有相应的变化。
		隔离性:事务执行不能被其他事务干扰
	  持续性(永久性):对数据的改变应该是永久性的。
*/

-- Mysql默认自动提交事务,手动提交需要指定。
show variables like '%commit%';	-- 显示事务默认值
set autocommit = off;		-- 关闭自动提交

-- 事务的开启,提交,回滚
-- 提交事务:commit		回滚事务:rollback(回滚到事务的初始状态)		
start transaction;	-- 开启事务
	update student set sage = sage-1000 where sname = '关羽';
	update student set sage = sage+1000 where sname = '关羽';
commit;
rollback;

-- 设置保存点
start transaction;
savepoint a;		-- 设置回滚点
	insert into student(sname,sage,cid,ssex) values('俊杰',26,2,'男');
savepoint b;
	update student set sage = sage + 1;
rollback to b;	-- 回滚到b
commit;

-- 查询时占用
-- 火车票售票窗口 - 买票
start transaction;
	select sage from student where sid = 1 for update;	-- 占用这个资源
	update student set sage = 18 where sid = 1;
commit;
rollback;




/*
	并发问题:多个线程同时对数据库进行操作
	脏读:事务A读到了事务B未提交的数据
	不可重复读:
	幻读/虚读:
*/


/*
	事务隔离级别
*/


-- DDL:默认隐式commit事务提交
create table aa (
	aa int,
	bb int
)

-- 展示所有表格
show tables;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值