gy 发帖数: 620 | 1 今天是我LD的生日, 我写点儿东东,就当是给她的生日礼物。
另外, zenny同学曾说是要写写blocking的东东, 我左等右等,望眼欲穿.
等不及了,我这块砖就先抛出来了吧。等着Zenny和其它大牛们更精彩的。
打小语文就没学好, 写不出zenny大牛那么好的东东. 各位将就着看吧.
**********************************************************************************
在一个Database Server上, 各种transaction是同时进行的, 为了保证transaction的ACID properties, SQL Server就用了一个lock manager来对各个transaction进行管理. 打个不是很恰当的比喻, 就好象十字路口的交通灯, 指挥着东南西北各方向的车通过. 也正是这样, 一个方向通过, 另一个方向的必然被block. 同样, 也就是说在SQL Server里blocking是没法避免的.
虽说blocking是没法避免的, 但是可以尽量减少it的发生, 比如, 缩短tr |
gy 发帖数: 620 | 2 谁告诉我怎么给版面转银子呀? 我想转点银子, 让版主帮着发发. 祝我LD生日快乐呢.
嘿嘿 |
v*****r 发帖数: 1119 | 3 写的不错,补充一下:
Isolation level 是ANSI SQL 的标准,不是SQL Server 的概念。每个 rdbms 实现
Isolation level 的方式都不一样,这也是 Oracle 比 SQL Server 设计上更优异的
一个地方。举个简单的例子,Oracle 的 Undo image的概念保证了 non-blocking read
没有 dirty read 的忧虑,所以根本不需要象 SQL Sever 那样为了提高 performance
牺牲 integrity。换句话说,同样的 transaction isolation level 下 (by default
都是 Read Committed), Oracle 不需要 SQL Server 那么多 Locking,所以 Oracle
在 performance 上比 SQL Server 有先天的优势。
前几天被老板逼着去 Redmond 上了MS SQLServer 两周课,认真做了 one on one 的比
较,不可否认,SQL Server 也有些相对的优点,不过在很多地方和 Oracl |
w*******e 发帖数: 1622 | 4 赞先!
Undo image? 是不是跟SQL Server 2005里的Snapshot isolation level是一样的呢?
这个snapshot也是no-blocking和dirty read的
read
performance
default
Oracle
【在 v*****r 的大作中提到】 : 写的不错,补充一下: : Isolation level 是ANSI SQL 的标准,不是SQL Server 的概念。每个 rdbms 实现 : Isolation level 的方式都不一样,这也是 Oracle 比 SQL Server 设计上更优异的 : 一个地方。举个简单的例子,Oracle 的 Undo image的概念保证了 non-blocking read : 没有 dirty read 的忧虑,所以根本不需要象 SQL Sever 那样为了提高 performance : 牺牲 integrity。换句话说,同样的 transaction isolation level 下 (by default : 都是 Read Committed), Oracle 不需要 SQL Server 那么多 Locking,所以 Oracle : 在 performance 上比 SQL Server 有先天的优势。 : 前几天被老板逼着去 Redmond 上了MS SQLServer 两周课,认真做了 one on one 的比 : 较,不可否认,SQL Server 也有些相对的优点,不过在很多地方和 Oracl
|
v*****r 发帖数: 1119 | 5 不错,SQL Server 2005里的Snapshot isolation level 是试图弥补它先天不足而增加
的。确切的讲,SQL Server 2005增加了两个这方面的isolation levels: Read
Committed with Snapshots 和 Snapshot Isolation.
Read Committed with Snapshots 相当于 Oracle 的 Read Committed (default),
Snapshot Isolation 相当于 Oracle 的 Serializatable
问题是这两个都不是 SQLServer 的 default 设置,不知道有多少人用它。我前些日子
上的 SQLServer 课的 lecturer 有10+ years SQLServer DBA/developer experience,
当我问他关于 Snapshot isolation level 的问题,to my surprise, 他竟说他从未
用过,他做的所有project都是用SQLServer 的default (Read C |
S***k 发帖数: 370 | 6 多谢.
这个交通灯的比喻太好了.管理层的人不懂,听locking变色.总以为locking是不应该有
的.以后就用你这个比喻了.
头几个月我们有一个programmer居然把所有view里的table都用了nolock hint.结果交
通就乱了套.当时实在没办法, 找了一篇痛骂nolock hint 的文章才解决问题.
http://blogs.msdn.com/davidlean/archive/2009/04/06/sql-server-nolock-hint-other-poor-ideas.aspx |
v*****r 发帖数: 1119 | 7 There you go. Spark just show one typical mindset conflict between Oracle
developers and SQL Server developers.
SQL Server developers: We think 管理层的人不懂,听locking变色. locking is
necessary and we can't live without it. Anyone who try to use "nolock hint"
to improve performance will have to worry about Dirty Read (as "nolock hint"
just changed the Isolation Level to Read Uncomitted)
(Note: that mindset is actually true before SQL Server 2005 Yukon release.)
Oracle developers: Oracle by design achiev |
z***y 发帖数: 7151 | 8 这种文章要置顶啊。
叽歪兄继续努力!
嗯, 我最近比较忙, 接了两个不该接的项目, 不过也好, 今年夏天就可以歇长一点
。 |