暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
GBase 8s隔离级别
417
2页
2次
2021-12-30
免费下载
GBase 8s
隔离级别
上并,数了不下将
GBase
软件中的隔离级别为例逐一介绍。
脏读(
Dirty Read
在其他数据库软件中对应的是“读未提交(
Read Uncommied
)”隔离级别(顾名思义,
即允许读取到未提交事务修改的数据)。该隔离级别最低,并发性最高。
在该隔离级别下,所有的读取操作(例
select
查询)均不会对相应数据对象加任
锁,读取前也不检查读取对象是否被上锁。因此,数据对象被修改时,其他事务并不检查
上面是否
X
锁就直接读,脏读的情况可能会发生。数据在被读取时,由于不
S
锁,
他事务能直接上
X
锁并修改,幻读和不可重复读也无法避免。
提交读(
Commied Read
在别的数据库软件中称为“读已提交(
Read Commied
)”。该隔离级别并发性较高,是
使用最广泛的一种隔离级别。
在该隔离级别下,读取操作会对数据对象尝试
S
锁(但不会真正加上
S
锁)来检
对象是否正被修改。假设数据对象正在被事
A
修改,对象上会存在
X
锁。此时事
B
读取该对象,会尝试加
S
锁,但由于
X
锁存在,尝试加锁会失败,
B
会进行等待,如果等待
超时则报错退出,从而避免脏读的问题。
如果数据对象上本身无
X
锁,事务
B
仅读取对象而不
S
锁。因此幻读和不可重复读
的问题无法避免。
最后提交读(
Last Commied Read
在该隔离级别下,读取操作不检查数据对象上有没有锁,直接通过逻辑日志读取该数
据对象最后一次提交的值。当然,读取全过程也不上任何锁,因此最后提交读能避免脏读
但不能避免幻读和不可重复读。
相比提交读,最后提交读不检查锁,也不需要锁等待,并发性相对更高。此外,在提
交读下会出现因死锁产生的锁等待情况,但在最后提交读下由于读取不检查锁,可直接避
免此种情况。
游标读(
Cursor Stability
游标读基于游标来实现。在该隔离级别下,假设读取时游标检索到某个数据对象
1
就会切实地加上
S
锁,当读取完
1
到下一个对象
2
时,对象
1
上的
S
锁会被及时地释放掉。
由于读取操作切实地加上了
S
锁,脏读、幻读、不可重复读均可避免。
可重复读(
Serializable
在别的数据库软件中称为“可串行化(
Serializable
)”。该隔离级别并发性最低。
该隔离级别下,读取操作将踏踏实实地对相应数据对象加
S
锁,直到整个事务结束
才释放锁(而不是按数据对象逐个读逐个释放),从而完全避免脏读、幻读、不可重复读
等问题。
其他
除了以上五种
GBase
系统中的隔离级别,在其他数据库系统中还有一种与
GBase
不同
的“可重复读(
Repeatable read
)”。该隔离级别的并发性比可串行化高,在该隔离级别下可
避免脏读和不可重复读,但无法避免幻读。
下面将上文提到的各隔离级别按并发性从高到低排序(括号中的是非
GBase
系统中的
隔离级别):
脏读(读未提交)
-->
最后提交读
-->
提交读(读提交)
-->
游标读
-->
可重复读(可串
行化)
of 2
免费下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