(57)【特許請求の範囲】
【請求項１】
ユーザからの問合せ要求を受付け解析し処理を実行し、前記問合せ要求の解析結果に基づくデータ操作を実行し、データを記憶装置に格納するデータベースシステムにおけるデータベースの処理方法において、
前記データベースシステムは、
データベースへの前記問合せ要求が、データ挿入であった場合に、データを格納する際に、前記記憶装置の記憶領域より所定量の大きさの領域を切り出し、切出した領域へデータを格納し、切り出してきた領域内にまだ空きがある場合は、それ以降の要求されるデータ挿入で、要求されたデータを該切り出してきた領域内に格納し、該切り出してきた領域内に空きがなくなった場合に所定量の大きさの領域を切り出して、切り出した領域へデータを格納する処理を実行する第１の処理と、
前記切出した領域群内を順番に参照し、データ削除により発生した空き領域より、挿入要求されたデータを格納可能な場所を探し、探した場所へデータを格納する第２の処理を有し、
表定義実行時に、データ格納処理を前記第１の処理から前記第２の処理へ切り替える契機が予め定義され、
前記データ挿入要求を受付け、データ挿入実行時に、
データ格納処理を第１の処理で実行している場合で、切り出してきた領域内にデータを格納するための空きがなくなった場合に、前記契機が発生していないかチェックし、
前記契機が発生していない場合、所定量の大きさの領域を切り出して、切り出した領域へデータを格納する処理を実行し、
前記契機が発生していた場合、データ格納処理を前記第２の処理に切り替えて、データを格納する処理を実行し、
データ格納処理を第２の処理で実行している場合、
前記切出した領域群内を順番に参照し、データ削除により発生した空き領域より、挿入要求されたデータ格納可能な場所を探し、格納場所が無かった時に、
データ格納処理を前記第１の処理に切り替えて、データを格納する処理を実行することを特徴とするデータベースの処理方法。
【請求項２】
前記切出し済み領域群からのデータ削除により発生した空き領域へデータを格納する処理
において、
切出し済み領域群から格納可能な領域を探し出し、データ格納を実行する際に、データを
格納した領域を記憶し、
次のデータ挿入要求実行時に、切出し済み領域群から格納可能な領域を探す際に、切り出し済み領域群の中より前記記憶したデータを格納した領域より、格納可能な領域を探し始めることを特徴とする請求項１に記載のデータベースの処理方法。
【請求項３】
データの削除により発生した空き領域より、格納可能な領域を探す処理は、
前回のデータ挿入要求実行時に、記憶していたデータを格納した領域よりサーチを開始して確保済み領域の最後の領域まで参照して空領域が無かった場合と、前回のデータ挿入要求実行時に、記憶していたデータを格納した領域よりサーチを開始して確保済みの領域の最後の領域まで参照し、再度確保済みの領域の先頭から前回サーチを開始した領域まで参照して空領域が無かった場合とのいずれかとすることを特徴とする請求項１または２に記載のデータベースの処理方法。
【請求項４】
記憶装置より格納用の領域を切出す処理からデータの削除により発生した空き領域をサ
ーチする処理へ切替える前記契機は、前記記憶装置より切出した領域群のサイズが所定の量に達した場合であることを特徴とする請求項１から３のいずれかに記載のデータベースの処理方法。
【請求項５】
ユーザからの問合せ要求を受付け解析し処理を実行し、前記問合せ要求の解析結果に基づくデータ操作を実行し、データを記憶装置に格納するデータベースシステムにおけるページ確保処理装置は、
データベースへの前記問合せ要求が、データ挿入であった場合に、データを格納する際に、前記記憶装置の記憶領域より所定量の大きさの領域を切り出し、切出した領域へデータを格納し、切り出してきた領域内にまだ空きがある場合は、それ以降の要求されるデータ挿入で、要求されたデータを該切り出してきた領域内に格納し、該切り出してきた領域内に空きがなくなった場合に所定量の大きさの領域を切り出して、切り出した領域へデータを格納する処理を実行する第１の処理手段と、
前記切出した領域群内を順番に参照し、データ削除により発生した空き領域より、挿入要求されたデータを格納可能な場所を探し、探した場所へデータを格納する第２の処理手段を有し、
表定義実行時に、データ格納処理を前記第１の処理から前記第２の処理へ切り替える契機を指定する手段と、
前記データ挿入要求を受付け、データ挿入実行時に、
データ格納処理を第１の処理手段で実行している場合で、切り出してきた領域内にデータを格納するための空きがなくなった場合に、前記指定された契機が発生していないかチェックし、
前記契機が発生していない場合、所定量の大きさの領域を切り出して、切り出した領域へデータを格納する処理を実行する手段と、
前記契機が発生していた場合、データ格納処理を前記第２の処理に切り替えて、データを格納する処理を実行する手段と、
データ格納処理を第２の処理手段で実行している場合、
前記切出した領域群内を順番に参照し、データ削除により発生した空き領域より、挿入要求されたデータ格納可能な場所を探し、格納場所が無かった時に、
データ格納処理を前記第１の処理に切り替えて、データを格納する処理を実行する手段とを有することを特徴とするデータベースシステムにおけるページ確保処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、リレーショナルデータベース管理システム(RDBMS)の処理方法に関し、特に、データベースの空き領域不足時におけるページ確保方法に関する。
【０００２】
【従来の技術】
ＤＢ管理システムにおいて、表へデータを挿入する際に、記憶装置より格納用の領域を切出し、データを格納する。切出した領域に複数のデータが格納され、切出した領域の空きが無くなると、記憶装置より新たな領域を切出し、さらにデータを格納する。データの削除が実行されると、切出した領域上の該当データが削除され、削除された部分は空き領域となる。一般に、データの挿入、更新または削除を繰返すと格納効率が低下し、それに伴いアクセス性能が劣化する。そのため、適当な時期に記憶領域の再編成を実行し、空領域を回収しデータを詰め直さなければならない。従来の再編成では、再編成中の表へのアクセスが禁止されており、夜間や休日等にＤＢを停止して再編成を行う運用がなされてきた。
【０００３】
削除により空きとなった領域を優先的に使うことにより、格納効率の低下を抑える方法もある。例えば、「ORACLE8 DBAハンドブック(ISBN4-88135-613-5)  p.130,131」に記載された、PCTUSEDにより制御する方法である。この方法では、削除により空きとなった領域のサイズがPCTUSEDに指定された値以上になった領域を、次回の挿入処理の格納領域として使用する。また、「データベースシステムとデータモデル(ISBN4-274-07515)p.30-32」に記載のように、各領域にその領域の使用率を格納し、領域確保時に各領域の使用率を参照して格納可能な領域をサーチする方法もある。
PCTUSEDにより制御する方法では、削除処理の際に領域管理のための余分な処理(PCTUSEDに指定された値以上になったかのチェックや該当領域を次回の挿入処理の格納領域として使用させるための制御)を実行しなければならず、削除処理に余分な負担がかかってしまう。また、使用率を格納する方法では、挿入処理時にデータを挿入できる領域を選び出すために、各領域の使用率を参照していかなければならない。そのためこれらの方法では、格納効率が改善できる代わりに挿入処理や削除処理の処理性能は劣化する。
【０００４】
表へのアクセスを禁止せずに再編成を実施する、オン中再編性機能もある。この処理方法は、再編成対象の領域を再編成しながら別の領域へデータをコピーし、コピー完了時にコピー元とコピー先を切替えることにより実現されるが、コピー作成のために再編成対象領域と同等サイズの一時領域が必要となる。
【０００５】
【発明が解決しようとする課題】
世界規模でのWEBの急速な広まりに伴い、２４時間−３６５日間のＤＢサービス提供が求められており、サービスを停止せずに再編成を行なうことや再編成無しで格納効率の劣化やアクセス性能の劣化を防止することの要望が高まっている。
【０００６】
従来技術では、格納効率を改善するために挿入処理や削除処理の処理性能が劣化してしまい、オンライン再編成の実行には、一時領域が必要となる。
【０００７】
本発明は、追加の領域無しで、挿入処理や削除処理の処理性能を劣化させずに、格納効率の劣化を防止し、再編成を無くし、又は再編成時期を遅らせる手段を提供することを目的とする。
【０００８】
【課題を解決するための手段】
上記目的を達成するために、本発明では、ユーザからの問合せ要求を受付け解析し処理を実行し、データを記憶装置に格納するデータベースシステムにおいて、データを格納する際に、記憶装置の記憶領域より切出した新規領域へデータを格納する第１の処理、及び切出し済み領域群からのデータ削除により発生した空き領域へデータを格納する第２の処理のいずれかに、データ挿入実行時に切替える契機を指定し、データ挿入の開始時に、第１の処理によってデータを格納し、指定された契機発生時にデータ格納処理を切替えて、第２の処理によってデータを格納することによってデータベースのページを確保する。
【０００９】
【発明の実施の形態】
以下、本発明の実施例を図面に基づいて詳細に説明する。
【００１０】
図１は、本発明を適用して、格納データ量が変らないようにデータの挿入と削除の繰返して実行する例を示す。実行例の詳細は後述する。
図２は、本発明を適用した全体構成を示した図である。
【００１１】
各情報処理装置２３０でＤＢアクセスアプリケーション(ａ〜ｃ)２３１が稼動し、情報処理装置２００でＤＢＭＳ２０３が稼動しており、これら情報処理装置２００，２３０はネットワーク２６０に接続され相互に通信を行うことができる。
【００１２】
ＤＢアクセスアプリケーション２３１はネットワーク２６０を介して情報処理装置２００のＤＢＭＳ２０３に問合せ要求を送る。ＤＢＭＳ２０３は問合せ要求を受付けると情報処理装置２００に接続されたディスク装置２１０に格納しているＤＢデータ２１１をアクセスすることにより問合せ要求に対応した処理を実行する。
【００１３】
図３に情報処理装置２００、２３０の構成例を示す。情報処理装置２００はＣＰＵ３１３、メモリ３１４、Ｉ／Ｏ制御装置３１２及び通信制御装置３１１により構成される。メモリ３１４に格納されたＤＢＭＳ２０３のプログラムをＣＰＵ３１３が実行することによりＤＢＭＳの処理が行われ、Ｉ／Ｏ制御装置３１２によりディスク装置２１０からのデータの読み出しや書込みが行なわれ、通信制御装置３１１によりネットワーク２６０で接続された他の情報処理装置との間でデータの送受信を行う。
【００１４】
情報処理装置２３０はメモリ３０２に格納されているＤＢアクセスアプリケーション２３１を実行する。ＤＢアクセスアプリケーション２３１がＤＢＭＳ２０３に対して問合せを実行すると、情報処理装置２３０の通信制御装置３０３より情報処理装置２００の通信制御装置３１１に要求が送信され、ＤＢＭＳ２０３に問合せが送られる。ＤＢＭＳは要求に応じた処理を実行し、ＤＢデータ２１１へのアクセスが必要な場合、Ｉ／Ｏ制御装置３１２によってディスク装置２１０に格納されたＤＢデータ２１１へのアクセスが行なわれる。処理結果は、通信制御部３１１より情報処理装置２３０の通信制御部３０３に転送され、要求元ＤＢアクセスアプリケーション２３１に返される。
【００１５】
図４はＤＢＭＳの構成図である。ＤＢＭＳ２０３は処理要求受付け４０６により処理要求(ａ〜ｃ)４１０を受付けると、要求の解析を行い、表定義４０１、挿入４０２、削除４０３、契機定義４０４及び一括ブロック内再編成４０５の各操作を行う。これら操作を行う際に参照または更新する情報や表常駐情報４３１をメモリ上に保持する。
【００１６】
ＤＢデータ２１１にはＤＢ情報４２２や表データ４２３が格納される。ＤＢ情報４２２として表情報４２５等が格納される。
【００１７】
表情報４２５には、表定義時に情報が追加され、表名や構成列情報等が設定される。表情報には契機情報が含まれており、表定義時または契機定義時に指定された契機情報が格納される。
【００１８】
表データ４２３に作成した各表のデータが格納される。挿入操作４０２により行データを格納し、削除操作４０３により列データを削除する。
【００１９】
ＤＢＭＳ２０３は、複数の処理要求(ａ〜ｃ)４１０を同時に受付けて、それぞれの要求に対応する処理を並列に実行する。
【００２０】
図５のように、記憶装置２１０上の領域を一定の単位で区切り、区切られた個々の領域をブロックと呼ぶ。ＤＢデータ２１１内の表データ４２３は、格納データの一覧５２０とブロックの使用状況５３０を管理する制御情報５０１と複数のブロック５０２〜５１０をＤＢ格納用に集めたものである。データ格納時には領域の切出しはブロック単位で行なわれ、ブロック内には複数のデータが格納される。１つのブロックにデータが追加できなくなると次のブロックを取得してデータを格納する。
【００２１】
表データ４２３の制御情報５０１に含まれる格納データの一覧５２０に基づいて、表データＡ５２１がブロック番号１番から４番に格納され、開始ブロックと最終ブロックの間のブロックは、次のブロック位置を示す情報によりチェインされる。また、ブロックの使用状況５３０は各ブロックをビットマップ情報で管理する。１ビット目が１番のブロックに対応し、同様に２ビット目が２番ブロック、３ビット目が３番ブロックにそれぞれ対応する。図５のブロックの使用状況は、１、２、３、４、５及び６番ブロックが使用中でその他のブロックが未使用であることを示す。
【００２２】
ブロックへ格納されるデータは、図６のようなスロット形式で配置される。ブロック６００内は、制御情報部６０１とデータ格納部６０２に分かれ、制御情報部６０１に次のブロックとのチェイン情報６０３やブロック内未使用領域の先頭情報６０４、スロット数６０５及びブロック内空領域サイズ６０６が格納される。スロット数６０５は本ブロック６００に格納されるデータ数であり、スロット数分のスロットが存在し、各スロットにデータの位置が格納される。図６には、スロットが３個（６０７，６０８，６０９）存在し、一番目のスロット６０７が示すデータ６１０がデータ位置３０００以降に格納される。データはブロックの後ろより詰められて、現在未使用領域の先頭６０４はデータ位置１５００であり、次のデータを格納するためにデータ位置１５００よりデータサイズ分の領域が切出される。
【００２３】
図７以降を用いて、データベースシステムの表にデータを格納する際の本発明の格納用領域割当て方法に関するＤＢＭＳの処理を機能毎に説明する。格納用領域割当て方法に関する機能としては、表定義、挿入、削除、契機定義及び一括ブロック内再編成等の機能がある。処理要求がＤＢＭＳに対して行われ、処理要求に対する操作機能の処理が実行される。
【００２４】
まず、表定義処理は図７の様に、処理要求７００が、作成する表の表名７０１、表を構成させる列の列名７０２及び列のデータ型７０３等と共にＤＢＭＳ２０３に送られる。この時、契機情報１(７０４)及び契機情報２(７０５)は、指定される場合と指定されない場合がある。ＤＢＭＳ２０３では要求を解析して表定義操作４０１を実行し、表名７１１、列名７１２、７１３及び列データ型７１４、７１５等をＤＢ情報４２２内の表情報４２５に追加する。契機情報１、２が指定されている場合、契機情報１(７２１)及び契機情報２(７２２)を契機情報４２９として表情報４２５内に登録する。
【００２５】
契機情報１は、記憶装置から切出した領域のサイズが指定された値に達した時に、記憶装置より格納用の領域を切出す処理からデータの削除により発生した空き領域をサーチする処理へ切替える契機である。契機情報２は、データの削除によって発生した空き領域をサーチする処理から記憶装置より格納用の領域を切出す処理へ切替える契機であり、さらに、サーチ処理を打切る契機として、前回サーチした領域からサーチを開始して確保済み領域の最後の領域まで参照して空領域が無かった場合と、前回サーチした領域からサーチを開始して最後の領域まで参照した後に領域の先頭から前回サーチした領域まで参照して空領域が無かった場合のどちらかが指定される。
【００２６】
次に、データ挿入処理について図９とフロー図１０〜図１３を用いて説明する。列挿入要求９００が、データを挿入する表の表名９０１及び各列に挿入する列データ９０２、９０３等と共にＤＢＭＳ２０３に送られる。列のデータ型には整数型又は文字型等の型があり、挿入データには各型に対応したデータが指定される。ＤＢＭＳ２０３では要求を解析して挿入操作４０２を実行する。図１０は挿入処理のフローを示す。まず、表名９１１に対応した表情報４２５及び契機情報４２９をＤＢ情報４２２より取得し、表データ４２３を参照し、図５で説明した格納データ一覧より、対応する表名の情報である開始ブロックと終了ブロックの番号を取得する(１０１０)。
【００２７】
次に、この表に対応する表常駐情報４３１を探し(１０１１)、無い場合は新規に作成する(１０１２から１０１３)。表常駐情報４３１には、現在この表のデータ格納領域をどの方法でサーチしているかを示すサーチ情報９２１と、前回サーチを行った位置情報９２２が格納されている。表常駐情報４３１を新規に作成する場合、記憶装置から格納用の領域を切出す処理を実行し、前回サーチを行った位置情報には、対応する表管理データの終了ブロック番号を設定する。
【００２８】
表常駐情報４３１の検出もしくは新規作成の後、位置情報９２２が示すブロック６００を取得し(１０１４)、ブロックの空領域サイズ６０６と格納するデータサイズとを比較し(１０１５)、同じサイズか空領域サイズ６０６が大きい場合(１０１５から１０１７へ)、そのブロックへデータを格納する(１０１７)。
【００２９】
ブロックへデータを格納する処理１０１７では、図１１(ａ)のフローのように、未使用領域先頭よりデータを格納可能な連続した空領域があるかチェックし（１１１１）、空領域がある場合(１１１１から１１１３)、スロット数のカウントアップ、ブロック内の空き領域へのデータのコピー、対応するスロットより格納したデータのポイント、未使用領域先頭位置の更新、及び、空領域サイズより格納したデータサイズの減算を行う(１１１３)。
【００３０】
空領域が無い場合は(１１１１から１１１２)、削除により発生した空領域を含むブロックにおいて空領域サイズ６０６に対応する領域が連続していない場合である。このような場合、そのままではデータを格納できないため、ブロック内再編成処理を実行する(１１１２)。ブロック内再編成処理は、ブロック内の有効なデータを一旦外へ全て取出してブロックを初期化した後、データを格納しなおす。
【００３１】
格納するデータサイズが大きい場合(１０１５から１０１６へ)、格納用ブロックサーチを行う(１０１６)。
【００３２】
格納用ブロックサーチ１０１６は図１１(ｂ)のフローのように、表常駐情報のサーチ方式９２１を参照し(１１２１)、▲１▼記憶装置から格納用の領域を切出す場合(１１２１から１１２３)、格納用領域切出処理を実行する(１１２３)。格納用領域切出処理は図１２のフローのように、契機情報１が登録されているかチェックし(１２１０)、登録されている場合(１２１０から１２１５)、確保したブロック数が契機情報１に指定された数に達しているかチェックする(１２１５)。
【００３３】
契機情報１が登録されていない場合と(１２１０から１２２０)、確保したブロック数が契機情報１に指定された数に達していない場合(１２１５から１２２０)、ブロックの使用状況５３０を参照して未使用ブロックを探し、見つけたブロックに対応する使用状況のビットを使用中に設定し、表管理データの終了ブロック番号のブロックより見つけたブロックへチェインさせ、見つけたブロックの番号を終了ブロック番号に設定し(１２２０)、ブロックへデータを格納し(格納処理は前述と同じ)(１２３０)、表常駐情報の位置情報に見つけたブロックの番号を設定する(１２４０)。
【００３４】
確保したブロック数が契機情報１に指定された数に達している場合(１２１５から１２５０)、表常駐情報のサーチ情報にデータの削除により発生した空き領域のサーチ処理を設定し、表常駐情報の位置情報に表の開始ブロック番号を格納して(１２５０)、データの削除により発生した空き領域をサーチする処理を実行する(１２６０)。
【００３５】
データの削除により発生した空き領域をサーチする処理１１２２は、図１３のフローのように、表常駐情報の位置情報に設定されたブロックを取得し(１３１０)、ブロックの空領域サイズと格納するデータサイズとを比較し(１３２０)、双方のサイズが同じサイズか空領域サイズがデータサイズよりも大きい場合(１３２０から１３３０へ)、そのブロックへデータを格納する(１３３０)。ブロックへデータを格納する処理は、図１１の（ａ）の処理である。
【００３６】
空領域が無い場合は(１３２０から１３４０)、契機情報２が終了ブロックで空き領域サーチを終わる指定かどうかをチェックし(１３４０)、終了ブロックで終わらない場合(１３４０から１３５０)、現在のブロック位置が契機情報２で示されるブロックの1つ前のブロックかチェックする(１３５０)。現在のブロック位置が契機情報２で示されるブロックの1つ前のブロックでない場合(１３５０から１３５５)、次のブロックを取得し(１３５５)、ステップ１３２０以降を繰返す。
【００３７】
現在のブロック位置が契機情報２で示されるブロックの1つ前のブロックだった場合(１３５０から１３６０)、表常駐情報のサーチ情報に格納用領域切出し処理を設定し、ブロックの使用状況を参照し未使用ブロックを探し、見つけたブロックに対応する使用状況のビットを使用中に設定し、表管理データの終了ブロック番号のブロックより見つけたブロックへチェインさせ、見つけたブロックの番号を終了ブロック番号に設定し(１３６０)、ブロックへデータを格納し(格納処理は前述と同じ)(１３６５)、表常駐情報の位置情報に見つけたブロックの番号を設定する(１３７０)。
【００３８】
参照ブロックが終了ブロックかどうかのチェック(１３４０)の結果、参照ブロックが終了ブロックの場合(１３４０から１３４５)、契機情報２で示されるブロックが終了ブロックかどうかをチェックし(１３４５)、終了ブロックでない場合(１３４５から１３７５)、表の開始ブロックを取得し(１３７５)、ステップ１３２０以降を繰返す。
【００３９】
契機情報２で示されるブロックが終了ブロックの場合(１３４５から１３６０)、表常駐情報のサーチ情報に格納用領域切出し処理を設定し、ブロックの使用状況を参照して未使用ブロックを探し、見つけたブロックに対応する使用状況のビットを使用中に設定し、表管理データの終了ブロック番号のブロックより見つけたブロックへチェインさせ、見つけたブロックの番号を終了ブロック番号に設定し(１３６０)、ブロックへデータを格納し(格納処理は前述と同じ)(１３６５)、表常駐情報の位置情報に見つけたブロックの番号を設定する(１３７０)。
【００４０】
図１１(ｂ)のフローにおいて、表常駐情報のサーチ情報９２１の参照(１１２１)に戻り、表常駐情報のサーチ情報が、▲２▼データの削除により発生した空き領域をサーチする処理の場合(１１２１から１１２２)、前述のデータの削除により発生した空き領域をサーチする処理１１２２を実行する。
【００４１】
尚、図１２のステップ１２２０や図１３のステップ１３６０の未使用ブロックサーチで記憶装置から格納用の領域が切出せない場合は、格納領域が無いのでデータ挿入処理はエラーとなる。
【００４２】
データ削除処理では、図１４の様に、処理要求２１０が削除する表の表名１４０１が削除条件１４０２等と共にＤＢＭＳ２０３に送られる。ＤＢＭＳ２０３では要求を解析して削除操作４０３を実行する。
【００４３】
図５の表データ４２３の格納データ一覧５２０に基づいて、削除指定された表名１４１１に対応した開始ブロックから終了ブロックまで順番にブロックに格納されたデータを参照し、削除条件に該当するデータがある場合、該当データをポイントするスロットの値を０に設定し、削除するデータサイズを空き領域サイズに加算する。
【００４４】
契機定義処理では、図１６の様に、契機定義要求１６００が、契機を定義する表の表名１６０１、契機情報１(１６０２)及び契機情報２(１６０３)と共にＤＢＭＳ２０３に送られる。ＤＢＭＳ２０３では要求を解析して契機定義操作４０４を実行し、表名１６１１に対応するＤＢ情報４２２内の表情報４２５に契機情報１(１６１２)及び契機情報２(１６１３)を契機情報４２９として登録する。既に、契機情報が登録されている場合も、指定された契機情報を登録しなおす。
【００４５】
契機情報１及び契機情報２には、表定義処理で説明したものと同じ内容が指定される。
【００４６】
一括ブロック内再編成処理では、図１５の様に、一括ブロック内再編成要求１５００が、一括ブロック内再編成を行う表の表名１５０１と共にＤＢＭＳ２０３に送られる。ＤＢＭＳ２０３では要求を解析して一括ブロック内再編成４０３を実行する。
【００４７】
一括ブロック内再編成４０３は、指定された表について確保されたブロックを順番に参照し、挿入処理で説明した、ブロック内再編成処理を実行する。
【００４８】
削除により多くのブロック内に空領域が発生した場合に、予め一括ページ内再編成処理を実行することにより、挿入処理でブロック内再編成が実行されるのを回避できるため、挿入処理の性能劣化を抑えることが出来る。
【００４９】
では、これ以降具体的に例を用いて説明を行う。
【００５０】
本発明を、日々の売上データを格納し、１年後に、古くなったデータから順に１ヶ月単位でデータを削除する販売管理に適用する。まず、表定義時または契機定義時に、空き領域をサーチする処理の切替え契機１、２を登録する。１年後にデータが消されていくため、格納領域は１年分のデータを格納できるサイズ分を準備すればよい。契機情報１には１年分のデータを格納できるサイズを指定し、また、契機情報２には、前回サーチした領域よりサーチを開始し、一番最後の領域まで参照した後に領域の先頭から前回サーチした領域まで参照して空領域が無かった場合を契機として指定する。
【００５１】
図１(ａ)の表データ１００及び(ｂ)の表データ１１０の様に、まず表データ内に新規のブロックが割当てられ、データが順番に挿入される。１年分データが格納されると、(ｃ)の表データ１２０の様に契機情報１で指定したサイズ分のブロックが確保され、１年前のデータが１ヶ月分削除される。ブロックサイズが契機情報１に指定されたサイズになると、データの削除により発生した空き領域をサーチする処理に切替わり、データが削除された領域へデータが挿入される。１ヶ月単位でデータが削除されるため、(ｄ)の表データ１３０、(ｅ)の表データ１４０及び(ｆ)の表データ１５０の様に削除された領域へデータが挿入される。(ｆ)の表データ１５０から(ｃ)の表データ１２０の状態になり、終了ブロックに格納領域がなくなった場合、契機情報２には、前回サーチした領域よりサーチを開始し、最後の領域まで参照した後に領域の先頭から前回サーチした領域まで参照して空領域が無かった場合が指定されているため、再度開始ブロックより空き領域をサーチする。以上の様に、挿入と削除の繰返しにより、格納データ量が変らない場合、領域の再利用を繰返すことで、格納効率の良い運用が出来る。
【００５２】
また、図８の様に、挿入と削除の繰返しで徐々に格納データ量が増加する場合、(ａ)の表データ８００及び(ｂ)の表データ８１０の様に、表データ内に新規のブロックが割当てられ、データが順番に挿入され、削除も実行される。契機情報１で指定したサイズ分のブロックが確保されると、(ｃ)の表データ８２０の様に削除された領域へデータが挿入される。削除された領域がなくなると(ｄ)の表データ８３０の様に新たなブロックが追加され、追加したブロックへデータが挿入される。追加したブロックが満杯になりデータが格納できなくなると、(ｅ)の表データ８４０の様に再度削除された領域へのデータ挿入が実行され、削除された領域がなくなると(ｄ)の表データ８３０の様に新たなブロックが追加され、追加したブロックが満杯になると(ｅ)の表データ８４０の様に再度削除された領域へのデータ挿入が繰返される。削除により発生した領域を再利用しつつ、新規領域の確保も行われるので、格納効率の良い運用が可能となる。
【００５３】
一方、ブロック内が満杯になるまでデータを格納した後、ブロック内データが削除されたブロックを再利用する場合、図１１（ａ）のように、フロー未使用領域の先頭からデータを格納できる連続した空領域があるかをチェックし（１１１１）、空領域が無い場合には、ブロックを再利用する毎に、ブロック内再編成の実行が必要となる。挿入処理でブロック内再編成を実行すると挿入処理の性能が劣化する。ブロック内データが削除されたブロックの再利用が始まる前に、一括ブロック内再編成処理を実行することにより、ブロックの再利用時に、挿入処理でブロック内再編成処理の実行を回避できるため、挿入処理の性能劣化を回避できる。
【００５４】
以上の説明により、再編成処理実行のためにDBサービスを停止させることなく、格納効率の劣化を防止でき、再編成を無くし、又は再編成時期を遅らせることができる。
【００５５】
また、本実施例においてサーチ方法の切替えは、契機情報１及び契機情報２に指定された情報により行うが、コマンドにより強制的にサーチ方法を切替えたり、一括ブロック内再編成処理で空領域の統計を取得し、一定量の空きが発生した場合にサーチ方法を切替えることもできる。
【００５６】
図５及び図６に示したＤＢの内部構造やブロックの構造は、データ格納管理の実現方法の例であり、他の構造による管理方法でも本発明を適用できる。
【００５７】
以上に述べた本発明のページ確保方法を実行するためのプログラムを計算機で読み取り可能な記録媒体に格納し、プログラムをメモリに読み込んで実行することもできる。また、本発明のページ確保方法を電子回路等のハードウエアで実現することもできる。
【００５８】
【発明の効果】
本発明によれば、ユーザに、該当表の運用において再利用するのに十分な空領域が発生するポイントを見積もり、切替え契機を登録してもらうことにより、最初は、新たなブロックを追加したブロックへデータを挿入する処理を実行し、十分な空領域が発生した契機で、削除された領域へデータを挿入する処理が実行される。
【００５９】
切替え契機をチェックする以外に挿入処理や削除処理に余分な処理を行わなくても、削除により発生した空領域を再利用できるため、ＤＢサービスを停止させずに、格納効率の劣化防止を実現できる。そのため、記憶領域の再編成を無くし、又は再編成時期を遅らせることができる。
【図面の簡単な説明】
【図１】格納データ量が変らない場合の挿入と削除の繰返し実行例である。
【図２】システムの全体構成である。
【図３】ハードウェア構成である。
【図４】ＤＢＭＳの構成である。
【図５】ＤＢデータの内部構造である。
【図６】ブロックの構造である。
【図７】表定義要求である。
【図８】徐々にデータ量が増加する場合の挿入と削除の繰返し実行例である。
【図９】列挿入要求である。
【図１０】挿入処理フローである。
【図１１】ブロックへデータ格納、格納用ブロックサーチ処理フローである。
【図１２】格納用領域切出し処理フローである。
【図１３】空領域サーチ処理フローである。
【図１４】削除要求である。
【図１５】一括ブロック内再編成処理である。
【図１６】契機定義要求である。
【符号の説明】
２００：情報処理装置、２０３：ＤＢＭＳ、２３０：情報処理装置、
２３１：ＤＢアクセスアプリケーション、２６０：ネットワーク、
３０１：ＣＰＵ、３０２：メモリ、３０３：通信制御装置、
３１１：通信制御装置、３１２：Ｉ／Ｏ制御装置、３１３：ＣＰＵ、
３１４：メモリ
【図１】
0004214712.tif 000002
【図２】
0004214712.tif 000003
【図３】
0004214712.tif 000004
【図４】
0004214712.tif 000005
【図５】
0004214712.tif 000006
【図６】
0004214712.tif 000007
【図７】
0004214712.tif 000008
【図８】
0004214712.tif 000009
【図９】
0004214712.tif 000010
【図１０】
0004214712.tif 000011
【図１１】
0004214712.tif 000012
【図１２】
0004214712.tif 000013
【図１３】
0004214712.tif 000014
【図１４】
0004214712.tif 000015
【図１５】
0004214712.tif 000016
【図１６】
0004214712.tif 000017