Better concurrency in Oracle than SQL Server?

Is it true that better concurrency can be achieved in Oracle databases than in MS SQL Server databases? In particular in an OLTP scenario, such as an ERP system?

I've overheard an SAP consultant making this claim, referring to Oracle locking techniques like row locking and multi-version read consistency and the redo log.


Out of the box, Oracle will have a higher transaction throughput but this is because it defaults to MVCC. SQL Server defaults to blocking selects on uncommitted updates but it can be changed to MVCC as well so that difference should basically go away. See Read Committed Isolation Level.

See Enabling Row Versioning-Based Isolation Levels.

When the ALLOW_SNAPSHOT_ISOLATION database option is set ON, the instance of the Microsoft SQL Server Database Engine does not generate row versions for modified data until all active transactions that have modified data in the database complete. If there are active modification transactions, SQL Server sets the state of the option to PENDING_ON. After all of the modification transactions complete, the state of the option is changed to ON. Users cannot start a snapshot transaction in that database until the option is fully ON. The database passes through a PENDING_OFF state when the database administrator sets the ALLOW_SNAPSHOT_ISOLATION option to OFF.


He/She was probably referring to the facts that:

  • In Oracle readers do not block writers and writers do not block readers
  • Oracle does not maintain a list of row locks so there is no significant overhead in locking and locks never escalate to the table level.

  • 从SQL 2005开始,这不再是事实 - 您可以启用快照隔离,您的编写者不会像Oracle中一样阻止读者。

    链接地址: http://www.djcxy.com/p/32850.html

    上一篇: 如何使用nHibernate添加NOLOCK?

    下一篇: Oracle比SQL Server更好的并发性?