首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么DDL命令是AutoCommit?

为什么DDL命令是AutoCommit?
EN

Stack Overflow用户
提问于 2013-01-10 04:29:49
回答 1查看 8K关注 0票数 3

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

也就是说,为什么在Oracle中所有的DDL命令都是AutoCommit?这样做有什么原因吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-10 04:51:34

Concepts Guide关于事务的章节包括DDL作为事务结束的标记之一。Find out more

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

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

“其他数据库管理系统似乎能够毫无问题地处理事务性DDL”

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

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

如果实现事务性DDL是可行的,Oracle就不会把所有的精力都放在开发Edition-based Redefinition上。现在我们已经有了基于版本的重新定义,事务性DDL将为我们带来什么进一步的好处?

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14245884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档