为什么DDL命令是AutoCommit?

时间:2013-01-09 20:29:49

标签: database oracle

我在很多页面上都读过“所有DDL命令都是Oracle中的AutoCommit”。没关系,DDL命令是autoCommit,但我的问题是:这样做的原因是什么?

意思是,为什么Oracle中的所有DDL命令都是AutoCommit? 有没有理由这样做?

1 个答案:

答案 0 :(得分:7)

“概念指南”中有关“事务”的章节将DDL作为“事务结束”的标记之一。 Find out more

为什么呢?简短的回答是,因为。

稍长的答案是:DDL写入数据字典。如果DDL没有发出隐式提交,那么数据字典可能会在长时间运行的事务中挂起,这会把它变成一个可怕的瓶颈。请记住,每个SQL语句都会查询数据字典。


  

“其他DBMS似乎无法处理事务DDL   问题“

是的,但那些其他数据库在Oracle多用户环境中是否可扩展?也许他们是,但这就是为什么这是一个有争议的问题以及为什么我投票结束。

事实上,Oracle是一个值得尊敬的产品:他们在早期做出了架构决策,这些决策以非常低的水平进入数据库内核。一些变化只会产生太大的影响,值得。

如果实现事务性DDL是可行的,Oracle就不会全力投入Edition-based Redefinition。现在我们已经获得了基于版本的重新定义,事务性DDL会给我们带来哪些进一步的好处?