kagamihogeの日記

kagamihogeの日記です。

パフォーマンス改善と事前対策に役立つ Oracle SQLチューニング

OracleSQLのパフォーマンスチューニングと聞いてどのような印象を受けるだろうか。割とDBにチャランポランな俺のイメージでは、Oracleを知り尽くした玄人が固有の黒魔術的なパラメータをあれこれいじると不思議と性能が改善するという、中々に脳内お花畑な絵図がよぎる。勿論実際にはそんなことはなくて、怪しいSQLには怪しくなるだけの理屈が存在するのであり、Oracleの知識やツールを駆使してそれらの予防や改善を図るのがSQLのチューニングということになる。

なんとなくはわかっていたことではあるが、Oracleが重くなるというのはアプリケーションから発行されるSQLが悪いことが大半である、という指摘は個人的には刺さるものがあった。アプリケーションはロジックなどフローの世界であるが、SQLはテーブルが単位の集合の世界であり、根本の原理がベツモノである。そのため、ロジックの世界の思想でSQLに接するには齟齬が発生してしまう。大まかに言えば、なぜSQLのパフォーマンス問題が起きるかといえば、RDBMSにとってやさしいSQLを開発者が書いていないからだ、ということになる。

さてどうするかと言うと筆者は解決と予防の2フェーズに分けて考えている。解決はSQL個々に対するもので、定型と非定型に分かれる。定型は、SQLにもコーディングルールを適用することを提唱している。これは一定以上の品質確保や、後々の可読性の確保が目的となる。非定型は、それでもやっぱり問題があるSQLに対して行うもの。SQLチューニングアドバイザや実行計画、オプティマイザにまともなインプット情報が渡っているかなど、Oracleの知識に基づいて試行錯誤を伴いながら実施する。予防については開発プロジェクトの各フェーズでOracleに精通したDBAが適切な関与をしましょうね、的な内容で、まぁうんそうだね、って感じ。

この本は結局のところOracleを使いこなすにはOracleを知る必要がある、と言っている。勿論それには段階があり、一般的な開発者のレベルであればSQLの処理のされ方などぐらいでも良いのだと思う。ただ、より一層深くOracleの力を引き出そうとすれば、相応の理解が必要ですよ、ということを把握するには良い本でした。

パフォーマンス改善と事前対策に役立つ Oracle SQLチューニングSQLチューニング (DB SELECTION)

パフォーマンス改善と事前対策に役立つ Oracle SQLチューニングSQLチューニング (DB SELECTION)