我在很多页面上读到过“所有DDL命令在Oracle中都是AutoCommit的”。没有问题,DDL命令是autoCommit,但我的问题是:为什么要这样做?
也就是说,为什么在Oracle中所有的DDL命令都是AutoCommit?这样做有什么原因吗?
发布于 2013-01-10 04:51:34
Concepts Guide关于事务的章节包括DDL作为事务结束的标记之一。Find out more。
为什么?简单的回答是,因为。
稍微长一点的答案是: DDL写入数据字典。如果DDL不发出隐式提交,那么数据字典可能会在长时间运行的事务中挂起,这将使其成为一个可怕的瓶颈。请记住,每条SQL语句都会查询数据字典。
“其他数据库管理系统似乎能够毫无问题地处理事务性DDL”
是的,但这些其他数据库在多用户环境中的可扩展性是否与Oracle一样?也许他们是,但这就是为什么这是一个有争议的问题,也是我投票结束的原因。
事实是,Oracle是一个受人尊敬的产品:他们在早期制定了架构决策,这些决策是在非常低的级别上嵌入到数据库内核中的。有些变化的影响太大而不值得。
如果实现事务性DDL是可行的,Oracle就不会把所有的精力都放在开发Edition-based Redefinition上。现在我们已经有了基于版本的重新定义,事务性DDL将为我们带来什么进一步的好处?
https://stackoverflow.com/questions/14245884
复制相似问题