2007年9月4日火曜日

ハードパースとソフトパース

バインド変数は Oracle のツールを利用していると、知らずに利用していたりするが、これを使用しないと無駄なリソースを使い、ひいてはパフォーマンスダウンにもつながってしまう。

RDBMS は SQL により指示を与えられると、どのように値を検索するかまず考える。これがハードパース。
バインド変数を利用しないと where句の条件が少し違うだけで、また考えてしまう。
一度、似たような SQL をどう検索するか、考えた結果を憶えておいて、これを利用するのがソフトパース。

このあたりに詳しい仕組みが説明されている。

HARD PARSEの発生の有無によってリカーシブコールの発生回数に違いが現れています。
...
なお、データの偏りが大きく、ヒストグラム統計情報を取得している場合には、WHERE条件をリテラルで指定した方がよりよい実行計画が選択される可能性が高くなります。

なるほど、なんでも使えばいいというものではない、何事も。
ちなみにリカーシブ(再帰)コールとは、 Oracle などは自分の内部情報も
テーブルにもっているので SQL で検索する。つまり SQL を実行するために、さらに内部で自動的に SQL が発行されている。

MacOS Sequoia で Apache+PHP の再設定

 新しいXcodeが使いたかったので MacOS15(Sequoia) にアップグレードしたところ、やはりApacheでPHPが動かなくなっていた。 結論としては brew, openssl, php, httpd を全て再度インストールしたところ動くようになった。 以下、作業ロ...