做个笔记:关于oracle,sybase,sql server的事务
2006-02-22 13:41
330 查看
TOM的《Expert one-on-one Oracle》第四章关于事务的论述中讲到:
Oracle:在Oracle中没有‘开始事务’语句。事务隐式地开始于第一条修改数据的语句(第一条得到TX锁定的语句)。发出一条COMMIT或ROLLBACK语句显式地结束事务。总是用COMMIT或ROLLBACK语句显式地结束事务,否则使用的工具/环境将会自动选择其中的一条语句。如果没有提交或回滚而正常退出SQL*PLUS会话,SQL*PLUS将假定您想要提交工作,并且这样做。
Sybase和SQL Server:必须显式地BEGING(开始)事务,否则每条单独的语句本身是一个事务。在Oracle中也有类似的方法,在不连续的语句附近加上SavePoint,在单条语句附近加上BEGIN WORK/COMMIT或ROLLBACK。这是因为在这些单独数据库中,锁定是一个宝贵的资源,并且读取阻塞写入器,写入器阻塞读取器。为了偿试提高并行性,希望事务尽可能地短,有时甚至以数据完整性为代价。
Oracle采用了相反的方法。事务总是隐式的,没有办法‘自动提交’,除非应用程序来执行。在Oracle中,每个事务必须在需要时提交,绝不能提前。事务的过程不应被压缩。像锁定、阻塞等问题不必认真考虑,因为在事务大小的后面,数据完整性是驱动力。锁定不是稀少的资源,在数据的并行读取和写入之间也没有竞争的问题。这一点保证数据库中有健壮的事务,这些事务不必压缩。事务不是为了方便计算机和软件,而是用来保护数据的。
面对更新多行的任务,大多数程序员在循环中使用过程化的方法,这样能逐行地提交。这样做的原因主要有两个:
1、经常提交一些小事务比执行和提交一个大的要快,效率高。
2、没有足够的回滚段空间。
这两个结论都是被误导的。一般地,频繁提交并不快,而用单条SQL语句完成几乎总是比较快的。(后面TOM写了个例子,比较长,懒得抄了~,记得TOM在前面讲‘采用简单方法’的时候有说:如果能在SQL中完成就在SQL中完成,如果不能,就在PL/SQL中完成(SQL Server就用T-SQL)中完成。记住罗~~)有点手酸-_-
Oracle:在Oracle中没有‘开始事务’语句。事务隐式地开始于第一条修改数据的语句(第一条得到TX锁定的语句)。发出一条COMMIT或ROLLBACK语句显式地结束事务。总是用COMMIT或ROLLBACK语句显式地结束事务,否则使用的工具/环境将会自动选择其中的一条语句。如果没有提交或回滚而正常退出SQL*PLUS会话,SQL*PLUS将假定您想要提交工作,并且这样做。
Sybase和SQL Server:必须显式地BEGING(开始)事务,否则每条单独的语句本身是一个事务。在Oracle中也有类似的方法,在不连续的语句附近加上SavePoint,在单条语句附近加上BEGIN WORK/COMMIT或ROLLBACK。这是因为在这些单独数据库中,锁定是一个宝贵的资源,并且读取阻塞写入器,写入器阻塞读取器。为了偿试提高并行性,希望事务尽可能地短,有时甚至以数据完整性为代价。
Oracle采用了相反的方法。事务总是隐式的,没有办法‘自动提交’,除非应用程序来执行。在Oracle中,每个事务必须在需要时提交,绝不能提前。事务的过程不应被压缩。像锁定、阻塞等问题不必认真考虑,因为在事务大小的后面,数据完整性是驱动力。锁定不是稀少的资源,在数据的并行读取和写入之间也没有竞争的问题。这一点保证数据库中有健壮的事务,这些事务不必压缩。事务不是为了方便计算机和软件,而是用来保护数据的。
面对更新多行的任务,大多数程序员在循环中使用过程化的方法,这样能逐行地提交。这样做的原因主要有两个:
1、经常提交一些小事务比执行和提交一个大的要快,效率高。
2、没有足够的回滚段空间。
这两个结论都是被误导的。一般地,频繁提交并不快,而用单条SQL语句完成几乎总是比较快的。(后面TOM写了个例子,比较长,懒得抄了~,记得TOM在前面讲‘采用简单方法’的时候有说:如果能在SQL中完成就在SQL中完成,如果不能,就在PL/SQL中完成(SQL Server就用T-SQL)中完成。记住罗~~)有点手酸-_-
相关文章推荐
- sql server与oracle的事务处理中关于DDL SQL的异同 (整理)
- oracle的笔记,凑合着看吧!7.事务以及性能提升
- 连接数据库-----Access,SQL Server,Oracle,MySQL,IBM DB2,SyBase各数据库连接方法
- SQL Server和Oracle中事务处理的特点
- 关于jave在oracle驱动下事务提交与回滚问题
- Oracle之关于session和事务的全局临时表
- 关于oracle 11g 安装笔记记录
- 关于SQL Server 2005的学习笔记—分析函数
- JAVA数据类型与DB2、Oracle、Sybase以及SQL Server对应关系
- 四大数据库的比较(SQL Server、Oracle、Sybase和DB2)
- oracle11g学习笔记--Oracle事务讲解
- 关于Oracle的事务
- SQL server 笔记9(备份还原触发器事务三范式)
- 【SQL Server学习笔记】事务、锁定、阻塞、死锁 sys.sysprocesses
- 关于sql server的纪录修改冲突解决和oracle的for update 的并发锁定测试
- 关于Oracle处理DDL和DML语句的事务管理
- 四大数据库的比较(SQL Server、Oracle、Sybase和DB2)
- C#连接各种数据库代码Access,Sql Server,Oracle,Mysql,IBM DB2,Sybase
- 关于oracle事务的总结
- 关于 sql server 客户端执行多条sql语句事务的问题