MS SQL Server 、Sybase、 Oracle支持锁定方案的不同 推荐
2009-12-19 22:40
525 查看
还是几位读我的书 (《Oracle大型数据库系统在AIX UNIX上的实战详解》) 的读者来邮件咨询问题,很抱歉我不能逐位回复邮件,第一我真的挺忙,第二这些问题颇有共性。我来借助这个地方,统一地和诸位探讨,很多问题我也是在摸索中,不能直接给大家答案,呵呵,大家见谅啊!
说说锁问题。 MS SQL支持的锁类型和Oracle差异是很大的!
Oracle支持的锁定方案为行锁,一种称为“精细的”锁模型。在该模型下,一个数据库用户的读操作不会妨碍其他并发用户针对该数据的更新类型操作,正在更新的数据行也可以被其他并发用户读取,如果发生了并行的、在同样数据上的更新行为,则Oracle的锁机制会即刻生效,以防止数据的脏读和数据覆盖。
Oracle的行锁方案为整体数据库提供了较高的并发性能,同时也维护了数据库数据的原子性和一致性,在如图所示的两个用户并发进程——它们同时完成了各自的操作,却没有互相产生干扰。
图 Oracle的行锁方案及其效果
在MS SQL Server / Sybase ASE系统中,锁定方案是可以指定的,每个表都可以拥有自己的锁模式,可以有如下的锁定方案:
所有页:索引页和数据页都被锁定
数据页:锁定数据页
数据行:仅锁定数据行
在MS SQL Server中,还可以启用基于行版本控制的隔离级别,应用可以指定事务使用行版本查看事务或查询开始时存在的数据,而不使用锁保护所有读取。通过使用行版本控制,读取操作会很少阻止其他事务的进行。
在Sybase中, 默认的锁定方案是所有页——数据更新中同时锁定数据对应的数据页和索引对应的索引页,也可以采用DOL表——在数据更新中仅锁定数据页,或者Row Locking锁定方案,仅锁定数据行即可。Sybase允许更改表的锁定方案,如图16-14所示,可以修改锁定方案为所有页、数据页或数据行。
所以,MS SQL Server、Sybase、Oracle真的是各有不同,各有千秋,程序要是移植,需要做的工作许多…
文平
相关文章推荐
- [数据库测试]强烈推荐一个python ODBC数据源插件,可支持Oracle,Db2,Mysql,Sql-server以及各种数据库版本,附例子和测试程序
- [数据库测试]强烈推荐一个python ODBC数据源插件,可支持Oracle,Db2,Mysql,Sql-server以及各种数据库版本,附例子和测试程序
- [数据库测试]强烈推荐一个python ODBC数据源插件,可支持Oracle,Db2,Mysql,Sql-server以及各种数据库版本,附例子和测试程序
- MS SQL Server 与 Oracle在应用上的不同 : 如果应用系统要迁移
- C_连接Access、SQL_Server、Oracle、MySQL、DB2和SyBase六种不同数据库的程序源码和需要注意的点
- MS SQL Server 与 Oracle在应用上的不同 : 如果应用系统要迁移
- [数据库测试]强烈推荐一个python ODBC数据源插件,可支持Oracle,Db2,Mysql,Sql-server以及各种数据库版本,附例子和测试程序
- 不同数据库中查询前几条记录的用法(SQL Server/Oracle/Postgresql)
- jTDS官方介绍(OpenCms v6.2版MS Sqlserver数据库支持所用JDBC驱动)
- SQLErrorCodes loaded: [DB2, Derby, H2, HSQL, Informix, MS-SQL, MySQL, Oracle, PostgreSQL, Sybase]
- Oracle 9i与MS SQL Server 2000之比较连载五
- MyBatis 3 自动生成 主键 针对不同的数据库(oracle/sqlserver/mysql)
- MS SQL Server启用对4G以上物理内存的支持
- oracle 11g透明网关访问ms sqlserver的心得
- 如何使用Oracle SQLDeveloper 中连接MS SQLServer和MySQL数据库
- 数据库查询排序使用随机排序结果示例(Oracle/MySQL/MS SQL Server)
- jTDS官方介绍(OpenCms v6.2版MS Sqlserver数据库支持所用JDBC驱动)
- MyBatis 3 自动生成 主键 针对不同的数据库(oracle/sqlserver/mysql)
- [DB2, Derby, H2, HSQL, Informix, MS-SQL, MySQL, Oracle, PostgreSQL, Sybase]
- MS SQL Server将数据导出Insert语句的几种方案