2007年9月4日火曜日

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

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

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

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

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

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

量子コンピュータ 量子力学のはじまり

 2017に量子コンピュータ D-Wave 2000Q が報道された。 これに刺激され、量子力学関係の本を再読したり、量子コンピュータの本をいくつか読んだ。 量子力学のはじまり 炉の温度を確認するために炎を見つめると眼がやられる。鍛治の神は職業病として片目が不自由。産業革命以降、...