脏读,不可重复读,幻读,丢失更新(乐观锁,悲观锁)
来源:互联网 发布:mysql dba是什么意思 编辑:程序博客网 时间:2024/05/21 19:35
脏读:(dirty reads)
脏读又称无效数据的读出,是指在数据库访问中,事务T1将某一值修改,然后事务T2读出该值,此后T1因为某种原因撤销对该值的修改,这就导致了T2所读到的数据是无效的。
脏读是指当一个事务正在访问数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问了这个数据,然后使用了这个数据,因为这个数据是还没有提交的数据,那么另外一个事务读到的这个数据就是脏数据,依据脏数据所做的操作可能是不正确的。
脏读(未提交读):防止一个事务读到另一个事务还没有提交的记录。
不可重复读:(non-repetable reads)
不可重复读:是指一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据,那么,在第一个事务中的两次读数据之间,由于第二个事务的修改,那么第一个事务两次读到的数据可能是不一样的,这样就发生了在一个事务内两次读到的数据是不一样的,因此称为不可重复读。
不可重复读的重点是修改:同样的条件,你读取过的数据,再次读取出来值就会不一样了。
幻度:
幻读是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行修改,这种修改涉及到表中的全部数据行,同时。第二个事务也修改这个表中的数据,这种修改是向表中插入一行新数据,那么,以后就会发生操作第一个事务的用户发现表中还没有修改的数据行,这就好像发生幻觉。
幻读的重点在于新增或者删除:同样的条件,第一次和第二次读出来的记录数不一样。
丢失更新(乐观锁,悲观锁):
乐观锁:乐观锁机制采取了更加宽松的加锁机制。悲观锁大多数情况下不依靠数据库的锁机制实现,以保证操作最大程度的独占性,但随之而来的就是数据性能的大量开销,特别是对长事务而言。相对‘悲观而言,乐观的锁更倾向于开发运用,乐观锁大多是基于数据版本记录制实现。。
优点:乐观锁机制避免了长事务中数据加锁开销(操作员A和B的操作过程都没有对数据库数据加锁)大大提升了大并发量下的系统整体性能体现。
悲观锁:具有强烈的独占和排他性能,他指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态,悲观锁的实现,往往依靠数据库提供的锁机制(只有数据库层提供的锁机制才能真正保证数据访问的排他性,否则,即使在本系统中实现了加锁机制,也无法保证外部系统不会修改数据)
Spring声明式事务:
Isolation属性一共支持五种事务机制:
DEFAVLT使用数据库设置的隔离级别(默认),由DBA默认的设置来决定隔离级别。
READ_UNCOMMITTED会出现脏读,不可重复读,幻读(隔离级别最低,并发性能最高)
READ_COMMITTED会出现不可重复读,幻读问题(锁定正在读取的行)
REPEATABLE_READ会出幻读(锁定所读取的所有行)
SERISLIZABLE保证所有的情况下不会发生(锁表)
- 脏读,不可重复读,幻读,丢失更新(乐观锁,悲观锁)
- .脏读,不可重复读,幻象读 丢失更新(乐观锁,悲观锁)
- 脏读、幻读、不可重复读 and 乐观锁、悲观锁 and 事务五种隔离级别
- 脏读、幻读、不可重复读 and 乐观锁、悲观锁 and 事务五种隔离级别
- 脏读、幻读、不可重复读 and 乐观锁、悲观锁 and 事务五种隔离级别
- 不可重复读和幻读的区别(悲观锁和乐观锁)
- 脏读、幻读、不可重复读和丢失更新
- 脏读、不可重复读 共享锁、悲观锁
- 脏读、不可重复读 共享锁、悲观锁
- 丢失修改,脏读,不可重复读,幻读(概念普及)
- 脏读、不可重复读 共享锁、悲观锁 和 事务五种隔离级别
- 脏读、不可重复读 共享锁、悲观锁 和 事务五种隔离级别
- 脏读、不可重复读 共享锁、悲观锁 和 事务五种隔离级别
- 脏读、不可重复读 共享锁、悲观锁 和 事务五种隔离级别
- 脏读、不可重复读 共享锁、悲观锁 和 事务五种隔离级别
- 脏读、不可重复读 共享锁、悲观锁 和 事务五种隔离级别
- 脏读、不可重复读 共享锁、悲观锁 和 事务五种隔离级别
- 脏读、不可重复读 共享锁、悲观锁 和 事务五种隔离级别
- Android系统剪裁后卸载APK失败重启系统
- 如何用一句话证明你学过编程
- 欧拉函数
- 官方微信红包课:对中小平台获取新用户的6个启示
- 阿里云云虚拟主机上个人网站的Https访问配置
- 脏读,不可重复读,幻读,丢失更新(乐观锁,悲观锁)
- mybatis invalid comparison: java.sql.Timestamp and java.lang.String
- 使用ToolRunner运行Hadoop作业的原理及用法
- OkHttp使用(一)——GET请求
- WampServer可以访问IP,但无法访问localhost
- SpringMVC拦截器:登录拦截器
- Python web 开发
- Linux笔记
- 阿里云Ubuntu上通过nginx+uwsgi部署Django