(57)【要約】【課題】より適切なタイミングで空き容量に関する注意喚起を行うことができるデータベース管理装置、データベース管理方法、およびデータベース管理プログラムを提供することである。【解決手段】実施形態のデータベース管理装置は、容量監視部と、制御部と、周期設定部とを持つ。容量監視部は、データを記憶する記憶装置の空き容量を監視する。制御部は、前記容量監視部により得られる前記記憶装置の空き容量と、所定書き込み率で書き込まれた場合の将来の前記記憶装置の空き容量とに基づいて、前記空き容量に関する注意喚起情報を出力する。周期設定部は、前記記憶装置の空き容量に基づいて、前記容量監視部が前記空き容量を確認する周期を設定する。【選択図】図１
2018014144.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶する記憶装置の空き容量を監視する容量監視部と、
前記容量監視部により得られる前記記憶装置の空き容量と、所定書き込み率で書き込まれた場合の将来の前記記憶装置の空き容量とに基づいて、前記空き容量に関する注意喚起情報を出力する制御部と、
前記記憶装置の空き容量に基づいて、前記容量監視部が前記空き容量を確認する周期を設定する周期設定部と、
を備え、
前記周期設定部は、
前記記憶装置の空き容量が第１の閾値より大きい場合に、前記記憶装置の空き容量と、前記第１の閾値と、前記記憶装置に対して前記所定書き込み率で書き込まれた場合のデータ容量とを用いて、前記空き容量を確認する周期を設定し、
前記空き容量が前記第１の閾値以下である場合において、前記空き容量が、前記第１の閾値よりも小さい第２の閾値よりも大きい場合に、前記記憶装置の空き容量と、前記第２の閾値と、前記記憶装置に対して前記所定書き込み率で書き込まれた場合のデータ容量とに基づく値を、所定の安全率に基づいて割り引くことにより、前記空き容量を確認する周期を設定する、
データベース管理装置。
【請求項２】
前記所定書き込み率は、前記記憶装置に対して想定される最大書き込み率である、
請求項１に記載のデータベース管理装置。
【請求項３】
クライアントからの要求に基づいて前記記憶装置に対するデータの書き込みまたは読み出しを含む処理を実行する処理実行部をさらに備え、
前記容量監視部は、前記処理実行部による前記データの書き込みまたは読み出しを含む処理とは非同期で前記空き容量を確認する、
請求項１または２に記載のデータベース管理装置。
【請求項４】
前記容量監視部および前記処理実行部は、それぞれが非同期で動作するスレッドを起動して動作する、
請求項３に記載のデータベース管理装置。
【請求項５】
前記周期設定部は、
前記空き容量が、前記第２の閾値以下である場合に、前記記憶装置に対してデータを書き込む処理を実行するタイミングで、前記空き容量を確認するように設定する、
請求項１乃至４のうち、いずれか１項に記載のデータベース管理装置。
【請求項６】
操作者の入力操作を受け付ける受付部をさらに備え、
前記周期設定部は、前記受付部により受け付けられた一以上の閾値に基づいて、前記容量監視部が前記空き容量を確認する周期を設定する、
請求項１乃至５のうち、いずれか１項に記載のデータベース管理装置。
【請求項７】
データベース管理装置のコンピュータが、
データを記憶する記憶装置の空き容量を監視し、
前記記憶装置の空き容量に基づいて、前記空き容量を確認する周期を設定し、
前記記憶装置の空き容量と、所定書き込み率で書き込まれた場合の将来の前記記憶装置の空き容量とに基づいて、前記空き容量に関する注意喚起情報を出力し、
更に前記空き容量を確認する周期を設定する場合において、前記記憶装置の空き容量が第１の閾値より大きい場合に、前記記憶装置の空き容量と、前記第１の閾値と、前記記憶装置に対して前記所定書き込み率で書き込まれた場合のデータ容量とを用いて、前記空き容量を確認する周期を設定し、
前記空き容量が前記第１の閾値以下である場合において、前記空き容量が、前記第１の閾値よりも小さい第２の閾値よりも大きい場合に、前記記憶装置の空き容量と、前記第２の閾値と、前記記憶装置に対して前記所定書き込み率で書き込まれた場合のデータ容量とに基づく値を、所定の安全率に基づいて割り引くことにより、前記空き容量を確認する周期を設定する、
データベース管理方法。
【請求項８】
データベース管理装置のコンピュータに、
データを記憶する記憶装置の空き容量を監視させ、
前記記憶装置の空き容量に基づいて、前記空き容量を確認する周期を設定させ、
前記記憶装置の空き容量と、所定書き込み率で書き込まれた場合の将来の前記記憶装置の空き容量とに基づいて、前記空き容量に関する注意喚起情報を出力させ、
更に前記空き容量を確認する周期を設定させる場合において、前記記憶装置の空き容量が第１の閾値より大きい場合に、前記記憶装置の空き容量と、前記第１の閾値と、前記記憶装置に対して前記所定書き込み率で書き込まれた場合のデータ容量とを用いて、前記空き容量を確認する周期を設定させ、
前記空き容量が前記第１の閾値以下である場合において、前記空き容量が、前記第１の閾値よりも小さい第２の閾値よりも大きい場合に、前記記憶装置の空き容量と、前記第２の閾値と、前記記憶装置に対して前記所定書き込み率で書き込まれた場合のデータ容量とに基づく値を、所定の安全率に基づいて割り引くことにより、前記空き容量を確認する周期を設定させる、
データベース管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、データベース管理装置、データベース管理方法、およびデータベース管理プログラムに関する。
【背景技術】
【０００２】
データベース管理システム（DataBase Management System，DBMS）では、データを記憶する記憶装置（例えば、ハードディスク）の記憶領域を完全に使い切る前に、記憶領域を確保するための調整等が行われる。以下、ハードディスクを前提として説明する。上記の調整等が行われるトリガーとして、ディスクフル（Disk Full）エラーが発生したという情報が、監視システム等によって通知される場合がある。ディスクフルエラー発生時の対応処理を安全に行うためには、ある程度の空き容量が必要となる。また、ディスクフルエラーが発生するディスクフル状態では、システム上で起動するＯＳ（Operating System）の振る舞いも信用できなくなり、不意にクラッシュする可能性が高い。しかしながら、従来の技術では、その時点の状態に基づいてディスクフルエラーの通知を行っているため、安全側で早期に通知を行う必要があった。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−１８３６３号公報
【特許文献２】特開２００７−１７９５５１号公報
【特許文献３】特開２００６−１６３７２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明が解決しようとする課題は、より適切なタイミングで空き容量に関する注意喚起を行うことができるデータベース管理装置、データベース管理方法、およびデータベース管理プログラムを提供することである。
【課題を解決するための手段】
【０００５】
実施形態のデータベース管理装置は、容量監視部と、制御部と、周期設定部とを持つ。容量監視部は、データを記憶する記憶装置の空き容量を監視する。制御部は、前記容量監視部により得られる前記記憶装置の空き容量と、所定書き込み率で書き込まれた場合の将来の前記記憶装置の空き容量とに基づいて、前記空き容量に関する注意喚起情報を出力する。周期設定部は、前記記憶装置の空き容量に基づいて、前記容量監視部が前記空き容量を確認する周期を設定する。また、周期設定部は、前記記憶装置の空き容量が第１の閾値より大きい場合に、前記記憶装置の空き容量と、前記第１の閾値と、前記記憶装置に対して前記所定書き込み率で書き込まれた場合のデータ容量とを用いて、前記空き容量を確認する周期を設定する。また、周期設定部は、前記空き容量が前記第１の閾値以下である場合において、前記空き容量が、前記第１の閾値よりも小さい第２の閾値よりも大きい場合に、前記記憶装置の空き容量と、前記第２の閾値と、前記記憶装置に対して前記所定書き込み率で書き込まれた場合のデータ容量とに基づく値を、所定の安全率に基づいて割り引くことにより、前記空き容量を確認する周期を設定する。
【図面の簡単な説明】
【０００６】
【図１】本実施形態におけるデータベース管理装置の機能構成例を示す図。
【図２】設定ファイルの一例を示す図。
【図３】エラーチェックフラグの一例を示す図。
【図４】データベース管理装置のハードウェア構成例を示す図。
【図５】本実施形態におけるデータベース管理処理を説明するための図。
【図６】チェック周期の第１の設定例を説明するため図。
【図７】チェック周期の第２の設定例を説明するため図。
【図８】チェック周期の設定処理の第１の実施例を示すフローチャート。
【図９】チェック周期の設定処理の第２の実施例を示すフローチャート。
【図１０】容量監視処理の一例を示すフローチャート。
【図１１】ＳＱＬ実行処理の一例を示すフローチャート。
【発明を実施するための形態】
【０００７】
以下、実施形態のデータベース管理装置、データベース管理方法、およびデータベース管理プログラムを、図面を参照して説明する。
【０００８】
図１は、本実施形態におけるデータベース管理装置の機能構成例を示す図である。図１に示すデータベース管理装置１００は、設定情報受付部（受付部）１１０と、チェック周期設定部（周期設定部）１２０と、容量監視部１３０と、処理実行部１４０と、制御部１５０と、記憶部１６０とを備える。これらの各機能部のうち一部または全部は、ＬＳＩ（Large Scale Integration）やＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field-Programmable Gate Array）等のハードウェアで実現されてもよい。また、記憶部１６０は、設定ファイル１６２およびエラーチェックフラグ１６４等を有する。
【０００９】
図１の例では、データベース管理装置１００が管理する対象のデータベース２００が、データベース管理装置１００と別体の装置であるように表現しているが、これらは一体の装置であってもよい。また、データベース２００は、クラウド型のデータベースであってもよい。データベース２００には、１又は複数の記憶装置（図１の例では、ディスク装置Ｄ１、Ｄ２、…）が設けられている。以下、記憶装置としてハードディスク（ディスク装置）を備えることを前提として説明するが、記憶装置は、フラッシュメモリやその他の記憶装置であってもよい。また、データベース管理装置１００は、例えばＤＢＭＳ等の機能を有する。
【００１０】
図１の例について、データベース管理装置１００は、ユーザ（操作者）が使用するクライアント３００からの設定情報の入力や、処理を実行するための指示の入力を受け付け、受け付けた内容に基づいて、データベース２００の管理等に関する各種処理を実行する。
【００１１】
クライアント３００は、データベース管理装置１００にデータを出力したり、コマンド等による所定の指示を行うことで、データベース２００に対して所定の処理（データの書き込み、読み出し、削除等）を実行させる。クライアント３００は、例えばＰＣ（Personal Computer）やタブレット端末、携帯電話等の情報処理装置である。クライアント３００は、データベース管理装置１００のユーザによって使用される情報処理装置であってもよく、さらに別の装置から受信したコマンド等に基づいて、データベース管理装置１００に各種コマンドを送信する装置であってもよい。また、クライアント３００は、内部において情報処理した結果に基づいて、各種コマンドを生成してデータベース管理装置１００に送信する装置であってもよい。
【００１２】
例えば、クライアント３００は、データベース管理装置１００に対して、所定の処理を実行させるために、データの書き込みを指示するライトコマンド、データの読み出しを指示するリードコマンド、データの削除を指示する削除コマンド等を送信する。また、クライアント３００は、データベース管理装置１００から指示した内容に対する処理結果を取得する。
【００１３】
なお、データベース管理装置１００とクライアント３００とは、例えばインターネットやＬＡＮ（Local Area Network）等に代表される通信ネットワークにより、データの送受信が可能な状態で接続されている。通信ネットワークは、有線でも無線でもよく、またこれらの組み合わせであってもよい。また、クライアント３００の各種機能は、データベース管理装置１００に設けられていてもよい。図１の例では、データベース管理装置１００を使用する装置として１つのクライアント３００が示されているが、複数のクライアント３００がデータベース管理装置１００を使用してもよい。
【００１４】
設定情報受付部１１０は、クライアント３００から、ディスク容量を確認（チェック）する周期を設定するための設定情報の入力を受け付ける。設定情報受付部１１０は、例えばクライアント３００に対するユーザの入力操作により設定情報を受け付ける。受け付けた設定情報は、設定ファイル１６２として記憶部１６０に記憶される。また、設定情報受付部１１０は、クライアント３００から、上述した所定の処理等を実行するための指示を受け付けてもよい。
【００１５】
図２は、設定ファイルの一例を示す図である。例えば、図２に示す設定ファイル１６２−１、１６２−２は、それぞれディスク装置Ｄ１、Ｄ２に対応する設定情報である。設定情報受付部１１０は、データベース２００のディスク装置ごとに設定ファイル１６２を生成する。図２に示す設定ファイル１６２−１、１６２−２には、それぞれ一以上の閾値（例えば、閾値Ａ１〜Ｃ１、Ａ２〜Ｃ２）と、そのディスク装置に対する所定書き込み率とが設定されている。所定書き込み率とは、各ディスク装置に対して想定される最大書き込み率である。なお、最大書き込み率は、想定される最大書き込み率よりも、少し小さく（または大きく）設定してもよい。「少し」とは、例えば±１０％程度である。図２では、ディスク装置Ｄ１、Ｄ２に対する所定書き込み率の一例として最大書き込みスループットＴ１、Ｔ２が設定されている。設定ファイル１６２は、ディスク装置の識別情報とともに、記憶部１６０に記憶される。
【００１６】
図２に示す閾値Ａ〜Ｃは、チェック周期のパラメータ、およびディスクフルエラー（空き容量に関する注意喚起情報）を出力するか否かをチェックするためのパラメータである。閾値Ａ〜Ｃは、いずれもディスク装置の空き容量に関する閾値であるが、ディスクの使用容量に関する閾値であってもよい。例えば、３つの閾値Ａ〜Ｃのうち、２つの閾値（例えば、閾値Ａ、Ｂ）は、ディスク容量の次回のチェック周期を設定するために用いられ、残りの閾値（例えば、閾値Ｃ）は、ディスクフルか否か（空き容量がない状態であるか否か）の確認のために用いられる。なお、３つの閾値Ａ〜Ｃは、予め設定された大小関係（例えば、「閾値Ａ＞閾値Ｂ＞閾値Ｃ」）を有していてもよい。
【００１７】
例えば、閾値Ａ〜Ｃは、予め設定されたディスク装置の全容量に対する比率等を用いて設定してもよく、ユーザにより任意に設定されてもよい。例えば、第１の閾値である閾値Ａは、ディスク装置に対する処理等を考慮し、空き容量に余裕を持った値を設定する。また、第２の閾値である閾値Ｂは、データの書き込み時に空き容量のチェックを行うか否かを判定するための基準となる値であるため、閾値Ａよりも小さく、閾値Ｃよりも大きい値を設定する。
【００１８】
また、第３の閾値である閾値Ｃは、ディスク装置がディスクフルエラーか否かを判定するための基準となる値であるため、少なくともエラー処理１回に必要とする最大の容量と、エラー処理１回の時間中に消費する容量とを加算した容量を確保する必要がある。例えば、エラー処理に１ＭＢが必要であり、さらにエラー処理時間（９０ｍｓ）で９ＭＢが必要である場合、閾値Ｃは、それらを加算して１０ＭＢ以上の値が設定される。
【００１９】
また、設定ファイル１６２内の最大書き込みスループットＴは、例えばデータベース２００のディスク装置Ｄ１、Ｄ２等を提供するディスクベンダ（データベース提供者等）４００が提供するカタログスペック等から取得することができる。ディスクベンダ４００は、例えばＰＣやサーバ等の情報処理装置であり、クライアント３００やデータベース管理装置１００と、通信ネットワークを介してデータの送受信が可能な状態で接続されていてもよい。
【００２０】
例えば、クライアント３００は、通信ネットワークを介してディスクベンダ４００にアクセスし、ディスク装置Ｄ１、Ｄ２等のカタログスペックデータを取得し、そのデータを設定情報受付部１１０に入力することで最大書き込みスループットＴを取得することができる。また、ユーザが、印刷媒体等のカタログスペックから、最大書き込みスループットＴを、クライアント３００を用いて入力してもよい。また、データベース管理装置１００は、通信ネットワークを介してディスクベンダ４００に直接最大書き込みスループットＴの問い合わせを行い、対応するデータを取得してもよい。これにより、ディスク装置に関する知識や経験を有していないユーザであっても容易に最大書き込みスループット値を設定することができる。
【００２１】
なお、最大書き込みスループットＴは、クライアント３００を使用するユーザが任意に設定してもよい。また、上述した閾値Ａ〜Ｃのうち、少なくとも１つを、ディスクベンダ４００から提供される情報に基づいて設定してもよい。上述した閾値Ａ〜Ｃおよび最大書き込みスループットＴのうち少なくとも１つは、予め設定された固定値でもよい。また、最大書き込みスループットＴは、例えばディスク性能測定プログラムを用いて、予め測定した値を設定してもよい。
【００２２】
チェック周期設定部１２０は、設定情報受付部１１０により設定された設定ファイル１６２を記憶部１６０から読み出し、ディスク装置Ｄ１，Ｄ２等のそれぞれのディスク容量を確認する周期（チェック周期）を算出する。なお、チェック周期の算出手法については、後述する。
【００２３】
容量監視部１３０は、チェック周期設定部１２０により得られるチェック周期に基づいて、データベース２００内のディスク装置Ｄ１，Ｄ２等の空き容量を監視する。例えば、容量監視部１３０は、チェック周期に到達した時点で制御部１５０に対してディスク装置Ｄ１，Ｄ２等の空き容量の問い合わせを行い、制御部１５０から取得した空き容量と、設定ファイル１６２で設定された閾値とを比較することで、ディスク装置ごとにディスクフルか否かの判定を行う。
【００２４】
また、容量監視部１３０は、問い合わせにより得られた現在の空き容量と、設定ファイル１６２に設定されたディスク装置Ｄ１、Ｄ２等のそれぞれの最大書き込みスループットＴ１、Ｔ２で書き込まれた場合の将来のディスクの空き容量とに基づいて、決定される第１の周期で、次回のディスク装置Ｄ１、Ｄ２等の空き容量の確認を行う。
【００２５】
また、容量監視部１３０は、取得した現在の空き容量と、各ディスク装置の設定ファイル１６２に設定された閾値とを比較し、比較結果に基づくチェック内容をエラーフラグ情報として、記憶部１６０に記憶されたエラーチェックフラグ１６４に設定する。
【００２６】
図３は、エラーチェックフラグの一例を示す図である。エラーチェックフラグ１６４の項目としては、データベース２００として管理される１又は複数のディスク装置を識別する「ディスク種別」、およびディスク装置に対するデータの書き込みまたは読み出し等を含む処理を実行する際に、空き容量のチェックを行うか否かを判定するための「チェックフラグ」等がある。エラーチェックフラグ１６４は、ディスク装置ごとに、処理実行部１４０において、容量監視部１３０におけるディスク容量のチェック周期とは非同期に、ディスク容量のチェックを行うか否かを判定するものである。
【００２７】
例えば、容量監視部１３０は、ディスク装置Ｄ１，Ｄ２等の現在のディスク容量と、設定ファイル１６２の閾値Ｂとを比較した結果、現在のディスク容量が閾値Ｂ以下である場合に、エラーチェックフラグ１６４の対象ディスク装置に対するチェックフラグを「ＴＲＵＥ」にする。また、現在のディスク容量が閾値Ｂより大きい場合（閾値Ａより大きい場合を含む）、エラーチェックフラグを「ＦＡＬＳＥ」にする。なお、チェックフラグの種類は、「ＴＲＵＥ／ＦＡＬＳＥ」に限定されるものではなく、「１／０」、「ＯＮ／ＯＦＦ」等の識別情報でもよい。
【００２８】
なお、上述した容量監視部１３０は、容量監視部１３０における処理をディスク容量監視スレッド（第１の処理スレッド）として起動させてもよい。スレッドとは、例えばソフトウェアやプログラムにおいて、並列処理に対応したＯＳ上でのプログラムの最小の実行単位である。データベース管理装置１００は、例えばデータベース管理装置１００の起動時にディスク容量監視スレッドを起動させることで、上述した容量監視部１３０における各処理を実行する。
【００２９】
処理実行部１４０は、クライアント３００からの指示による処理を実行する。例えば、処理実行部１４０は、クライアント３００から得られるコマンドに対応する１又は複数のＳＱＬ（Structured Query Language）処理スレッド（第２の処理スレッド）を実行する。ＳＱＬは、データベース管理装置１００に対して、ユーザ（クライアント３００）や外部のソフトウェア等から命令を発行するために用いる言語である。ＳＱＬは、例えばデータベース２００の各ディスク装置におけるテーブル（データ）の追加や変更、削除、各テーブル間の関係、各テーブルの定義等を行うための命令語と構文、文法等を定めることができる。
【００３０】
例えば、処理実行部１４０は、ユーザが発行したＳＱＬ要求に対する処理をＳＱＬ処理スレッドで行い、必要に応じてデータの書き込みまたは読み出しを含む処理を制御部１５０に要求する。例えば、処理実行部１４０は、ディスク装置に対するデータの書き込み時にエラーチェックフラグ１６４を参照し、データを書き込む対象のディスク装置のチェックフラグが「ＴＲＵＥ」である場合、そのディスク装置への書き込み要求を行うタイミングで、空き容量の問い合わせを制御部１５０に要求する。なお、チェックフラグが「ＦＡＬＳＥ」である場合、処理実行部１４０は、空き容量の問い合わせを行わずに、データの書き込み処理のみを制御部１５０に要求する。
【００３１】
また、処理実行部１４０は、取得した空き容量と閾値（例えば、閾値Ｃ）とを比較し、空き容量が閾値以下である場合には、ディスクフルエラーをクライアント３００等に出力する。なお、処理実行部１４０は、上述したディスクフルエラーの出力を制御部１５０に要求し、制御部１５０で実行させてもよい。
【００３２】
上述したＳＱＬ処理スレッドは、上述したディスク容量監視スレッド（第１の処理スレッド）が起動した後に起動し、ディスク容量監視スレッドとは非同期に実行される。つまり、本実施形態において、容量監視部１３０および処理実行部１４０は、それぞれが非同期で動作するスレッドを起動して動作することができる。
【００３３】
制御部１５０は、図１に示す各構成全体の処理を制御する。制御部１５０による各種制御は、例えばＯＳ等により実行される機能である。制御部１５０は、ディスク装置Ｄ１、Ｄ２等に対するデータの書き込みや読み出し、データの削除、テーブルの更新等の各種制御を行う。例えば、制御部１５０は、処理実行部１４０からデータの書き込み要求を受け付け、ディスク装置Ｄ１、Ｄ２等への書き込みを行う。また、制御部１５０は、書き込み後の空き容量の更新を行う。更新された空き容量に関する情報は、制御部１５０の内部メモリ等で管理されてもよい。
【００３４】
また、制御部１５０は、容量監視部１３０または処理実行部１４０からの空き容量の問い合わせに対して、データベース２００または内部メモリ等からディスク装置の空き容量を取得し、取得した空き容量を、問い合わせのあった容量監視部１３０または処理実行部１４０に出力する。また、制御部１５０は、ディスク装置Ｄ１、Ｄ２等の空き容量に基づいて、ディスクフルエラーをクライアント３００に出力してもよい。
【００３５】
記憶部１６０は、データベース管理装置１００のコンピュータが実行するプログラム（例えば、データベース管理プログラム）や、その他の各種設定情報（設定ファイル１６２）、エラーフラグ情報（エラーチェックフラグ１６４）、ログ情報等を記憶する。記憶部１６０は、例えばＲＯＭ（Read Only Memory）、フラッシュメモリ、ＨＤＤ（Hard Disk Drive）、ＳＳＤ（Solid State Drive）、ＳＤカード等の不揮発性の記憶媒体でもよく、ＲＡＭ（Random Access Memory）、レジスタ等の揮発性の記憶媒体でもよい。
【００３６】
図４は、データベース管理装置のハードウェア構成例を示す図である。データベース管理装置１００は、例えば、ＣＰＵ（Central Processing Unit）１００Ａと、ＲＡＭ（Random Access Memory）１００Ｂと、不揮発性記憶装置１００Ｃと、可搬型記憶媒体ドライブ装置１００Ｄと、入出力装置１００Ｅと、通信インターフェース１００Ｆとを備える。データベース管理装置１００は、ＣＰＵ１００Ａに代えて、任意の形態のプロセッサを備えてもよいし、図４に示した各構成要素のうち一部を省略してもよい。
【００３７】
ＣＰＵ１００Ａは、不揮発性記憶装置１００Ｃに格納され、または可搬型記憶媒体ドライブ装置１００Ｄに装着された可搬型記憶媒体に格納されたプログラムをＲＡＭ１００Ｂに展開して実行することで、本実施形態における各種処理を行う。なお、データベース管理装置１００は、ＣＰＵ１００Ａに代えて、他の種類のプロセッサを備えてもよい。ＲＡＭ１００Ｂは、揮発性メモリの一例であり、ＣＰＵ１００Ａによってワーキングエリアとして使用される。不揮発性記憶装置１００Ｃは、例えば、ＨＤＤやフラッシュメモリ、ＲＯＭ等である。可搬型記憶媒体ドライブ装置１００Ｄには、ＤＶＤ（Digital Versatile Disc）やＣＤ（Compact Disc）、ＳＤカード等の可搬型記憶媒体が装着される。入出力装置１００Ｅは、例えば、キーボードやマウス、タッチパネル、表示装置等を含む。通信インターフェース１００Ｆは、データベース管理装置１００が通信ネットワークを介して、他装置と通信を行う場合のインターフェースとして機能する。データベース管理装置１００のコンピュータに対して、図４に示すようなハードウェアと、プログラム等からなるソフトウェアとを協働させることで、本実施形態における各種処理を実現させることができる。
【００３８】
図５は、本実施形態におけるデータベース管理処理を説明するための図である。図５の例では、データベース管理装置１００と、データベース２００と、クライアント３００とを有する。また、図５は、マルチスレッド方式により、データベース２００のディスク容量チェックを行う例を示している。例えば、図５に示すディスク容量監視スレッド５００は、上述した容量監視部１３０に対応し、ＯＳ５０２は、上述した制御部１５０に対応し、ＳＱＬ処理スレッド５０４は、上述した処理実行部１４０に対応している。なお、ＯＳ５０２は、データベース管理装置１００に設けられているが、データベース２００側に設けられてもよい。
【００３９】
ここで、本実施形態におけるディスク容量チェックとは、例えばデータベース管理装置１００が行うディスク装置ごとの空き容量の問い合わせや、問い合わせにより取得した空き容量と所定の閾値との比較結果に基づいて、ディスクフルエラーを出力したり、次回のチェック周期を設定する処理である。本実施形態では、ディスク装置の空き容量（または使用容量）に応じた周期を設定し、設定した周期でディスク容量チェックを行う。
【００４０】
図５の例において、データベース管理装置１００のディスク容量監視スレッド５００は、３つの閾値Ａ〜Ｃとディスク装置の最大書き込みスループットＴとを有する設定ファイル１６２を取得する（図５に示す（１））。また、ディスク容量監視スレッド５００は、チェック周期設定部１２０により設定された周期でＯＳ５０２へディスク空き容量を問い合わせる（図５に示す（２））。ＯＳ５０２は、ディスク容量監視スレッド５００からの空き容量の問い合わせに対して、データベース２００に問い合わせを行い（図５に示す（３））、対応するディスク装置の空き容量を取得する（図５に示す（４））。また、ＯＳ５０２は、取得した空き容量をディスク容量監視スレッド５００に出力する（図５に示す（５））。なお、ＯＳ５０２は、予め内部メモリ等にディスク装置の空き容量に関する情報を記憶している場合には、その情報をディスク容量監視スレッド５００に出力してもよい。
【００４１】
ディスク容量監視スレッド５００は、設定ファイル１６２に設定された閾値Ａまたは閾値Ｂと、現在の空き容量とを比較し、比較結果に基づきエラーチェックフラグ１６４のチェックフラグを更新する（図５に示す（６））。また、ディスク容量監視スレッド５００は、空き容量と閾値とのチェック結果に基づいて、チェック周期設定部１２０により設定されたチェック周期で、次回の空き容量の確認を行う。
【００４２】
また、処理実行部１４０は、例えばユーザが発行したＳＱＬ要求を処理する。処理実行部１４０は、１又は複数のＳＱＬ要求の数に応じたＳＱＬ処理スレッド５０４を生成し、生成したＳＱＬ処理スレッドを実行させる。ここで、処理実行部１４０は、例えばデータベース２００のディスク装置に対する書き込み処理や読み出し処理、および削除処理等のうち、書き込み処理を行うＳＱＬ処理スレッドを実行する場合に、エラーチェックフラグ１６４を読み出す（図５に示す（７））。
【００４３】
また、処理実行部１４０は、データの書き込み対象のディスク装置のチェックフラグが「ＴＲＵＥ」である場合、データの書き込み処理とともにＯＳ５０２に対して空き容量の問い合わせを行う（図５に示す（８））。ＯＳ５０２は、ＳＱＬ処理スレッド５０４によるディスク装置への書き込み処理があった場合に、データベース２００の対象のディスク装置に対する書き込みを行うとともに、空き容量の更新を行う（図５に示す（９））。なお、ＯＳ５０２は、データの削除処理等により空き容量が変更される場合にも、ディスク装置の空き容量の更新を行う。
【００４４】
また、ＯＳ５０２は、ディスク装置への書き込み処理の実行結果と、書き込み処理により更新されたディスク空き容量を取得し（図５に示す（１０））、取得した実行結果および空き容量をＳＱＬ処理スレッド５０４に出力する（図５に示す（１１））。なお、ＯＳ５０２は、予め内部メモリ等にディスク装置の空き容量に関する情報を記憶している場合には、その情報をＳＱＬ処理スレッド５０４に出力してもよい。
【００４５】
ＳＱＬ処理スレッド５０４は、ディスク装置の空き容量が、閾値Ｃより小さい場合に、ディスクフルエラーを出力する。また、ＳＱＬ処理スレッド５０４は、現在のディスク容量が閾値Ｃ以上である場合には、ディスクフルエラーを出力しない。なお、ディスクフルエラーは、対象のディスク装置にデータを書き込むことができない場合に発生するエラーである。この場合、処理実行部１４０は、エラーメッセージをクライアント３００の画面に出力してもよい。また、処理実行部１４０は、ディスク装置の空き容量が増加するように、記憶されているデータの削除や圧縮、移動、ディスク容量の拡張等の処理を実行させてもよい。なお、ＳＱＬ処理スレッド５０４による空き容量のチェックを行っている場合でも、ディスク容量監視スレッド５００で空き容量のチェックを行ってよい。この場合、ディスク容量監視スレッド５００の次のチェック周期は、空き容量が増加するまでの時間を考慮し、すぐにチェックしなくてもよいため、長めの固定値（例えば１０秒後等）が設定される。
【００４６】
このように、本実施形態では、ディスク容量監視スレッド５００が、ＳＱＬ処理スレッド５０４と非同期で空き容量を確認する。また、本実施形態では、ディスク容量監視スレッド５００は、空き容量と、容量に関する閾値とを比較した結果に基づいて、空き容量をチェックする周期を変動させる。これにより、より適切なタイミングで空き容量の確認を行うことができ、必要に応じて空き容量に関する注意喚起を行うことができる。
【００４７】
次に、ディスク装置の現在の空き容量と、閾値と、最大書き込みスループットＴとの関係に基づく、空き容量のチェック周期の設定内容について、具体的に説明する。例えば、ディスク装置の空き容量が大きい場合は、短い間隔で空き容量をチェックするのは無駄になる。また、空き容量が少ない場合は、短い間隔でチェックした方が、ディスク装置の空き容量の不足を早期に把握することができ、システムエラー等を防止することができる。そこで、本実施形態では、現在の空き容量と、一以上の閾値と、ディスク最大書き込みしスループットＴとに基づいて、ディスクチェック周期を設定する。
【００４８】
ここで、チェック周期を設定する場合、空き容量チェックの実行時に、データベース管理装置１００のエラー処理が可能な空き容量を残しておく必要がある。しかしながら、エラー処理に関するプロセス数が数十〜数百もあるとともに、データベース管理装置１００がエラー処理以外でデータを書き込むこともあるため、ディスク装置全体の書き込みスループットの最大を調べるのは難しい。
【００４９】
そこで、本実施形態では、ディスク容量チェックを、ディスク装置のカタログスペックから取得した最大書き込みスループットＴ（ＭＢ／ｓ）により設定する。このチェック周期は、ＳＱＬ処理の実行とは非同期（別のタイミング）で実行される周期である。
【００５０】
図６は、チェック周期の第１の設定例を説明するため図である。図６の例では、横軸に時間を示し、縦軸にディスク装置の空き容量を示している。また、図６の例では、ディスク装置の実際の空き容量、および最大書き込みスループットに基づく空き容量の減少の様子を示している。また、図６の例では、チェック周期の１回目から３回目のいずれの場合も、実際の空き容量が閾値Ａより大きい場合を示している。
【００５１】
チェック周期設定部１２０は、書き込み先のディスク装置に対する最大書き込みスループットＴに基づいてデータを書き込んだ場合に減少する将来の空き容量が、閾値Ａの容量になるまで減少したときの時間（図６に示す時間ｔ１ａ）をチェック周期（１回目）として設定する。
【００５２】
ここで、周期（１回目）の容量チェックの結果として、実際の空き容量が、閾値Ａより大きい場合、チェック周期設定部１２０は、チェック周期（１回目）におけるチェック時に取得した現在の空き容量を基準に、書き込み先のディスク装置に対する最大書き込みスループットＴに基づいて、データを書き込んだ場合に減少する将来の空き容量が、閾値Ａの容量になるまで減少したときの時間（図６に示す時間ｔ２ａ）を次のチェック周期（２回目）として設定する。また同様に、チェック周期設定部１２０は、チェック周期（２回目）におけるチェック時に取得した実際の空き容量が、閾値Ａより大きい場合に、最大書き込みスループットＴに基づいてデータを書き込んだ場合に減少する将来の空き容量が、閾値Ａの容量になるまで減少したときの時間（図６に示す時間ｔ３ａ）を次のチェック周期（３回目）として設定する。以下、実際の空き容量が、閾値Ａより大きい場合には、同様の処理が行われる。
【００５３】
図７は、チェック周期の第２の設定例を説明するため図である。図７の例では、図６の例と同様に、横軸に時間を示し、縦軸にディスク装置の空き容量を示している。また、図７の例では、ディスク装置の実際の空き容量と、最大書き込みスループットに基づく空き容量の減少と、所定の安全率に基づいてチェック周期を割り引いた様子とを示している。また、図７の例では、チェック周期の１回目から３回目のいずれの場合も、実際の空き容量が閾値Ａ以下で、閾値Ｂより大きい場合を示している。
【００５４】
図７の例に示すように、例えば、実際の空き容量が閾値Ａ以下であり、且つ、閾値Ｂより大きい場合、チェック周期設定部１２０は、書き込み先のディスク装置に対する最大書き込みスループットＴに基づいてデータを書き込んだ場合に減少する空き容量が、閾値Ｂの容量になるまで減少したときの時間（図７に示す時間ｔ１ｂ）を取得する。さらに、チェック周期設定部１２０は、時間ｔ１ｂから所定の安全率で割り引いた時間（図７に示すｔ１ｂ’）をチェック周期（１回目）として設定する。ここで、安全率とは、ディスク容量が閾値Ｂ以下になる前に、空き容量チェックを確実に行うことを保証するためのパラメータである。
【００５５】
ここで、周期（１回目）の容量チェックの結果として、実際の空き容量が閾値Ａ以下で、且つ、閾値Ｂより大きい場合、チェック周期設定部１２０は、チェック周期（１回目）におけるチェック時に取得した現在の空き容量を基準に、書き込み先のディスク装置に対する最大書き込みスループットＴに基づいてデータを書き込んだ場合に減少する空き容量が、閾値Ｂの容量になるまで減少したときの時間（図７に示す時間ｔ２ｂ）を取得する。さらに、チェック周期設定部１２０は、時間ｔ２ｂから所定の安全率で割り引いた時間（図７に示すｔ２ｂ’）を次のチェック周期（２回目）として設定する。
【００５６】
また同様に、チェック周期設定部１２０は、チェック周期（２回目）におけるチェック時に取得した実際の空き容量が、閾値Ａ以下であり、且つ閾値Ｂより大きい場合に、最大書き込みスループットＴに基づいてデータを書き込んだ場合に減少する将来の空き容量が、閾値Ａの容量になるまで減少したときの時間（図７に示す時間ｔ３ｂ）を取得する。さらに、チェック周期設定部１２０は、時間ｔ３ｂから所定の安全率で割り引いた時間（図７に示すｔ３ｂ’）をチェック周期（３回目）として設定する。以下、実際の空き容量が、閾値Ａ以下であり、且つ閾値Ｂより大きい場合に、同様の処理が行われる。図６および図７の処理は、チェック周期による空き容量と閾値との関係に基づいて切り替えることができる。なお、上述した図６、図７に示すチェック周期の設定手法は、これに限定されるものではない。
【００５７】
上述した図６、図７に示すように、データベース管理装置１００は、実際のディスク装置の空き容量に応じてディスク装置の空き容量のチェック周期を変動させることができる。より具体的には、ディスク装置の空き容量に余裕がある場合にはチェック周期を長くし、空き容量が不足しそうな状況の場合にはチェック周期を短くすることができる。これにより、より適切なタイミングで空き容量に関する注意喚起を行うことができる。また、適切な頻度で空き容量を確認することができるため、データベース管理装置１００の監視コストを軽減することができ、処理性能を向上させることができる。
【００５８】
次に、上述した本実施形態におけるデータベース管理装置１００における各種処理について、フローチャートを用いて説明する。図８は、チェック周期の設定処理の第１の実施例を示すフローチャートである。なお、以下の説明では、チェック対象のディスク装置の空き容量を、すでに取得しているものとして説明する。
【００５９】
図８の例において、チェック周期設定部１２０は、ディスク装置の空き容量が閾値Ａより大きいか否かを判定する（ステップＳ１００）。空き容量が閾値Ａよりも大きい場合、チェック周期設定部１２０は、現在の空き容量を閾値Ａで減算し、減算により得られた値に対し、最大書き込みスループットＴで除算した値（”（現在の空き容量−閾値Ａ）／最大書き込みスループットＴ”）を、次のチェック周期（第１の周期）として設定する（ステップＳ１０２）。なお、空き容量が閾値Ａよりも大きい場合には、空き容量に余裕がある。そのため、チェック周期設定部１２０は、ステップＳ１０２において、固定値（例えば、１分後等）を次の周期として設定してもよい。
【００６０】
また、空き容量が閾値Ａ以下である場合、チェック周期設定部１２０は、空き容量が閾値Ｂより大きいか否かを判定する（ステップＳ１０４）。空き容量が閾値Ｂより大きい場合、チェック周期設定部１２０は、現在の空き容量を閾値Ｂで減算し、減算した値に対して、最大書き込みスループットＴで除算した値を算出し、さらに算出した値を安全率ｐ（ｐ＜１）で乗算した（割り引いた）値（”（現在の空き容量−閾値Ｂ）／最大書き込みスループットＴ×安全率ｐ”）を、次のチェック周期（第２の周期）として設定する（ステップＳ１０６）。
【００６１】
また、空き容量が閾値Ｂ以下である場合、チェック周期設定部１２０は、空き容量が閾値Ｃより大きいか否かを判定する（ステップＳ１０８）。空き容量が閾値Ｃより大きい場合、チェック周期設定部１２０は、データの書き込み処理を実行するタイミングを、次のチェックを行うタイミングとして設定する（ステップＳ１１０）。つまり、ステップＳ１１０の処理では、対象のディスク装置に対して、データの書き込みを行うＳＱＬ処理スレッドを実行するタイミングを、空き容量の次のチェック周期として設定する。なお、このチェック周期は、非周期的なものであるが、便宜上、第３の周期として説明する。また、第３の周期は、上述したＳＱＬ処理スレッドで実行されるチェック周期であるが、容量監視部１３０でも継続して空き容量のチェックを行ってもよい。その場合、チェック周期設定部１２０は、例えば固定値（例えば、１０秒後等）を容量監視部１３０における次のチェック周期として設定する。
【００６２】
また、空き容量が閾値Ｃ以下である場合は、ディスクフルエラーが出力されるため、チェック周期設定部１２０は、チェック周期の設定を行わずにチェック周期の設定処理を終了する。
【００６３】
また、データベース管理装置１００は、現在の空き容量と各閾値等との差が、所定値未満である場合（例えば、空き容量が閾値に近い場合）、異なる条件で算出した周期同士を比較し、比較結果に基づいて次のチェック周期を設定してもよい。上述した内容をチェック周期の設定処理の第２の実施例として、以下に説明する。
【００６４】
図９は、チェック周期の設定処理の第２の実施例を示すフローチャートである。なお、図９の例においては、上述した第１の周期および第２の周期の算出内容については、上述した内容と同一であるため、ここでの具体的な説明は省略する。
【００６５】
図９の例において、チェック周期設定部１２０は、ディスク装置の空き容量が閾値Ａより大きいか否かを判定する（ステップＳ２００）。空き容量が閾値Ａよりも大きい場合、チェック周期設定部１２０は、空き容量を閾値Ａで減算した値（差分値）が、所定値以上か否かを判定する（ステップＳ２０２）。空き容量を閾値Ａで減算した値が所定値以上である場合、チェック周期設定部１２０は、上述した第１の周期を次のチェック周期として設定する（ステップＳ２０４）。
【００６６】
また、空き容量を閾値Ａで減算した値が、所定値未満である場合、チェック周期設定部１２０は、上述した第１の周期よりも第２の周期が大きいか否かを判定する（ステップＳ２０６）。第１の周期が第２の周期よりも大きい場合、チェック周期設定部１２０は、上述したステップＳ２０４と同様に、第１の周期を次のチェック周期として設定する。また、第１の周期が第２の周期以下である場合、チェック周期設定部１２０は、上述した第２の周期を次のチェック周期として設定する（ステップＳ２０８）。つまり、第２の実施例では、空き容量が閾値Ａ近辺である場合に、異なる算出方法で算出された第１の周期と第２の周期とを比較し、周期（間隔）が大きい方の周期を設定する。これにより、適切な周期でディスク装置の空き容量をチェックすることができる。
【００６７】
また、上述したステップＳ２００の処理において、空き容量が閾値Ａ以下である場合、チェック周期設定部１２０は、空き容量が閾値Ｂより大きいか否かを判定する（ステップＳ２１０）。空き容量が閾値Ｂより大きい場合、チェック周期設定部１２０は、空き容量を閾値Ｂで減算した値（差分値）が、所定値以上であるか否かを判定する（ステップＳ２１２）。空き容量を閾値Ｂで減算した値が、所定値以上である場合、上述したステップＳ２０８の処理と同様に、第２の周期を次のチェック周期として設定する。
【００６８】
また、空き容量を閾値Ｂで減算した値が、所定値未満である場合、チェック周期設定部１２０は、閾値Ｂから閾値Ｃを減算し、減算した値を最大書き込みスループットで除算した値を算出し、さらに算出した値を安全率ｐで乗算した値（”（閾値Ｂ−閾値Ｃ）／最大書き込みスループットＴ×安全率ｐ”）を第４の周期として算出する（ステップＳ２１４）。
【００６９】
次に、チェック周期設定部１２０は、第２の周期が第４の周期より大きいか否かを判定する（ステップＳ２１６）。第２の周期が第４の周期より大きい場合、チェック周期設定部１２０は、上述したステップＳ２０８の処理と同様に、第２の周期を次のチェック周期として設定する。また、第２の周期が第４の周期以下である場合、チェック周期設定部１２０は、第４の周期を次のチェック周期として設定する（ステップＳ２１８）。つまり、第２の実施例では、空き容量が閾値Ｂ近辺である場合に、異なる算出方法で算出された第２の周期と第４の周期とを比較し、周期（間隔）が大きい方の周期を設定する。これにより、適切な周期でディスク容量をチェックすることができる。
【００７０】
また、上述したステップＳ２１０の処理において、空き容量が閾値Ｂ以下である場合、チェック周期設定部１２０は、空き容量が閾値Ｃより大きいか否かを判定する（ステップＳ２２０）。空き容量が閾値Ｃより大きい場合、チェック周期設定部１２０は、上述した第３の周期を次のチェック周期として設定する（ステップＳ２２２）。
【００７１】
また、空き容量が閾値Ｃ以下である場合は、ディスクフルエラーが出力されるため、チェック周期設定部１２０は、チェック周期の設定を行わずに処理を終了する。上述したように、第２の実施例により、例えば空き容量が、閾値Ａ近辺または閾値Ｂ近辺である場合に、異なる手法で算出された周期の比較結果に基づいて次のチェック周期が設定されるため、より適切な周期で容量チェックを行うことができる。
【００７２】
ここで、本実施形態におけるチェック周期の設定例について、具体的に説明する。例えば、閾値Ａ＝５００［ＭＢ］、閾値Ｂ＝１００［ＭＢ］、閾値Ｃ＝１０［ＭＢ］とし、ディスク装置の最大書き込みスループットＴ＝１００［ＭＢ／ｓ］とする。また、安全率ｐ＝０．５とする。
【００７３】
例えば、ディスク装置の空き容量が２［ＧＢ］の場合、次のチェック周期は、上述した設定手法を用いると、“（２［ＧＢ］−５００［ＭＢ］）／１００［ＭＢ／ｓ］”＝１５秒後となる。また、ディスク装置の空き容量が５１０［ＭＢ］の場合、上述したチェック周期の設定処理の第２の実施例を用いると、閾値Ａ基準の周期が“（５１０［ＭＢ］−５００［ＭＢ］）／１００［ＭＢ／ｓ］”＝０．１［秒］となり、閾値Ｂ基準の周期が“（５１０［ＭＢ］−１００［ＭＢ］）／１００［ＭＢ／ｓ］×０．５”＝２．０５［秒］となる。したがって、次のチェック周期は、値の大きい２．０５秒後となる。
【００７４】
また、ディスク装置の空き容量が２００ＭＢの場合、閾値Ｂ基準の周期は、“（２００［ＭＢ］−１００［ＭＢ］）／１００［ＭＢ／ｓ］×０．５”＝０．５秒後となる。また、ディスク装置の空き容量が１１０［ＭＢ］の場合、上述したチェック周期の設定処理の第２の実施例を用いると、閾値Ｂ基準の周期は、“（１１０［ＭＢ］−１００［ＭＢ］）／１００［ＭＢ／ｓ］×０．５”＝５０［ｍｓ］となり、閾値Ｃ基準の周期は、“（１００［ＭＢ］−１０［ＭＢ］）／１００［ＭＢ／ｓ］×０．５”＝４５０［ｍｓ］となる。したがって、次のチェック周期は、値の大きい４５０ｍｓ後となる。なお、上述したチェック周期の算出手法については、これに限定されるものではなく、他の算出手法によりチェック周期を設定してもよい。
【００７５】
次に、容量監視部１３０における容量監視処理について、フローチャートを用いて説明する。図１０は、容量監視処理の一例を示すフローチャートである。図１０の例において、容量監視部１３０は、クライアント３００等からのディスク装置の空き容量監視要求を受け付け（ステップＳ３００）、受け付けた要求に基づいて、所定の周期でディスク装置の空き容量を問い合わせる（ステップＳ３０２）。次に、容量監視部１３０は、ディスク装置の空き容量が閾値Ｂより大きいか否かを判定する（ステップＳ３０４）。閾値Ｂより大きい場合、容量監視部１３０は、記憶部１６０に記憶されたエラーチェックフラグ１６４における対象のディスク装置のチェックフラグを「ＦＡＬＳＥ」に設定する（ステップＳ３０６）。また、空き容量が閾値Ｂ以下の場合、エラーチェックフラグ１６４における対象のディスク装置のチェックフラグを「ＴＲＵＥ」に設定する（ステップＳ３０８）。
【００７６】
次に、チェック周期設定部１２０は、上述したチェック周期の設定処理の第１の実施例または第２の実施例等を用いて、次のチェック周期を設定する（ステップＳ３１０）。次に、容量監視部１３０は、設定されたチェック周期に到達したか否かを判定する（ステップＳ３１２）。チェック周期に到達した場合、容量監視部１３０は、ステップＳ３０２の処理に戻り、ディスクの空き容量のチェックを行う。また、チェック周期に到達していない場合、容量監視部１３０は、クライアント３００等からディスク装置の空き容量に対する監視終了要求を受け付けたか否かを判定する（ステップＳ３１４）。監視終了要求を受け付けていない場合、容量監視部１３０は、ステップＳ３１２の処理に戻る。また、監視終了要求を受け付けた場合、容量監視部１３０は、容量監視処理を終了する。なお、図１０に示す処理は、データベース２００におけるディスク装置ごとに行ってもよく、全てのディスク装置に対して一括して行ってもよい。また、図１０に示す処理は、上述したディスク容量監視スレッドとして実行することができる。
【００７７】
次に、処理実行部１４０におけるＳＱＬ実行処理について、フローチャートを用いて説明する。図１１は、ＳＱＬ実行処理の一例を示すフローチャートである。なお、以下の説明では、ＳＱＬ実行処理の一例として、データベース２００にデータを書き込む処理について説明するが、データの読み出し処理等について同様の処理を行ってもよい。図１１の例において、処理実行部１４０は、データの書き込み要求を受け付け（ステップＳ４００）、記憶部１６０に記憶されたエラーチェックフラグ１６４から、対象のディスク装置のチェックフラグを参照し、そのチェックフラグが「ＴＲＵＥ」であるか否かを判定する（ステップＳ４０２）。エラーチェックフラグが「ＴＲＵＥ」である場合、処理実行部１４０は、ＯＳ（制御部１５０）等に対し、ディスク装置の空き容量の問い合わせを行う（ステップＳ４０４）。
【００７８】
次に、処理実行部１４０は、空き容量が閾値Ｃより大きいか否かを判定する（ステップＳ４０６）。空き容量が閾値Ｃ以下の場合、処理実行部１４０は、ディスクフルエラーをクライアント３００等に出力する（ステップＳ４０８）。また、対象のディスク装置のチェックフラグが「ＦＡＬＳＥ」である場合、または空き容量が閾値Ｃより大きい場合、ＯＳ（制御部１５０）等に対し、対象のディスク装置にデータの書き込みを要求し、データの書き込みを実行させる（ステップＳ４１０）。なお、図１１に示す処理は、上述したＳＱＬ処理スレッドとして実行することができる。
【００７９】
なお、上述した実施形態において、データベース管理装置１００は、データベース２００に含まれる各ディスク装置の空き容量に基づく監視を行ったが、これに限定されるものではなく、例えばディスク装置の使用容量（ディスク容量）または使用率等に基づく監視を行ってもよい。
【００８０】
以上説明した少なくとも一つの実施形態によれば、データを記憶するディスク装置の空き容量を監視する容量監視部１３０と、容量監視部１３０により得られるディスク装置の空き容量と、所定書き込み率で書き込まれた場合の将来のディスク装置の空き容量とに基づいて、ディスクフルエラーを出力する制御部１５０とを持つことにより、より適切なタイミングで空き容量に関する注意喚起を行うことができる。
【００８１】
また、少なくとも一つの実施形態によれば、クライアント３００からの要求に基づいて、データを記憶するディスク装置に対するデータの書き込みまたは読み出しを含む処理を実行する処理実行部１４０と、処理実行部１４０によるデータの書き込みまたは読み出しを含む処理とは非同期でディスク装置の空き容量を確認する容量監視部１３０とを持つことにより、データの書き込みまたは読み出し等を行うＳＱＬ処理の実行ごとに、システムコールを呼び出して空き容量のチェックを行う必要がないため、ＳＱＬ処理を高速化することができ、ＳＱＬ処理に対するレスポンス時間を向上させることができる。したがって、例えば、データベース管理装置１００に対してセンサ等を備えた多数のクライアント３００から、大量のセンサデータの登録要求がある場合に、監視コストを軽減することができ、処理性能を向上させることができる。また、データベース管理装置１００のレスポンスタイムを優先させて処理を行うことができる。また、より適切なタイミングで空き容量に関する注意喚起を行うことができる。
【００８２】
また、少なくとも一つの実施形態によれば、データを記憶するディスク装置の空き容量と、容量に関する閾値とを比較した結果に基づいて、空き容量をチェックする周期を変動させ、変動させた周期で、ディスク装置の空き容量を取得する容量監視部１３０と、容量監視部１３０により得られるディスク装置の空き容量に基づいて、ディスクフルエラーを出力する制御部１５０とを持つことにより、例えば空き容量に余裕がある場合には、チェック周期を長くし、逆に空き容量が不足しそうな状況である場合には、チェック周期を短くすることができる。そのため、監視コストを軽減することができ、処理性能を向上させることができる。また、より適切なタイミングで空き容量に関する注意喚起を行うことができる。
【００８３】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【００８４】
１００…データベース管理装置、１１０…設定情報受付部（受付部）、１２０…チェック周期設定部（周期設定部）、１３０…容量監視部、１４０…処理実行部、１５０…制御部、１６０…記憶部、１６２…設定ファイル、１６４…エラーチェックフラグ、２００…データベース、３００…クライアント、４００…ディスクベンダ、５００…ディスク容量監視スレッド、５０２…ＯＳ、５０４…ＳＱＬ処理スレッド
【図１】
2018014144.tif 000003
【図２】
2018014144.tif 000004
【図３】
2018014144.tif 000005
【図４】
2018014144.tif 000006
【図５】
2018014144.tif 000007
【図６】
2018014144.tif 000008
【図７】
2018014144.tif 000009
【図８】
2018014144.tif 000010
【図９】
2018014144.tif 000011
【図１０】
2018014144.tif 000012
【図１１】
2018014144.tif 000013