数据库中隔离的作用

事务的隔离性是确保数据库并发处理时数据一致性的重要机制。本文详细介绍了四种隔离级别:读未提交、读已提交、可重复读和可串行化,以及它们对脏读、不可重复读和幻读的控制。读未提交允许所有异常,而可串行化则完全避免了这些问题但牺牲了并发性。理解这些概念对于优化数据库性能和保证数据完整性至关重要。
摘要由CSDN通过智能技术生成

隔离性

隔离性,事务的基本特征之一。
	防止数据库在并发处理时出现数据不一致的情况
	严格情况下,使用串行化的方法执行每一个事务,事务之前互相独立,不存在并发。
	生产环境,存在大规模并发访问的情况,需要更高吞吐量,串行化无法满足高并发访问需求,需要降低隔离标准,换取事务之间的并发能力。
	牺牲一定的正确性来换取效率的提升,也就是说,我们需要通过设置不同的隔离等级,以便在正确性和效率之间进行平衡
	对数据库隔离级别进行定义,说明这些隔离标准都解决了哪些问题
	
	不可重复读是同一条记录的内容被修改了,重点在于UPDATE或DELETE
	幻读是查询某一个范围的数据行变多了或者少了,重点在于INSERT

事务并发处理的异常

不对事务进行隔离操作,并发会出现什么情况
1.脏读(Dirty Read)
	读到了其他事务还没有提交的数据
2.不可重复读(Nnrepeatable Read)
	对数据进行读取,两次读取的结果不同,读到了不同的内容,其他事务对这个数据进行了修改
	在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。那么,在第一个事务中的两次读数据之间,由于第二个事务的修改,那么第一个事务两次读到的的数据可能是不一样的。
3.幻读(Phantom Read)
	A根据条件查询得到了N条数据,此时事务B更改增加了M条符合A查询条件的数据,再次查询,发现有了N+M条数据,产生了幻读。
	事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。同时,第二个事务也修改这个表中的数据,这种修改是向表中插入一行新数据。那么,以后就会发生操作第一个事务的用户发现表中还有没有修改的数据行,就好象发生了幻觉一样。

事务隔离的级别

解决异常数量从少到多的顺序
					脏读		不可重复读		幻读  
读未提交		允许				允许			允许
读已提交		禁止				允许			允许
可重复读		禁止				禁止			允许
可串行化		禁止				禁止			禁止

	读未提交 允许读到未提交的数据,查询是不用锁的,脏读、幻读、不可重复读都会出现
	读已提交 只能读到已经提交的内容,避免了脏读的产生,常见默认隔离级别,为了避免不可重复读和幻读,需要编写加锁的SQL语句。
	可重复度,保证一个事务在相同查询条件下两次查询到的数据结果是一致得,可以避免不可重复读和脏读,无法避免幻读。MySQL默认
	可串行化,将事务进行串行化,也就是在一个队列中按照顺序执行,可串行化是最高级别的隔离等级,可以解决事务读取中所有可能出现的异常情况,但是它牺牲了系统的并发性。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值