mysql数据库的隔离级别简单总结(1)

概述

	隔离级别是基于客户端来讨论的,不同的客户端在和服务器交互时可以有不同的隔离级别,
	客户端处在什么隔离级别就具有什么隔离级别的问题。
mysql数据库的隔离级别一共有四种
	1.read uncommitted
		读未提交	不做任何隔离。可能产生脏读 不可重复读 虚读/幻读问题,性能最好。
		
	2.read committed
		读已提交	一个事务可以读取到另一个事务已经提交的数据。可以防止脏读,但可能存在不可重复读 虚读/幻读 问题。性能较好。
		
	3.repeatable read
		可重复读取	在查询整表数据时,一个事务可以读取到另一个事务已经提交的数据。可以防止脏读 不可重复读问题,但可能存在虚读/幻读问题。mysql默认采用此隔离级别。性能一般。
		
	4.serializable
		序列化	通过锁进行严格隔离,对同一个数据的访问要串行化进行。可以防止脏读 不可重复读 虚读/幻读 问题。但数据库处于串行化状态,效率极其低下。性能最差。
选择隔离级别的原则

选择不同的隔离级别,就可以防止在并发读写的过程中的不同的隔离性问题,隔离级别设置的越严格,防止的问题就越多但性能就越低,隔离级别设置的越宽松,性能就越好但可能产生的隔离性问题就越多。
数据库使用者应该根据自己的需求选择一个合理的隔离级别 – 选择一个能够防止想要防止的问题的情况下性能尽量好的隔离级别。

	在真正的开发中 脏读问题太严重,所以read uncommitted很少用。serializable性能太差,也很少用。
	所以只需根据是否需要防止不可重复读,在read committed 和 repeatable read之间选择一个即可。
	在实际开发中 repeatable read用的多一些。
查询当前客户端隔离级别的命令
	select @@tx_isolation;
修改隔离的命令
	set [session/global] transaction isolation level 隔离级别名称;
	可以通过选择[session]来指定修改的是当前客户端的隔离级别,mysql服务器默认的隔离级别不变
	可以通过选择[global]来指定修改的是mysql服务器默认的隔离级别,当前客户端隔离级别不变,默认不写是[global]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值