我在很多页面上都读过"所有DDL命令都是Oracle中的AutoCommit".没关系,DDL命令是autoCommit,但我的问题是:这样做的原因是什么?
意思是,为什么Oracle中的所有DDL命令都是AutoCommit?这样做的原因是什么?
关于事务的概念指南章节将DDL作为事务结束的标记之一.了解更多.
为什么?简短的回答是,因为.
稍长的答案是:DDL写入数据字典.如果DDL没有发出隐式提交,那么数据字典可能会在长时间运行的事务中挂起,这会把它变成一个可怕的瓶颈.请记住,每个SQL语句都会查询数据字典.
"其他DBMS似乎能够毫无问题地处理事务性DDL"
是的,但是那些在Oracle多用户环境中可扩展的其他数据库是什么?也许他们是,但这就是为什么这是一个有争议的问题以及为什么我投票结束.
事实上,Oracle是一个值得尊敬的产品:他们在早期做出了架构决策,这些决策以非常低的水平进入数据库内核.有些变化只会产生太大的影响,值得.
如果实现事务性DDL是可行的,Oracle将不会全力投入开发基于版本的重新定义.现在我们已经获得了基于版本的重新定义,事务性DDL将为我们带来哪些进一步的好处?
| 归档时间: |
|
| 查看次数: |
6682 次 |
| 最近记录: |