浏览 5270 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-07-28
比如Read Committed,我按照字面理解是:第一个人来,Update一条记录,然后不commit; 这个时候第二个人来,Select同一条记录会读到以前的值。(编辑一下:这句应该是对的,错的是下面这个):自己update的东西自己再去read不就是还没有commit的?那么不就读不到了? Repeatable Read, 按照字面理解:凡是Select出来的,下次用同样的条件一定Select出来一样的内容。 Serializable, 按照字面理解:transaction严格地一个一个来执行。 但最终发现上面的某些理解大错特错(标个红色,免得有人以为上面是正解 ![]() 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-07-28
cat 写道 比如Read Committed,我按照字面理解是:第一个人来,Update一条记录,然后不commit; 这个时候第二个人来,Select同一条记录会读到以前的值。
难道不是吗? |
|
返回顶楼 | |
发表时间:2007-07-28
lz说说你的理解,
|
|
返回顶楼 | |
发表时间:2007-07-28
又仔细查了查,上面写的read committed的理解没错,当时有一个问题是自己update的东西自己再去read不就是还没有commit的?那么不就读不到了?好奇怪,这个想法才是错的。
但是repeatable read和serializable当年的理解确实是错了。repeatable read不是那么repeatable, 第二次read可能产生幻影行。而serializable也不是那么串行,DBMS还是会允许完全无关的transaction继续执行. |
|
返回顶楼 | |
发表时间:2007-07-28
lz还是回头好好看看书吧。推荐一本
http://www.china-pub.com/computers/common/info.asp?id=32560 |
|
返回顶楼 | |
发表时间:2007-07-28
sigh 坏就坏在看书上。
repeatable read和serializable的疑问都是看书解决的,感觉名字没起好。 read committed一直很有疑问(主要是后面写的那个:自己读得到自己没有commit的东西吗?),然后也看书,结果翻错了一页 ![]() 另外一个问题,大家写程序的时候对于事务内部的竞争条件会考虑到什么程度?特别是select出来后面又会被别人改变的情况。 |
|
返回顶楼 | |
发表时间:2007-07-28
标准是一个样,各个数据库平台的实现还不一样呢,
一般应该是read commited,看数据的竞争情况了,如果只是查看,改了就改了,无所谓,如果要修改,就要看数据一致性要求的程度了。 |
|
返回顶楼 | |