2004年 9月16日 作成 | 「基準編第12章 (INDEX-only と null-keys)」 を読む | >> 目次に もどる |
2007年 6月16日 更新 |
[ 本稿、前回からの続き ] ● 高 パフォーマンス を実現する 「INDEX-only」 の多用は、逆に、パフォーマンス を低下する。
「INDEX-only」 は、RDB の高 パフォーマンス を実現する技法であるが、インデックス の数が増えれば、更新の負荷が高くなって、逆に、パフォーマンス を低下してしまう。 「INDEX-only」 は、RDB の高 パフォーマンス を実現する技法であるが、「魔法の杖」 ではない。「INDEX-only」 を使うなら、以下の点に注意されたい。
(1) 夜間 バッチ でも、インデックス が多ければ、当然、データ の ロード (load) は、おそくなる。
「論理 I/O の計算式」 を記述した理由は--CPU や メモリー が廉価になった現代では、1つの画面に対して、こまかな I/O 計算などしないが--、論理 I/O の数が、いちばん少ない トランザクション は、ADD であることを示すためであった。すなわち、高 パフォーマンス を実現したいなら、ADD を使えば良い、ということである。たとえば、「更新履歴」 を記録する際、最新情報 (最新の データ が収められた テーブル) と履歴情報 (更新前の データ が収められた テーブル) の 2つを用意して、DETELE (あるいは、CHANGE) と ADD の 2つの トランザクション を使うことが多いが、1つの テーブル のなかで、最新情報と履歴情報を収めれば、ADD のみを使えば良いので、更新負荷が軽減される。
「ヌル・キー (null-keys)」 は、「多量の データ のなかから、任意の少量 データ を入手する」 ために役立つ技法である。また、補集合に対して、ヌル・キー を使えば、高 パフォーマンス を実現できることがあるので、考慮されたい。 |
[ 補遺 ] (2007年 6月16日)
本 エッセー では、「INDEX-only」 の注意点を詳細に述べているので、取り立てて、補足する点はないでしょう。 前回も述べましたが、すべての データ が メモリー のなかに収まって、データ 演算の すべてが メモリー のなかで実行できるようになれば、「INDEX-only」 などいらない。いずれ、そういう時代がくるかもしれない。「INDEX-only」 は、テクノロジー が進歩するにつれて、その有用性が弱まって、ついには、消え去る運命の技術です。ただ、現代の テクノロジー では、「INDEX-only」 は、ききめがあるでしょうね。 「INDEX-only」 に関する注意事項として、私の著作のなかで、具体的な プロダクト ごとに--DB2、ORACLE、SQL/Server、PostgreSQL ごとに-- ひとつの テーブル に対する CREATE INDEX の限界数を述べたことがあったのですが--たとえば、DB2 や ORACLE なら 5個、SQL/Server や PostgreSQL なら 3個と--、その 「プロダクトごとの目安」 を、そのまま、パクった書物があるそうです (苦笑)。それらの数値が流用されることを、私は、どうこう思ってはいないのですが、その書物を執筆したひとが、出典を示さないで、あたかも、みずからが験証してきた数値のように記述されるのは、きわめて不快感を覚えます。そういう行為を盗作・剽窃とは言わないまでも、知的産業に従事しているひとが やってはいけない行為でしょうね。出典さえ示せば宜しい。ひとりが験証できる量など高が知れているのだから、そして、われわれは、情報を交換しながら、そして、過去の知識を継承しながら、テクノロジー を いっそう進めるのだから、ほかの人たちの知識を借りることは、なんら、恥でもないでしょうに。逆に、あたかも、ひとりで 技術を作ったように 自惚れるほうが下衆(げす)いでしょう。私が 「INDEX-only」 や 「null-key」 の使いかたを着想したのは、DATACOM/DB の DBA をやった経験がもとになっています。DATACOM/DB という プロダクト 名を感謝して述べることに、私は、なんら、「宣伝」 を入れている訳でもないし、私は、その プロダクト を通して データベース に関する技術を習得できたので、プロダクト 名を隠すつもりもない。 |
<< もどる | HOME | すすむ >> | |
▼ 「論理データベース論考」を読む |