数据库的隔离级别:并发性作用。
Read Uncommited(未提交读):没有提交就可以读取到数据(发出了Insert,但没有commit就可以读取到。)很少用
Read Commited(提交读):只有提交后才可以读,常用,
Repeatable Read(可重复读):mysql默认级别, 必需提交才能见到,读取数据时数据被锁住。
Serialiazble(序列化读):最高隔离级别,串型的,你操作完了,我才可以操作,并发性特别不好,
隔离级别 是否存在脏读 是否存在不可重复读 是否存在幻读
Read Uncommitted(未提交读) Y Y Y
Read Commited(提交读) N Y(可采用悲观锁解决) Y
Repeatable Read(可重复读) N N Y
Serialiazble(序列化读)
脏读:没有提交就可以读取到数据称为脏读
不可重复读:再重复读一次,数据与你上的不一样。称不可重复读。
幻读:在查询某一条件的数据,开始查询的后,别人又加入或删除些数据,再读取时与原来的数据不一样了。
[b][size=large][color=red]因为要兼顾性能和减少事务处理出现的错误,因此hibernate设成第二级别(Read Commited(提交读))。但此时虽然避免了“读脏读”,但无法解决“不可重复读”,因此需要使用到hibernate中的“悲观锁 与 乐观锁”来解决这一问题[/color][/size][/b]
[color=red]悲观锁:就是在读数据的时候加把锁。
乐观锁:就是在把数据添加一个字段(version)进行控制。
其实很简单。[/color]
Read Uncommited(未提交读):没有提交就可以读取到数据(发出了Insert,但没有commit就可以读取到。)很少用
Read Commited(提交读):只有提交后才可以读,常用,
Repeatable Read(可重复读):mysql默认级别, 必需提交才能见到,读取数据时数据被锁住。
Serialiazble(序列化读):最高隔离级别,串型的,你操作完了,我才可以操作,并发性特别不好,
隔离级别 是否存在脏读 是否存在不可重复读 是否存在幻读
Read Uncommitted(未提交读) Y Y Y
Read Commited(提交读) N Y(可采用悲观锁解决) Y
Repeatable Read(可重复读) N N Y
Serialiazble(序列化读)
脏读:没有提交就可以读取到数据称为脏读
不可重复读:再重复读一次,数据与你上的不一样。称不可重复读。
幻读:在查询某一条件的数据,开始查询的后,别人又加入或删除些数据,再读取时与原来的数据不一样了。
[b][size=large][color=red]因为要兼顾性能和减少事务处理出现的错误,因此hibernate设成第二级别(Read Commited(提交读))。但此时虽然避免了“读脏读”,但无法解决“不可重复读”,因此需要使用到hibernate中的“悲观锁 与 乐观锁”来解决这一问题[/color][/size][/b]
[color=red]悲观锁:就是在读数据的时候加把锁。
乐观锁:就是在把数据添加一个字段(version)进行控制。
其实很简单。[/color]