3

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

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

4

1 回答 1

7

交易的概念指南章节包括 DDL 作为交易结束的标记之一。了解更多

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

稍长一点的答案是:DDL 写入数据字典。如果 DDL 不发出隐式提交,则数据字典可能会在长时间运行的事务中挂起,这会将其变成一个巨大的瓶颈。请记住,每条 SQL 语句都会查询数据字典。


“其他 DBMS 似乎能够毫无问题地处理事务性 DDL”

是的,但是那些其他数据库在多用户环境中是否像 Oracle 那样具有可扩展性?也许他们是,但这就是使这个问题成为一个有争议的问题的原因,也是我投票结束的原因。

事实上,Oracle 是一个受人尊敬的产品:他们在早期就做出了架构决策,这些决策在非常低的级别被嵌入到数据库内核中。有些改变的影响太大,不值得。

如果实现事务性 DDL 可行,Oracle 就不会将所有精力投入到开发基于版本的重定义上。既然我们已经获得了基于版本的重新定义,那么事务性 DDL 还能为我们带来什么好处?

于 2013-01-09T20:51:33.510 回答