数据库中隔离的作用

隔离性

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

事务并发处理的异常

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

事务隔离的级别

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

	读未提交 允许读到未提交的数据,查询是不用锁的,脏读、幻读、不可重复读都会出现
	读已提交 只能读到已经提交的内容,避免了脏读的产生,常见默认隔离级别,为了避免不可重复读和幻读,需要编写加锁的SQL语句。
	可重复度,保证一个事务在相同查询条件下两次查询到的数据结果是一致得,可以避免不可重复读和脏读,无法避免幻读。MySQL默认
	可串行化,将事务进行串行化,也就是在一个队列中按照顺序执行,可串行化是最高级别的隔离等级,可以解决事务读取中所有可能出现的异常情况,但是它牺牲了系统的并发性。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
灰度发布是一种软件发布策略,用于逐步将新版本的软件功能或者更新应用到生产环境,以减少潜在的风险和影响范围。在灰度发布数据库隔离是非常重要的一环,以确保新版本的数据库不会对生产环境造成不可逆的影响。 数据库隔离可以通过以下几种方式实现: 1. 数据库实例隔离:在灰度发布,可以使用不同的数据库实例来隔离新旧版本的数据。例如,可以创建一个新的数据库实例来存储新版本的数据,而保留旧版本的数据在原有的数据库实例。这样可以确保新版本的数据不会影响到生产环境的旧版本数据。 2. 数据隔离:如果数据库实例隔离不够细粒度,可以考虑使用数据表级别的隔离。可以在同一个数据库实例创建新的数据表来存储新版本的数据,而保留旧版本的数据表不变。通过在应用程序指定使用哪个数据表,可以实现新旧版本数据隔离。 3. 数据库连接隔离:在灰度发布,可以使用不同的数据库连接来隔离新旧版本的数据访问。可以为新版本的应用程序创建一个独立的数据库连接,而保留旧版本的应用程序使用原有的数据库连接。这样可以确保新版本的应用程序只能访问新版本的数据,而不会对旧版本的数据造成影响。 4. 数据库权限隔离:通过设置不同的数据库用户权限,可以实现新旧版本数据隔离。可以为新版本的应用程序创建一个具有访问新版本数据权限的数据库用户,而保留旧版本的应用程序使用原有的数据库用户。这样可以确保新版本的应用程序只能访问新版本的数据,而不会对旧版本的数据造成影响。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值