データベースにおけるトリガーについての質問です。
ミック著「達人に学ぶDB設計徹底指南書」(2012)にトリガーについての記述があります。(331P)
「トリガーは非常に危険なので、使うべきではありません。代わりにストアドプロシージャを使うべきです。この理由は次の4つです。
理由1:実装ごとに文法がバラバラで統一性がない。
理由2:オプティマイザによる最適化を受けられない。
理由3:エラーハンドリングが難しい。
理由4:アプリケーション以外の更新でも発射されるため、開発が難しくなる。
理由1は、程度に差こそあれストアドプロシージャについても当てはまるもので、トリガーをプロシージャで代用せよ」と説く理由としては少し弱いものですが、残りの三つの理由は極めて重大です。
トリガーで実行されるコードは、DBMS内部のブラックボックス処理であるため、通常のSQLチューニングができません。(以下略)」
理由2がよく分かりません。著者の意味するところはストアドプロシージャであればオプティマイザによる最適化を受けることができるということだと思うのですが、ストアドプロシージャもまたオプティマイザによる最適化を受けることはできないと思うのですが、どうなのでしょうか?
DBMSのオプティマイザはそもそもSQLのアクセスパスを最適化をするのが仕事であって、DBMS内に保存されている手続き型のコードであるストアドプロシージャやトリガーなどとは関わりはないと考えていたのですが、本の記述にあるということは関係あるということなのでしょうか?
(検索してもめぼしい情報は見つけられませんでしたが)
ご存知の方、回答お願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/10/16 13:38
2016/10/16 14:27