浏览 3750 次
锁定老帖子 主题:数据库事务隔离的测试
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-02-12
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-02-12
明天在看看sql server2005是个什么样子
|
|
返回顶楼 | |
发表时间:2007-02-12
数据拿上来就给精华
PS:如果有你的测试方法让我们也试验一下,是否可以重现你的作法. |
|
返回顶楼 | |
发表时间:2007-02-12
抛出异常的爱 写道 数据拿上来就给精华
PS:如果有你的测试方法让我们也试验一下,是否可以重现你的作法. 同意。 楼主给出的描述太简略了。很容易误导。碰巧我也做过少量类似的试验,所以跟你的结论不同。 特别的,你怎么觉得Oracle对事务隔离的性能就很好了?还是随便猜的? Oracle的确只支持Read-committed和Serializable两种级别的Isolation,Read-uncommitted和Repeatable-read是不支持的。 SqlServer2000支持所有四种级别。 据我的实验看来,Oracle对Serializable级别是使用"乐观锁"(不知道有没有正确使用这个术语)的方式,就是并不锁定表,但如果有违反Serializable的数据更改,则抛出异常,你只能放弃或重做一遍; 而SqlServer2000,对Serializable是使用“悲观锁”,就是物理的锁定表,即使是select语句,事务结束前,不能更改被锁定的资源。 |
|
返回顶楼 | |
发表时间:2007-02-12
乐观锁不是用来解决串行的,是用来解决不可重复读的,术语用错地方了,悲观锁和乐观锁都是用来解决不可重复读的,只不过乐观锁用代码控制(代码多,性能好),悲观锁用数据库来控制(代码少,性能差),悲观锁(for update)是用来锁定某一行,不是整张表
|
|
返回顶楼 | |