JPH06214849A - データベースシステム - Google Patents

データベースシステム

Info

Publication number
JPH06214849A
JPH06214849A JP5004948A JP494893A JPH06214849A JP H06214849 A JPH06214849 A JP H06214849A JP 5004948 A JP5004948 A JP 5004948A JP 494893 A JP494893 A JP 494893A JP H06214849 A JPH06214849 A JP H06214849A
Authority
JP
Japan
Prior art keywords
index
data
operation procedure
data operation
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP5004948A
Other languages
English (en)
Inventor
Norihiro Kato
宣弘 加藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP5004948A priority Critical patent/JPH06214849A/ja
Publication of JPH06214849A publication Critical patent/JPH06214849A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

(57)【要約】 【目的】高速なデータ操作を行なうための索引だけを自
動作成し、データベース操作の高速化を図る。 【構成】索引自動作成システム18は、アプリケーショ
ン・プログラム17のデータ操作手続きの内容を抽出
し、その抽出した内容とデータベース151のテーブル
の構成情報とによって各データ操作手続きの実行に際し
て必要になる入出力データブロック数を求める。そし
て、そのブロック数に基づいて、索引作成の可否が索引
作成・削除判定手段183により判断されて、データ操
作の高速化に寄与する場合にのみ索引が自動作成され
る。したがって、無駄な索引がなくなり、常に高速なデ
ータ操作を行なうことが可能になる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明はデータベースシステム
に関し、特に自動索引作成システムを持つリレーショナ
ルデータベースシステムに関する。
【0002】
【従来の技術】一般に、データベースのデータは、一定
の大きさをそれぞれ持つ複数のデータ・ブロックから構
成されている。これらデータ・ブロックは、磁気ディス
クなどの外部記憶装置内に格納されている。
【0003】リレーショナルデータベースにおいて、例
えば、あるテーブルから特定のタプルを検索する場合に
は、検索対象のテーブルの先頭タプルを含むデータ・ブ
ロックを見つけ、ディスクからメモリにそのブロックを
読み出す。もしそのブロックに検索対象のタプルが含ま
れていれば、ディスクからの読み出しは終るが、そのブ
ロックに含まれていなければ、次のブロックを読み出
す。このようなデータ・ブロックの読み出し動作は、検
索対象のタプルを含むブロックを読み出すまで続けられ
る。
【0004】リレーショナルデータベースのテーブル
は、多くのタプルから構成されている。データベースの
データを格納するデータ・ブロックの数は、タプルが多
いほど増加される。データ・ブロックの数が少なけれ
ば、前述のような検索のためのディスクからメモリへの
ブロックの平均読み出し回数は少なくて済む。しかし、
テーブルを構成するタプル数が多くそれらタプルが多く
のブロックに格納されている場合には、ブロックの平均
読み出し回数は多くなる。そこで、従来より、検索対象
のタプルを含むブロックがどれであるかをより少ないブ
ロック読み出し回数で知ることができるような手法が考
えられている。
【0005】その手法の1つが索引である。つまり、テ
ーブルに含まれる各タプルの1つ以上のフィールドの値
を用いてバランス木のようなデータ構造を作り、それを
索引ブロックとして格納する。索引を用いたタプルの検
索では、まずテーブルの先頭の索引ブロックをディスク
から読み出し、検索対象のタプルのフィールドの値をキ
ーとして、索引ブロック内を探索する。もし検索対象の
タプルが格納されているデータ・ブロックの情報が、そ
の索引ブロック内に存在すれば、その情報を用いてデー
タ・ブロックを読み出す。その索引ブロックに存在しな
ければ、索引データ構造に従って探索し、次の索引ブロ
ックを読み出し、同様に検索対象のタプルが格納されて
いるデータ・ブロックの情報が存在するかどうか調べ
る。索引ブロックの読み出しは、検索対象のタプルのデ
ータ・ブロックの情報を見つけるまで行なう。
【0006】一般に、索引ブロック数はデータ・ブロッ
ク数よりも少ない。また、索引ブロックの読み出し順は
バランス木のようなデータ構造に基づいているので、一
般に索引を用いたタプルの検索は、索引を用いない場合
よりも、ブロックの読み出し回数が少なく、高速であ
る。しかし、テーブルを構成するほとんど全てのタプル
を検索するような場合には、ほとんど全てのデータ・ブ
ロックを読み出す必要があるので、索引ブロックの読み
出しが無駄になり、索引を用いない検索の方が高速にな
る。また、タプルの挿入、削除や、索引に使われている
フィールド値の更新を頻繁に行なう場合には、対応する
索引ブロックを頻繁に変更しなければならないので、索
引がある場合にこれらの操作に多くの時間を要すること
になる。
【0007】従来、システムで実行されるアプリケーシ
ョンをそれぞれ高速化するために、データベース管理
者、アプリケーション・プログラマなどが、データベー
スの各テーブルに対して索引を作成していた。しかし、
上記のように索引を作成することによりデータ操作が高
速になる場合もあれば、そうでない場合もあるので、索
引作成に関する知識を必要とした。また従来1つアプリ
ケーション・プログラムを高速にするために、データ操
作の実行トレースを採取できるシステムが存在した。し
かし、一般にデータベースにアクセスするシステムで
は、多数のアプリケーションが起動され、種々雑多なデ
ータ操作が実行されるため、あるアプリケーションの実
行を高速化するために作成した索引が、別のアプリケー
ション・プログラムの実行を遅くするという影響を及ぼ
すことがあった。
【0008】
【発明が解決しようとする課題】従来のデータベースシ
ステムでは、索引を作成することによりデータ操作が高
速になる場合もあれば、逆に遅くなってしまうこともあ
り、索引を作成するか否かの判断には、データベース管
理者等にはアプリケーション・プログラムの内容とデー
タベースの論理的・物理的構造に関する知識が必要され
た。
【0009】また、多数のアプリケーションが起動され
るシステムでは、あるアプリケーションの実行を高速化
するために作成した索引が、別のアプリケーション・プ
ログラムの実行を遅くするという影響を及ぼすことがあ
り、システム全体としての高い性能を達成するように索
引を作成することは困難であった。
【0010】この発明はこのような点に鑑みてなされた
ものであり、アプリケーション・プログラムおよびデー
タベースのテーブル内容に基づいて索引作成の可否を自
動判定できるようにして、常に高速なデータ操作を行な
うことができるデータベースシステムを提供することを
目的とする。
【0011】
【課題を解決するための手段および作用】この発明は、
各種アプリケーションプログラムからのデータ操作手続
き要求に応じてリレーショナル・データベースのデータ
操作を実行するデータベースシステムにおいて、アプリ
ケーション・プログラムのソース・コードに含まれるデ
ータ操作手続きに関する情報を抽出する手段と、この抽
出したデータ操作手続きに関する情報とそのデータ操作
手続きで扱われるテーブルの構成情報とに基づいて、デ
ータ操作手続きの実行のために2次記憶装置との間で入
出力が必要なデータブロック数を、各データ操作手続き
毎に算出する手段と、この算出された各データ操作手続
き毎の入出力データブロック数を統合し、その統合結果
に従って、索引を作成するか否かを前記リレーショナル
・データベースを構成する各テーブル毎に判定する手段
と、この判定結果に従って索引を作成する手段とを具備
することを第1の特徴とする。
【0012】このデータベースシステムにおいては、ア
プリケーション・プログラムのデータ操作手続きの内容
とテーブルの構成情報とによって各データ操作手続きの
実行に際して必要になる入出力データブロック数が計算
により求められ、そのブロック数に基づいて、索引作成
の可否が判断されて、データ操作の高速化に寄与する場
合にのみ索引が自動作成される。したがって、常に高速
なデータ操作を行なうことが可能になる。
【0013】また、この発明は、データベースのデータ
にアクセスするためのデータ操作手続きを含むアプリケ
ーションの実行が可能であり、索引を用いた検索が可能
であるデータベースシステムにおいて、システムを稼動
する前に、アプリケーション・プログラムのソース・コ
ードに含まれるデータ操作手続きの部分から静的な情報
を抽出する静的情報抽出手段と、システム稼動時にそれ
ぞれのアプリケーションのデータ操作手続きの実行頻
度、実行時間などの動的情報を採取する動的情報採取手
段と、上記静的情報抽出手段により注出された情報を基
にそれぞれの表に対する索引を作成すべきどうかを、ま
た上記静的情報抽出手段により注出された情報を基に表
に対する索引を新たに作成するかどうか、あるいは既存
の索引を削除するかどうかを判定する索引作成・削除判
定手段と、この判定結果にしたがって索引の作成、およ
び作成された索引の削除を行なう索引作成・削除手段と
を具備することを第2の特徴とする。
【0014】このデータベースシステムでは、システム
を稼働する前にアプリケーションプログラムのデータ操
作手続きとデータベースの静的な情報から、テーブルの
フィールドに索引を作成するかどうかを判定し、有効な
索引だけを作成する。またシステム稼動時の実行頻度、
実行時間などの動的な情報から、既存の索引の有効性を
検証し、また新たな索引を作成すべきかどうかを判定す
る。以上により、システム稼動時にも適宜既存の索引の
有効性、新しい索引の必要性が判定されるので、システ
ムに保持されるのは有効な索引だけになる。したがっ
て、多数のアプリケーションが起動されるシステムで
も、あるアプリケーションの実行を高速化するために作
成した索引が、別のアプリケーション・プログラムの実
行を遅くするという影響を及ぼすことがなくなり、シス
テム全体としての高い性能を達成できる。
【0015】
【実施例】以下、図面を参照してこの発明の実施例を説
明する。図1には、この発明の一実施例に係わるデータ
ベースシステムを実現するためのコンピュータシステム
の構成が示されている。
【0016】このデータベースシステムは、ホストコン
ピュータ11およびこれに接続された端末12を含むコ
ンピュータシステムによって実現される。ホストコンピ
ュータ11は、CPU13、メインメモリ14、および
磁気ディスク装置15を備えている。CPU13は、こ
のホストコンピュータ11全体の動作を制御するための
ものであり、メインメモリ14に格納されたプログララ
ムの実行によって、データベース処理に係わる種々の演
算、および磁気ディスク装置15の入出力制御を初め、
索引自動作成のための処理等実行する。
【0017】メインメモリ14には、データベース管理
システム16、アプリケーションプログラム17、およ
び索引自動作成システム18がそれぞれ実行対象のプロ
セスとして格納される。
【0018】データベース管理システム16は、SQL
のようなデ―タ操作言語を用いて磁気ディスク装置15
のリレーショナルデータベース151の検索、更新等の
各種のリレーショナルデータベース演算を実行するもの
であり、アプリケーションプログラム17からの要求に
従って動作される。また、データベース管理システム1
6は、ビュー機能をサポートする。このビュー機能は、
端末12を操作するデータベース管理者に対して様々な
視点のテーブルの視像を画面表示する機能である。バッ
ファ161に読み出されたリレーショナルデータベース
151のテーブルはその論理構造が異なるビューに変換
され、それが端末12に画面表示される。データベース
管理者やアプリケーションプログラマは、画面表示され
たビューを参照しながらデータベースの検索等を行なう
ことができる。
【0019】アプリケーションプログラム17は、デー
タベース管理システム16を利用した各種データベース
操作を実行する。このアプリケーションプログラム17
は、実行時に磁気ディスク装置15のファイル152か
らメインメモリ14にロードされる。
【0020】索引自動作成システム18は、アプリケー
ション・プログラム17およびデータベース151のテ
ーブル内容に基づいて索引作成の可否を自動判定し、索
引により高速なデータ操作を行なうことができる時に
は、索引を自動作成する。この索引自動作成システム1
8は、静的情報抽出手段181、動的情報採取手段18
2、索引作成・削除判定手段183、索引作成手段18
4、および索引削除手段185から構成されている。
【0021】静的情報抽出手段181は、システムを稼
動する前、具体的には磁気ディスク装置15のファイル
152からメインメモリ14にアプリケーション・プロ
グラム17をロードする時に、そのアプリケーションプ
ログラムのデータ操作手続きの部分からデータ操作の種
類、アクセスするテーブル、集約関数と集約関数を適用
するフィールド、更新するフィールド、検索フィールド
と検索条件を抽出する。
【0022】動的情報採取手段182は、システム稼動
時に、その時に実行されているアプリケーション・プロ
グラム17のデータ操作手続きの実行頻度、実行時間を
採取する。
【0023】索引作成・削除判定手段183は、静的情
報抽出手段181により抽出された情報を基にそれぞれ
のテーブルに対する索引の候補が作成条件を満たすかど
うかを判定する。また索引作成・削除判定手段183
は、動的情報採取手段182により採取された情報を基
に、それぞれのテーブルに対する索引を見直し、索引の
作成、削除を判定する。索引作成手段184、および索
引削除手段185は、索引作成・削除判定手段183の
指示を受けて、それぞれ索引を作成、削除する。図2に
テーブルの一例を示す。
【0024】ここでは、データベース151に、従業員
テーブル(EMP)T1、所属テーブル(DEPT)T
2、物品発注・納入テーブル(ORDER)T3が定義
されている場合を考える。
【0025】従業員テーブル(EMP)T1は従業員に
関する情報を保持するテーブルであり、所属テーブル
(DEPT)T2は従業員の所属部所に関する情報を保
持するテーブル、物品発注・納入テーブル(ORDE
R)T3は従業員が発注した物品の納入状況に関する情
報を保持するテーブルである。
【0026】いま、従業員テーブル(EMP)T1には
1000レコード、所属テーブル(DEPT)T2には10レ
コード、物品発注・納入テーブル(ORDER)T3に
は10000 レコードがそれぞれ含まれているとする。各フ
ィールド名の右横に示した数は、フィールドのバイト数
を表す。
【0027】例えば、従業員テーブル(EMP)T1に
おいては、従業員番号(EMP NO)フィールドは4
バイト、従業氏名(EMP NAME)フィールドは2
0バイト、従業員に関するその他の情報(EMP EL
SE)のためのフィールドは100バイト、従業員番号
(DEPT NO)は4バイトから構成されている。
【0028】従って、従業員テーブル(EMP)T1の
レコードの大きさは128バイトとなる。同様に、所属
テーブル(DEPT)T2のレコードの大きさは124
バイト、物品発注・納入テーブル(ORDER)T3の
レコードの大きさは132バイトとなる。図3にデータ
・ブロックの例を示す。
【0029】1つのデータ・ブロックのサイズは204
8バイトである。ブロックの先頭の100バイトはブロ
ック・ヘッダとして確保され、最後の200バイトは拡
張領域として確保されている。残りの1748バイトが
データを格納するために用いられる。このデータ格納領
域においては、各レコード毎に10バイトのレコード・
ヘッダが確保されている。従って、1レコード・サイズ
がLバイトの場合には、1データ・ブロックに、174
8/(L+10)の数のレコードが格納できることにな
る。ゆえに、従業員テーブル(EMP)T1、所属テー
ブル(DEPT)T2、物品発注・納入テーブル(OR
DER)T3のデータ・ブロックにはそれぞれ最大1
2、13、12レコードが格納できる。
【0030】いま従業員テーブル(EMP)T1、所属
テーブル(DEPT)T2、物品発注・納入テーブル
(ORDER)T3にはそれぞれ1000、10、10
000レコードが含まれているので、それぞれ84、
1、834ブロックの領域を必要とする。図4に各テー
ブルに対するレコードあたりのバイト数、ブロックあた
りのレコード数、ブロック数を示す。図5に索引ブロッ
クの例を示す。
【0031】索引ブロックにおいては、データ・ブロッ
クと同様に、1748バイトが索引レコードを格納する
ために用いられる。索引を付けるフィールドの値とそれ
に対応するレコードの格納位置を示すポインタ(20バ
イト)が、1つの索引レコードを形成する。例えば従業
員テーブル(EMP)T1のフィールド(EMP_N
O)に索引を付けるとすると、1つの索引データに4+
20=24バイト必要となり、1索引ブロックに72索
引レコードを格納できる。テーブルT1には1000レ
コードがあるので、すべてのレコードに対する索引を作
るためには、14個の索引ブロックが必要となる。ま
た、索引をバランス木で構成する場合には、バランス木
の構成を格納するための索引構造ブロックが必要とな
る。索引構造ブロックには、索引ブロック数の約1割が
必要であるので、上記の場合には1個の索引構造ブロッ
クが必要となり、合わせて15ブロックを索引のために
確保する必要がある。
【0032】図6に、各テーブルの主なフィールドに対
する索引ブロック数、索引構造ブロック数を示す。ここ
で、所属テーブル(DEPT)T2のフィールドDEP
T_NOに対して索引構造ブロックがないのは、索引構
造が索引ブロックに含まれているからである。
【0033】図7には、図2のテーブルT1〜T3に対
して実行されるアプリケーション・プログラム17の一
例が示されている。図7(a)はある従業員が物品を発
注するときのプログラム、(b)は納入担当者が物品を
納入するときのプログラム、(c)はある部所全体の注
文、納入の状況を表示するためのプログラムである。プ
ログラムはデータ操作手続きの部分を中心に示す。プロ
グラムにおいて英小文字はホスト言語とデータ操作言語
とで共用される変数である。または[]は配列を表す。以
下、それぞれのプログラムについて簡単に説明する。
【0034】発注プログラムは、物品発注・納入テーブ
ル(ORDER)T3の更新等を行なうためのものであ
り、この発注プログラムでは、まず入力された従業員番
号と発注品名をそれぞemp noとorder nameにセットす
る。そして、物品発注・納入テーブル(ORDER)T
3からフィールド(ORDER NO)の最大値を検索
し、それを1だけインクリメントしてorder noにセッ
トする。そして、テーブル(EMP)T1からフィール
ドEMP NOの値がemp noに等しいレコードを検索
し、フィールド(DEPT NO)の値をdept noにセ
ットする。最後に新しいレコードをテーブル(ORDE
R)T3に入力する。
【0035】納入プログラムは、テーブル(ORDE
R)T3のフィールド(FLAG)を更新するためのも
のであり、この納入プログラムでは、入力された発注品
番号(納入品番号)をorde noにセットし、テーブル
(ORDER)T3からフィールド(ORDER N
O)の値がdept noに等しいレコードを検索し、そのフ
ィールド(FLAG)の値を1に更新する。
【0036】状況表示プログラムは、発注品名や納入状
況等を画面表示するためのものであり、この状況表示プ
ログラムでは、まず入力された部所番号をdept noにセ
ットし、テーブル(DEPT)T2からフィールドDE
PT NOの値がdept noに等しいレコードを検索し、
フィールドDEPT NAMEの値をdept nameにセッ
トする。次に、テーブル(ORDER)T3からフィー
ルドDEPT NOの値がdept noに等しいレコードを
検索し、フィールドORDER NAME、FLAGの
値を配列order name[]、flag[]にそれぞれセットす
る。ここで配列を用いるのは、この問合せでは複数のレ
コードを返される可能性があるからである。最後に、de
pt name、order name[]、flag[]を表示する。以上で
説明したテーブルとアプリケーション・プログラムに対
して本発明を適用した場合について以下説明する。
【0037】静的情報抽出手段181は、図7に示すア
プリケーション・プログラム17から図8に示す情報を
抽出する。図8には、それぞれのデータ操作手続きに対
して、その識別子、手続きが含まれるアプリケーション
・プログラム、その命令の種類、アクセスするテーブル
名、値を更新するフィールド名、利用する集約関数、集
約関数を適用するフィールド名、検索に使われるフィー
ルド名、検索条件が含まれる。図8において、横線が引
かれている箇所は対応する項目がないことを表す。更新
フィールド名の*はすべてのフィールドを更新すること
を表す。検索条件の=valは、ある値に等しい値を持つ
フィールドを含むレコードだけを選択することを表す。
【0038】システムを稼動する前に索引作成・削除判
定手段183は、図8に示す情報から各データ操作手続
きに対するレコードの選択率を次のように計算する。こ
こで選択率とは、データ操作手続きにより選択したレコ
ード数の全レコード数に占める割合である。
【0039】図9に各データ操作手続きに対する選択率
を示す。ただし、レコードを選択しないデータ操作手続
きに対しては横線を引いておく。レコードの選択率は次
のように求める。例えば、テーブル(EMP)T1のフ
ィールドDEPT NOに対するデータ操作手続き2の
選択率は次のようにして求めることができる。1000
人の従業員の中から特定の従業員1人を選択するから、
選択率は1/1000=0.001となる。
【0040】さらに、索引作成・削除判定手段183
は、図4、図6、図8、図9に示す情報から、索引を作
成しない場合のブロック読み出し数と索引を作成する場
合のブロック読み出し回数を計算する。例えば、データ
操作手続き1に対して、索引を作成しない場合、および
索引を作成する場合それぞれのブロック読み出し回数を
求める。索引を作成しない場合にはテーブル(ORDE
R)T3のすべてのデータ・ブッロクを読まなければな
らないので、834ブロックとなる。一方、索引を作成
する場合には、索引構成ブロックを14ブロック、索引
ブロックを1ブロック、データ・ブロックを1ブロッ
ク、合計16ブロックだけ読めばよい。したがって、テ
ーブル(ORDER)T3のフィールドEMP NOに
対する索引を作成すると仮判定する。
【0041】また、データ操作手続き6に対して同様に
計算してみると、索引を作成しない場合には、すべての
データ・ブロックを読まなければならないので、834
ブロックとなる。一方、索引を作成する場合には次のよ
うに計算できる。
【0042】テーブル(ORDER)T3は10000
レコードを含んでおり、データ操作手続き6の選択率は
0.1なので、1000レコードを選択することにな
る。索引ブロックにおいて、索引レコードはDEPT
NOの値の順にソートされているので、あるDEPT
NOの値の索引レコードは14ブロックに保持されてい
る。データ・ブロックにおいて、レコードはランダムに
配置されているので、あるDEPT NOの値に対する
100レコードは583ブロックに配置されている。ゆ
えに、索引を作成する場合には、索引構造ブロックを1
4ブロック、索引ブロックを14ブロック、データ・ブ
ロックを583ブロック、合計611ブロック読まなけ
ればならない。したがって、テーブル(ORDER)T
3のフィールドDEPT NOに対する索引を作成する
と仮判定する。
【0043】図10にそれぞれのデータ操作手続きに対
して、索引を作成しない場合、作成する場合の読み出し
ブロック数、索引を作成するか否かを示す。データ操作
手続き3は、テーブル(ORDER)T3のすべてのフ
ィールドを更新するので、それらのフィールドに対して
索引を作成しないと仮判定する。データ操作手続き3
(INSERT命令)に対しては、入出力(読み出しと
書き込み)ブロック数を示す。索引がない場合には空き
領域のあるブロックを読み書きするので、入出力ブロッ
ク数は2となる。索引がある場合には、それに加えて索
引ブロック、索引構造ブロックの修正のために入出力ブ
ロック数が多くなる。テーブル(ORDER)T3には
フィールドORDER NOとDEPT NOに索引を
作成する可能性があるので、最大索引構造ブロックを1
4ブロック、索引ブロックを2ブロックを読み出し、書
き込むことになる。したがって、合計2+(14+2)
*2=34となる。
【0044】索引作成・削除判定手段183は、図8、
図10からテーブルのフィールドに索引を作成するかど
うかを判定する。テーブル(ORDER)T3のフィー
ルドORDER NO、DEPT NOに対しては、索
引を作成しないという仮判定と索引を作成するという仮
判定がある。各データ操作手続きが同じ頻度で実行され
るならば、図10よりフィールドORDER NO、D
EPT NOのそれぞれにおいて、索引を作成する場合
は索引を作成しない場合よりも入出力ブロック数が少な
い。ゆえに、それぞれ索引を作成すると判定する。テー
ブルEMPのフィールドEMP NOには索引を作成す
ると判定し、テーブルDEPTのフィールドDEPT
NOには索引を作成しないと判定する。索引作成手段1
84は、これらの判定に基づいて索引を作成する。な
お、静的情報による索引の作成判定において、入出力ブ
ロック数だけでなく、各種オーバヘッドの見積りを含め
てもよい。
【0045】動的情報採取手段182は、システム稼動
時に、実行されるアプリケーションプログラムによる実
際のデータ操作手続きの実行頻度、平均実行時間を採取
し、記憶する。いま図11に示すような実行頻度と平均
処理時間が得られたとする。
【0046】索引作成・削除判定手段183は、各デー
タ操作手続きに対して、図11に示す実行頻度を図10
の入出力ブロック数に乗じる。その結果を図12に示
す。図12に示す値は各データ操作手続きが1秒あたり
に入出力するブロック数を表す。この値を用いて、上記
と同じように索引を作成するか否かの判定を行なう。
【0047】テーブル(ORDER)T3のフィールド
ORDER NOに索引を作成するか否かで影響を受け
るのは、データ操作手続き1、3、4、である。索引を
作成しない場合には、それらの入出力ブロック数の和が
11864になるが、作成する場合には577となる。
したがって、テーブル(ORDER)T3のフィールド
ORDER NOには索引を作成すると判定する。テー
ブル(ORDER)T3のフィールドDEPT NOに
索引を作成するか否かで影響を受けるのは、データ操作
手続き3と6である。索引を作成しない場合には、それ
らの入出力ブロック数の和が1022になるが、作成す
る場合には1083となる。したがって、テーブル(O
RDER)T3のフィールドDEPT NOには索引を
作成しないと判定する。この判定は、静的情報から求め
た上記の判定とは異なるので、索引削除手段185に対
して既に作成されている索引の削除を指示する。
【0048】索引を見直した後、動的情報採取手段18
2は、データ操作手続きの実行頻度、平均実行時間を採
取し、記憶する。索引作成・削除判定手段183は、実
行頻度と平均実行時間との積のデータ操作手続きに対す
る総和を、索引の見直しの前後で比較する。もし見直し
後の値の方が大きければ、索引を見直し以前の状態に戻
す。
【0049】なお、各データ操作手続きに対する入出力
ブロック数は、静的情報から得られた値ではなく、動的
情報から得られた値を採用してもよい。その場合には、
動的情報採取手段182は、システム稼動時にデータ操
作手続きの平均入出力ブロック数も採取する。また、索
引の見直に入出力ブロック数ではなく、平均実行時間を
用いることもできる。そのためには、索引がある場合と
ない場合についてデータ操作手続きの実行時間を採取す
る必要がある。次に、図13のフローチャートを参照し
て、索引作成の手順を説明する。
【0050】まず、静的情報抽出手段181は、実行対
象のアプリケーションプログラムのデータ操作手続きの
部分から静的情報を抽出する(ステップS11)。次い
で、索引作成・削除判定手段183は、静的情報とデー
タ操作手続きの選択率に基づき、各データ操作手続きの
入出力ブロック数を計算する(ステップS12)。そし
て、索引作成・削除判定手段183は、各データ操作手
続きの入出力ブロック数に基づき、索引を作成するか否
かを仮判定する(ステップS13)。
【0051】この後、索引作成・削除判定手段183
は、索引作成の仮判定結果を統合し索引を作成するかど
うかを判定する(ステップS14)。そして、索引作成
手段184は、判定結果に従って、必要なテーブルの索
引を作成する。以上、ステップS11〜S15の処理は
アプリケーションプログラムの実行前に行なわれる処理
である。この後、アプリケーションプログラムの実行時
には、次のステップS16〜S18の処理が繰り返し実
行される。
【0052】動的情報採取手段182は、各データ操作
手続きの実行頻度、実行時間を測定する(ステップS1
6)。次いで、索引作成・削除判定手段183は、各デ
ータ操作手続きの実行頻度、実行時間からなる動的情報
に基づき、索引の見直しを行なう(ステップS17)。
そして、索引作成手段184および索引削除手段185
は、それぞれ見直し結果に基づいて、索引の作成・削除
を行なう(ステップS18)。
【0053】以上のように、この実施例においては、ア
プリケーション・プログラム17のデータ操作手続きの
内容とテーブルの構成情報とによって各データ操作手続
きの実行に際して必要になる入出力データブロック数が
計算により求められ、そのブロック数に基づいて、索引
作成の可否が判断されて、データ操作の高速化に寄与す
る場合にのみ索引が自動作成される。したがって、常に
高速なデータ操作を行なうことが可能になる。
【0054】また、システム稼動時にも適宜既存の索引
の有効性、新しい索引の必要性が判定されるので、シス
テムに保持されるのは有効な索引だけになる。したがっ
て、多数のアプリケーションが起動されるシステムで
も、あるアプリケーションの実行を高速化するために作
成した索引が、別のアプリケーション・プログラムの実
行を遅くするという影響を及ぼすことがなくなり、シス
テム全体としての高い性能を達成できる。尚、この発明
は、ここに示した実施例に限定されるものではなく、そ
の請求範囲を逸脱しない範囲で適宜変更可能である。
【0055】
【発明の効果】以上のようにこの発明によれば、データ
ベース管理者の手を煩わせることなく、テーブルに有効
な索引を作成できる。しかも、アプリケーション・プロ
グラム全体を見通して索引作成の可否を判定するので、
システム全体の性能向上を見込める。また、システム稼
動時にも適宜既存の索引の有効性、新しい索引の必要性
を判定するので、システムに保持されるのは有効な索引
だけに淘汰されていく。
【図面の簡単な説明】
【図1】この発明の一実施例に係るデータベースシステ
ムの構成を示すブロック図。
【図2】同実施例のデータベースシステムで扱われるデ
ータベースのテーブルの一例を示す図。
【図3】同実施例のデータベースシステムによって入出
力されるデータ・ブロックの一例を示す図。
【図4】図3に示した各テーブルに対するレコードあた
りのバイト数、レコード数、ブロックあたりのレコード
数、ブロック数を示す図。
【図5】同実施例のデータベースシステムによって入出
力される索引ブロックの一例を示す図。
【図6】図3に示した各テーブルの主なフィールドに対
する索引ブロック数、索引構造ブロック数を示す図。
【図7】同実施例のデータベースシステムで実行される
アプリケーション・プログラムの一例を示す図。
【図8】図7のアプリケーション・プログラムのデータ
操作手続きから得られる静的情報の一例を示す図。
【図9】図7のアプリケーション・プログラムの各デー
タ操作手続きによるレコード選択率を示す図。
【図10】図7のアプリケーション・プログラムの各デ
ータ操作手続きに対する入出力ブロック数と仮判定結果
を示す図。
【図11】同実施例のデータベースシステムで採取され
る動的情報の例を示す図。
【図12】同実施例のデータベースシステムで採取され
る動的情報を考慮した場合の各データ操作手続きに対す
る入出力ブロック数を示す図。
【図13】同実施例のデータベースシステムにおける索
引自動作成処理を説明するフローチャート。
【符号の説明】
11…ホストコンピュータ、12…端末、13…CP
U、14…メインメモリ、15…磁気ディスク装置、1
6…データベース管理システム、17…アプリケーショ
ンプログラム、18…索引自動作成システム、181…
静的情報抽出手段、182…動的情報採取手段、183
…索引作成・削除判定手段、184…索引作成手段、1
85…索引削除手段。

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 各種アプリケーションプログラムからの
    データ操作手続き要求に応じてリレーショナル・データ
    ベースのデータ操作を実行するデータベースシステムに
    おいて、 アプリケーション・プログラムのソース・コードに含ま
    れるデータ操作手続きに関する情報を抽出する手段と、 この抽出したデータ操作手続きに関する情報とそのデー
    タ操作手続きで扱われるテーブルの構成情報とに基づい
    て、データ操作手続きの実行のために2次記憶装置との
    間で入出力が必要なデータブロック数を、各データ操作
    手続き毎に算出する手段と、 この算出された各データ操作手続き毎の入出力データブ
    ロック数を統合し、その統合結果に従って、索引を作成
    するか否かを前記リレーショナル・データベースを構成
    する各テーブル毎に判定する手段と、 この判定結果に従って索引を作成する手段とを具備する
    ことを特徴とするデータベースシステム。
  2. 【請求項2】 データベースのデータにアクセスするた
    めのデータ操作手続きを含むアプリケーションの実行が
    可能であり、索引を用いた検索が可能であるデータベー
    スシステムにおいて、 システムを稼動する前に、アプリケーション・プログラ
    ムのソース・コードに含まれるデータ操作手続きの部分
    から静的な情報を抽出する静的情報抽出手段と、 システム稼動時にそれぞれのアプリケーションのデータ
    操作手続きの実行頻度、実行時間などの動的情報を採取
    する動的情報採取手段と、 上記静的情報抽出手段により注出された情報を基にそれ
    ぞれの表に対する索引を作成すべきどうかを、また上記
    静的情報抽出手段により注出された情報を基に表に対す
    る索引を新たに作成するかどうか、あるいは既存の索引
    を削除するかどうかを判定する索引作成・削除判定手段
    と、 この判定結果にしたがって索引の作成、および作成され
    た索引の削除を行なう索引作成・削除手段とを具備する
    ことを特徴とするデータベースシステム。
