「すべてのDDLコマンドはOracleではAutoCommitです」と多くのページで読んだことがあります。DDLコマンドがautoCommitであっても問題ありませんが、私の質問は次のとおりです。それを行う理由は何ですか。
つまり、OracleですべてのDDLコマンドがAutoCommitになるのはなぜですか?それをする理由はありますか?
トランザクションに関する概念ガイドの章には、トランザクション終了のマーカーの1つとしてDDLが含まれています。詳細をご覧ください。
なんで?簡単な答えは、なぜならです。
少し長い答えは次のとおりです。DDLはデータディクショナリに書き込みます。DDLが暗黙のコミットを発行しなかった場合、データディクショナリは長時間実行されるトランザクションでハングアップする可能性があり、それは巨大なボトルネックになります。すべてのSQLステートメントがデータディクショナリをクエリすることを忘れないでください。
「他のDBMSはトランザクションDDLを問題なく処理できるようです」
はい。ただし、これらの他のデータベースは、マルチユーザー環境でOracleと同じくらいスケーラブルですか。おそらく彼らはそうですが、それがこれを論争の的となる質問にし、私が閉鎖に投票した理由です。
事実、オラクルは由緒ある製品です。彼らは初期の段階でアーキテクチャ上の決定を下し、それは非常に低いレベルでデータベースカーネルに組み込まれています。いくつかの変更は、価値がないほど大きな影響を及ぼします。
トランザクションDDLの実装が実現可能であった場合、オラクルはエディションベースの再定義の開発にそのすべての努力を払うことはなかったでしょう。そして、エディションベースの再定義ができたので、トランザクションDDLがもたらすさらなるメリットは何でしょうか。