(57)【要約】【課題】オンライン中のデータベースシステムを停止する事なくデータベースを再編成する場合において、不要なバッファを削除すると共有メモリの断片化が発生し、性能劣化が起きる可能性がある。【解決手段】データベースを再編成する場合に、不要となったバッファを別のバッファへ再編成する事で共有メモリの断片化を防ぐ。【効果】オンライン中にデータベースを再編成しても長時間のデータベースシステムの稼動を可能とする。【選択図】  図１
2004185344.tif 000002
【特許請求の範囲】
【請求項１】
データベースのデータを複数ファイルに格納し、当該データを一時記憶する前記ファイルに割り当てられた共有メモリのバッファを有するデータベース管理方法において、
オンライン中に前記のファイルの削除要求を入力し、当該削除した割り当て済みのバッファを稼働中の別のバッファに再編成することを特徴とするデータベース管理方法。
【請求項２】
請求項１記載のデータベース管理方法において、
当該削除した割り当て済みバッファを分割し、別のバッファに再編成することを特徴としたデータベース管理方法。
【請求項３】
請求項１記載のデータベース管理方法において、
複数の前記削除した割り当て済みバッファをマージして、他のバッファに再編成する事を特徴としたデータベース管理方法。
【請求項４】
データベースのデータを複数ファイルに格納し、当該データを一時記憶する前記ファイルに割り当てられた共有メモリのバッファを有するデータベース管理装置において、
オンライン中に前記のファイルの削除要求を入力する手段と、当該削除した割り当て済みのバッファを稼働中の別のバッファに再編成する手段とを有することを特徴とするデータベース管理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、オンライン中にデータベースを再編成するデータベース管理技術に関する。
【０００２】
【従来の技術】
従来は、特開平７−９３１９８号公報に記載されている技術のように、プロセッサ利用率、スワップの有無、およびバッファヒット率を監視してバッファサイズを自動調整する手法も知られていた。
【０００３】
【特許文献１】
特開平７−９３１９８号
【０００４】
【発明が解決しようとする課題】
上記従来技術は、バッファを削除した時に共用メモリの断片化が発生する可能性があり、処理速度低下の原因となる。また、複数のファイルに対し、それぞれ別のバッファを割り当てるデータベースシステムへの適用について考慮されていなかった。
【０００５】
本発明は、オンライン中にバッファを削除しても、性能低下の少ないデータベース管理方法および装置を提供することを目的とする。
【０００６】
【課題を解決するための手段】
上記目的を達成するために、バッファを削除した時に共有メモリ上のバッファは削除せず、稼働中のバッファに削除したバッファを割り当てる。例えば、表Ａと表ＢのデータをそれぞれファイルＡとファイルＢに格納し、データベースシステム稼動時に共有メモリから取得したバッファＡとバッファＢを使っているデータベースシステムにおいて、表Ａのデータを表Ｂにオンライン中に移行するとする。表Ａのデータは必要なくなるため、表Ａの定義および表Ｂのデータを格納しているファイルＡをデータベースの運用コマンドで削除する。表Ｂのデータは、表Ａのデータ分、データ容量が増えファイルＢのデータ容量も大きくなり、システム稼動時に定義したバッファＢのサイズではファイル入出力回数が多くなり性能が劣化する。そのため、表Ｂのバッファを増やす必要がある。この場合は、単純に表Ａから表Ｂへデータを移行する場合であるため、バッファ再編成コマンドで運用管理者が表Ａに割り当てたバッファＡのバッファサイズをバッファＢのバッファサイズに加算する事で、データベース管理システムを再編成できる。
【０００７】
また、同様に表Ａ、表Ｂ、表Ｃのデータベースシステムを運用中に、表Ａのデータを表Ｂおよび表Ｃに移行した場合、表Ａに割り当てたバッファＡを分割し、表Ｂおよび表Ｃのバッファに、バッファ再編成コマンドでバッファを最適に再編成できる。
また、同様に表Ａ、表Ｂ、表Ｃのデータベースシステムを運用中に、表Ａおよび表Ｂのデータを表Ｃに移行した場合、表Ａおよび表Ｂに割り当てたバッファＡとバッファＢをマージし、表Ｃのバッファに、バッファ再編成コマンドでバッファを最適に再編成できる。
【０００８】
【発明の実施の形態】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。
図１は、情報処理装置上で動作するデータベース管理システムプログラムにおけるバッファ再編成方法の概念図である。データベース管理システムにより表Ａ１０３と表Ｂ１０４は管理されており、表Ａ１０３と表Ｂ１０４はファイルＡ１０７とファイルＢ１０８に格納されていることを示している。
【０００９】
データベースを再編成する前の状態１０１には、表Ａ１０３と表Ｂ１０４の２つの表が存在する。表Ａのデータは物理的にファイルＡ１０７というファイルシステム上のファイルに格納している。表Ｂのデータは、同様にファイルＢ１０８に格納している。これらの表に対する登録、取得、更新、削除を高速化するために、共用メモリ１０６を用いてバッファＡ、Ｂの２面を使ってファイルの入出力回数を抑制している。このバッファは、バッファ管理機能１０５で管理している。この状態で、表Ａのデータを表Ｂへ移行すると、表Ａのデータは表Ｂに統合１０９される。同様に、物理的に格納してあるファイルＢに表Ａのデータが統合１１１される。この時、共用メモリのバッファは、表Ａで使っていたバッファＡを削除せず、表Ａのデータを移行した表ＢのバッファＢへ再編成１１０する。
【００１０】
次に図２から図４を使って、データベースシステムを起動した状態から表のデータを格納するファイルを削除した場合のバッファ管理機能の動作を説明する。システム起動時２０１に予め定義されたバッファ名とバッファのページ数により、共有メモリを確保２０２する。更に予め定義されたバッファ名とファイル名からバッファ管理テーブル２０３を作成する。バッファ管理テーブルでバッファ名２０４、ファイル名２０５、共有メモリの先頭ページ２０６、共有メモリの最終ページ２０７、未使用ページの先頭ページ番号２０８、使用中ページ番号２０９を管理する。この例では、バッファＡが１から１０ページを割り当てられるため、未使用ページ番号２０８は先頭ページである１ページとなる。使用中ページは、起動直後であるため空となる。更にバッファ毎に未割り当てバッファチェーン２１０、２１２を作成する。システム起動直後は、表にアクセスが無いため、使用中バッファチェーン２１１、２１３は空となる。
【００１１】
システムを稼動した状態３０１では、表にアクセスがあった場合のバッファの使用状態を管理したチェーンの状態を示す。バッファＡにアクセスがあった場合、バッファＡの未使用チェーン３０２から必要なページ分のバッファのページを使用中チェーン３０３へ連結する。同様にバッファＢについても、必要なページ分未使用チェーン３０４から使用中チェーン３０５へチェーンを張り替える。尚、図の例ではバッファは順番にチェーンで繋がっているが、アクセス状態によっては、例えばＬＲＵ方式によりチェーンの順番が違ってくる。
【００１２】
次にファイルＡに格納されている表Ａのデータを表Ｂへ移行した場合、ファイルＡが不要となり、ファイルＡを削除４０１する。この状態では、ファイルＡに割り当てられたバッファＡへのアクセスは無いためバッファＡのページは無くなり４０３、全て未使用チェーン４０２に連結される。尚、バッファＢの未使用チェーン４０４および使用中チェーン４０５には影響ない。削除時にバッファＡをバッファＢへ再編成する指定があると、バッファＡの未使用ページ４０６をバッファＢの未使用ページ４０８へ移行し、バッファＢのバッファサイズを増やす。尚、バッファＡの使用中チェーン４０７に変更はない。ファイルＢへのアクセスがあると、バッファＡのページ数分増えた未使用ページがバッファＢの未使用チェーン４０８にあるため、使用中ページを追い出す必要なく、バッファＢ未使用チェーン４０８から必要なページ数分をバッファＢの使用中チェーン４０９へ連結する。これにより、表Ａと表ＢすなわちファイルＡとファイルＢをマージしても、性能を劣化することなくシステム稼動中にバッファを再編成可能となる。
【００１３】
図５は、バッファを分割して別のバッファへの再編成を説明した概念図である。データベースを再編成する前の状態５０１では、表Ａ５０３と表Ｂ５０４と表Ｃ５０５の３つの表について説明する。表Ａのデータは物理的には、ファイルＡ５０８というファイルシステム上のファイルに格納している。表Ｂのデータは同様にファイルＢ５０９、表ＣのデータはファイルＣ５１０に格納している。これらの表に対する登録、取得、更新、削除を高速化するために、共用メモリ５０７を用いてバッファＡ、Ｂ、Ｃの３面を使ってファイルの入出力回数を抑制している。このバッファは、バッファ管理機能５０６で管理している。この状態で、表Ａのデータを表Ｂ，表Ｃへ移行すると、表Ａのデータは表Ｂ５１１および表Ｃ５１２へ統合される。同様に、物理的に格納してあるファイルＢに表Ａのデータが統合５１４、ファイルＣに表Ａのデータが統合５１５される。この時、共用メモリのバッファは、表Ａで使っていたバッファＡを削除せず、表Ａのデータを移行した表ＢのバッファＢおよびバッファＣへ再編成５１３する。
【００１４】
図６は、バッファをマージして別のバッファへの再編成を説明した概念図である。データベースを再編成する前の状態６０１では、表Ａ６０３と表Ｂ６０４と表Ｃ６０５の３つの表について説明する。表Ａのデータは物理的には、ファイルＡ６０８というファイルシステム上のファイルに格納している。表Ｂのデータは同様にファイルＢ６０９、表ＣのデータはファイルＣ６１０に格納している。これらの表に対する登録、取得、更新、削除を高速化するために、共用メモリ６０７を用いてバッファＡ、Ｂ、Ｃの３面を使ってファイルの入出力回数を抑制している。このバッファは、バッファ管理機能６０６で管理している。この状態で、表Ａ，表Ｂのデータを表Ｃへ移行すると、表Ａ，表Ｂのデータは表Ｃ６１１へ統合される。同様に、物理的に格納してあるファイルＣ６１４に表Ａ，表Ｂのデータが統合６１３される。この時、共用メモリのバッファは、表Ａ，表Ｂで使っていたバッファＡ，バッファＢを削除せず、表Ａ，表Ｂのデータを移行した表ＣのバッファＣへ再編成６１２する。
【００１５】
次に図７を使って、バッファ再編成の動作を説明する。データベースシステムを起動すると予め定義されたバッファ名とバッファのページ数により、共用メモリを確保する。（ステップ７０１）更に予め定義されたバッファ名とファイル名からバッファ管理テーブルを作成する。（ステップ７０２）次にバッファ毎に未使用チェーンを作成し、バッファ管理テーブルへ登録する。（ステップ７０３）表へのアクセスがあると（ステップ７０４）必要なページ数分、バッファ未使用チェーンからバッファ使用中チェーンへ連結する。（ステップ７０５）表へのアクセスが無い場合は、ステップ７０５は行わない。次にファイルの削除があると（ステップ７０６）ファイル削除したバッファのページを全てバッファ未使用チェーンへ連結する。（ステップ７０７）ファイルを削除した場合、バッファの再編成の指定があるかチェックする。（ステップ７０８）再編成の指定がある場合は、再編成元のバッファ未使用チェーンから再編成先のバッファ未使用チェーンへ連結する。（ステップ７０９）再編成の指定が無い場合は、ファイル削除したバッファを削除する。（ステップ７１０）ファイルの削除が無い場合は、バッファ再編成およびバッファの削除は行わない。
【００１６】
【発明の効果】
本発明によれば、データベースシステムがオンライン中にバッファを削除しても、別のバッファへ再編成可能とし共有メモリの断片化による性能劣化を抑止できる。
【図面の簡単な説明】
【図１】削除したバッファを別のバッファへ再編成する概念図である。
【図２】システム起動直後のバッファ管理機能の状態を示す図である。
【図３】システムが稼動している時のバッファ管理機能の状態を示す図である。
【図４】バッファを削除した場合のバッファ管理機能の状態を示す図である。
【図５】削除したバッファを別の複数のバッファへ再編成する概念図である。
【図６】削除した複数のバッファを別のバッファへマージして再編成する概念図である。
【図７】バッファ再編成の動作を示すフローチャート図である。
【符号の説明】
１０１    バッファを再編成する前の状態
１０２    バッファを再編成した後の状態
１０３    バッファを再編成する前の表
１０５    バッファ管理機能
１０６    バッファを再編成する前の共用メモリ
１０７    バッファを再編成する前のファイル
１０９    バッファを再編成した後の表
１１０    バッファを再編成した後の共用メモリ
１１１    バッファを再編成した後のファイル
【図１】
2004185344.tif 000003
【図２】
2004185344.tif 000004
【図３】
2004185344.tif 000005
【図４】
2004185344.tif 000006
【図５】
2004185344.tif 000007
【図６】
2004185344.tif 000008
【図７】
2004185344.tif 000009