JP5004948A 1993-01-14 1993-01-14 データベースシステム Pending JPH06214849A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP5004948A JPH06214849A (ja) 1993-01-14 1993-01-14 データベースシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5004948A JPH06214849A (ja) 1993-01-14 1993-01-14 データベースシステム

Publications (1)

Publication Number Publication Date
JPH06214849A true JPH06214849A (ja) 1994-08-05

Family

ID=11597799

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5004948A Pending JPH06214849A (ja) 1993-01-14 1993-01-14 データベースシステム

Country Status (1)

Country Link
JP (1) JPH06214849A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8641714B2 (en) 2008-02-01 2014-02-04 Stryker Trauma Sa Clamping pin

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8641714B2 (en) 2008-02-01 2014-02-04 Stryker Trauma Sa Clamping pin

Similar Documents

Publication Publication Date Title
US4914569A (en) Method for concurrent record access, insertion, deletion and alteration using an index tree
JPH0765035A (ja) 構造化文書検索装置
JP2001075969A (ja) 画像管理検索装置、画像管理検索方法及び記憶媒体
JPH10260876A (ja) データベースのデータ構造及びデータベースのデータ処理方法
WO2005043409A1 (ja) 表形式データの結合方法、結合装置およびプログラム
JP2001229060A (ja) ディレクトリ検索システム及び方法、ディレクトリ検索プログラムを記録したコンピュータ読取可能な記録媒体
JPH06214849A (ja) データベースシステム
JPH09305622A (ja) 文書検索機能を有するデータベース管理方法およびシステム
CN114385657A (zh) 数据存储方法、装置及存储介质
CN111581440B (zh) 硬件加速b+树操作装置及其方法
CN112000666A (zh) 一种面向列的数据库管理系统
JPH08255170A (ja) ソート付き検索処理装置
JPS59146339A (ja) 情報検索方式
JP3245873B2 (ja) ファイル処理装置
JPS62131349A (ja) デ−タベ−ス処理方式
JP6627809B2 (ja) データベース処理装置、システム、方法およびプログラム
JPH1091644A (ja) データベース問い合わせ処理方法及び装置
JPH1185585A (ja) 完全メモリ常駐型インデックス方法および装置
CN116401245A (zh) 一种数据索引构建方法及系统
JPH01282635A (ja) 索引保守方式
JPH0785079A (ja) 情報ファイルの管理装置
JP2785966B2 (ja) 外部キー動的解決処理方法
JPS59752A (ja) デ−タベ−ス検索方式
JPS63150724A (ja) デ−タアクセス処理方式
JPS633351A (ja) バツフア検索制御方式