(57)【特許請求の範囲】
【請求項１】
データベース管理システムが実行されるデータベースサーバと、前記データベースサーバとネットワークを介して接続され、前記データベース管理システムによって管理されるデータが格納されるストレージ装置と、を備える計算機システムであって、
前記データベースサーバは、前記ネットワークに接続されるインターフェイスと、前記インターフェイスに接続される複数の演算装置と、前記演算装置に接続される主記憶装置と、を備え、
前記主記憶装置には、前記データベース管理システムが記憶され、
前記データベース管理システムは、前記演算装置の消費電力を低減するスリープ状態と、前記データの処理を可能とするアクティブ状態とを切り替える演算装置省電力機能を備え、
前記ストレージ装置は、前記データベース管理システムによって管理されるデータが格納される記憶部と、前記記憶部に格納されたデータの読み書きを制御する制御部と、を備え、
前記記憶部は、前記データが読み書きされる記憶領域として、前記データベースサーバに提供されるボリュームが作成され、
前記主記憶装置は、前記記憶部に作成されたボリュームの消費電力情報を保持し、
前記データベース管理システムは、前記演算装置に実行されることによって、
前記ストレージ装置に格納されたデータを読み書きする問い合わせを受け付け、
前記受け付けた問い合わせを解析して、一つ以上の実行計画を作成し、
前記作成された実行計画に基づいてデータを読み書きするボリュームを特定し、
前記特定されたボリュームの消費電力情報に基づいて、前記一つ以上の実行計画について、それぞれ消費電力を算出し、
前記一つ以上の実行計画から、前記算出された消費電力が所定の閾値を満足する実行計画を選択し、
前記選択された実行計画に基づいて、前記制御部にデータの読み書きを指示するための処理を実行し、
前記複数の演算装置から一の演算装置を選択し、当該選択された演算装置とは異なる演算装置に、当該選択された演算装置で実行されている処理を割り当て、
前記選択された演算装置で処理が実行されていない場合には、当該選択された演算装置を前記アクティブ状態から前記スリープ状態に移行させることを特徴とする計算機システム。
【請求項２】
データベース管理システムが実行されるデータベースサーバと、前記データベースサーバとネットワークを介して接続され、前記データベース管理システムによって管理されるデータが格納されるストレージ装置と、を備える計算機システムであって、
前記データベースサーバは、前記ネットワークに接続されるインターフェイスと、前記インターフェイスに接続される演算装置と、前記演算装置に接続される複数の主記憶装置と、を備え、
前記主記憶装置には、前記データベース管理システムが記憶され、
前記データベース管理システムは、前記主記憶装置の消費電力を低減するスリープ状態と、前記データを記憶可能なアクティブ状態とを切り替える主記憶装置省電力機能を備え、
前記ストレージ装置は、前記データベース管理システムによって管理されるデータが格納される記憶部と、前記記憶部に格納されたデータの読み書きを制御する制御部と、を備え、
前記記憶部は、前記データが読み書きされる記憶領域として、前記データベースサーバに提供されるボリュームが作成され、
前記主記憶装置は、前記記憶部に作成されたボリュームの消費電力情報を保持し、
前記データベース管理システムは、前記演算装置に実行されることによって、
前記ストレージ装置に格納されたデータを読み書きする問い合わせを受け付け、
前記受け付けた問い合わせを解析して、一つ以上の実行計画を作成し、
前記作成された実行計画に基づいてデータを読み書きするボリュームを特定し、
前記特定されたボリュームの消費電力情報に基づいて、前記一つ以上の実行計画について、それぞれ消費電力を算出し、
前記一つ以上の実行計画から、前記算出された消費電力が所定の閾値を満足する実行計画を選択し、
前記選択された実行計画に基づいて、前記制御部にデータの読み書きを指示するための処理を実行し、
前記複数の主記憶装置から一の主記憶装置を選択し、当該選択された主記憶装置とは異なる主記憶装置に、当該選択された主記憶装置に記憶されているデータを割り当て、
前記選択された主記憶装置にデータが記憶されていない場合には、当該選択された主記憶装置を前記アクティブ状態から前記スリープ状態に移行させることを特徴とする計算機システム。
【請求項３】
データベース管理システムが実行されるデータベースサーバと、前記データベースサーバとネットワークを介して接続され、前記データベース管理システムによって管理されるデータが格納されるストレージ装置と、を備える計算機システムであって、
前記データベースサーバは、前記ネットワークに接続されるインターフェイスと、前記インターフェイスに接続される演算装置と、前記演算装置に接続される主記憶装置と、を備え、
前記主記憶装置には、前記データベース管理システムが記憶され、
前記ストレージ装置は、前記データベース管理システムによって管理されるデータが格納される記憶部と、前記記憶部に格納されたデータの読み書きを制御する制御部と、を備え、
前記制御部は、前記ストレージ装置の消費電力を低減するスリープ状態と、前記データを読み書き可能なアクティブ状態とを切り替えるストレージ省電力機能を備え、
前記記憶部は、前記データが読み書きされる記憶領域として、前記データベースサーバに提供されるボリュームが複数作成され、
前記主記憶装置は、前記記憶部に作成されたボリュームの消費電力情報を保持し、
前記データベース管理システムは、前記演算装置に実行されることによって、
前記ストレージ装置に格納されたデータを読み書きする問い合わせを受け付け、
前記受け付けた問い合わせを解析して、実行計画を作成し、
前記作成された実行計画に基づいて、前記制御部にデータの読み書きを指示し、
前記複数のボリュームに分散して記憶されているデータを読み出す問い合わせを受け付けた場合には、前記読み出されるデータが格納されている複数のボリュームのうち一部のボリュームを除外してデータの読み出しを前記制御部に指示し、
前記除外されたボリュームを前記アクティブ状態から前記スリープ状態に移行させるように前記制御部に指示することを特徴とする計算機システム。
【請求項４】
前記実行計画は、前記ストレージ装置に格納されたデータを読み書きするオペレーションによって構成され、
前記データベース管理システムは、前記演算装置に実行されることによって、
前記オペレーションを並列して実行し、
前記各オペレーションの実行結果に基づいて、前記受け付けた問い合わせの結果を生成することを特徴とする請求項１から請求項３のいずれか１項に記載の計算機システム。
【請求項５】
前記データベース管理システムは、前記演算装置に実行されることによって、
前記オペレーションを同時に実行可能な多重度の上限を設定することによって、前記実行計画を最適化することを特徴とする請求項４に記載の計算機システム。
【請求項６】
前記制御部は、
前記データベースサーバから前記データにアクセスする入出力命令を受信し、当該アクセスするデータを格納するボリュームが前記スリープ状態である場合には、当該受信した入出力命令の処理を保留し、
前記スリープ状態のボリュームに対する入出力命令が所定数以上になった場合には、当該ボリュームを前記アクティブ状態に移行し、
前記保留された入出力命令の処理を実行することを特徴とする請求項３に記載の計算機システム。
【請求項７】
前記制御部は、
前記データベースサーバから前記データにアクセスする入出力命令を受信し、当該アクセスするデータを格納するボリュームが前記スリープ状態である場合には、当該受信した入出力命令の処理を保留し、
前記スリープ状態のボリュームが前記スリープ状態となってから所定時間以上経過した場合には、当該ボリュームを前記アクティブ状態に移行し、
前記保留された入出力命令の処理を実行することを特徴とする請求項３に記載の計算機システム。
【請求項８】
前記制御部は、
前記ボリュームに入出力命令を発行し、
前記発行された入出力命令の実行による前記ボリュームの消費電力を計測し、
前記計測された消費電力に基づいて前記ボリュームの消費電力情報を生成し、
前記データベース管理システムは、前記演算装置に実行されることによって、前記ストレージ装置から前記ボリュームの消費電力情報を取得することを特徴とする請求項３に記載の計算機システム。
【請求項９】
前記データベース管理システムは、前記演算装置に実行されることによって、
前記演算装置に演算命令を発行し、
前記発行された演算命令の実行による当該演算装置の消費電力を計測し、
前記計測された消費電力に基づいて、前記演算装置の消費電力情報を生成することを特徴とする請求項１に記載の計算機システム。
【請求項１０】
前記データベース管理システムは、前記演算装置に実行されることによって、
前記主記憶装置の状態を変更し、
前記主記憶装置の状態の変更による当該主記憶装置の消費電力を計測し、
前記計測された消費電力に基づいて、前記主記憶装置の消費電力情報を生成することを特徴とする請求項２に記載の計算機システム。
【請求項１１】
データベース管理システムが実行されるデータベースサーバと、前記データベースサーバとネットワークを介して接続され、前記データベース管理システムによって管理されるデータが格納されるストレージ装置と、を備える計算機システムにおいて実行される省電力化方法であって、
前記データベースサーバは、前記ネットワークに接続されるインターフェイスと、前記インターフェイスに接続される複数の演算装置と、前記演算装置に接続される主記憶装置と、を備え、
前記主記憶装置には、前記データベース管理システムが記憶され、
前記データベース管理システムは、前記演算装置の消費電力を低減するスリープ状態と、前記データの処理を可能とするアクティブ状態とを切り替える演算装置省電力機能を備え、
前記ストレージ装置は、前記データベース管理システムによって管理されるデータが格納される記憶部と、前記記憶部に格納されたデータの読み書きを制御する制御部と、を備え、
前記記憶部は、前記データが読み書きされる記憶領域として、前記データベースサーバに提供されるボリュームが作成され、
前記主記憶装置は、前記記憶部に作成されたボリュームの消費電力情報を保持し、
前記省電力化方法は、
前記演算装置が、前記ストレージ装置に格納されたデータを読み書きする問い合わせを受け付け、
前記演算装置が、前記受け付けた問い合わせを解析して、一つ以上の実行計画を作成し、
前記演算装置が、前記作成された実行計画に基づいてデータを読み書きするボリュームを特定し、
前記演算装置が、前記特定されたボリュームの消費電力情報に基づいて、前記一つ以上の実行計画について、それぞれ消費電力を算出し、
前記演算装置が、前記一つ以上の実行計画から、前記算出された消費電力が所定の閾値を満足する実行計画を選択し、
前記演算装置が、前記選択された実行計画に基づいて、前記制御部にデータの読み書きを指示するための処理を実行し、
前記演算装置が、前記複数の演算装置から一の演算装置を選択し、当該選択された演算装置とは異なる演算装置に、当該選択された演算装置で実行されている処理を割り当て、
前記演算装置が、前記選択された演算装置で処理が実行されていない場合には、当該選択された演算装置を前記アクティブ状態から前記スリープ状態に移行させることを特徴とする省電力化方法。
【請求項１２】
データベース管理システムが実行されるデータベースサーバと、前記データベースサーバとネットワークを介して接続され、前記データベース管理システムによって管理されるデータが格納されるストレージ装置と、を備える計算機システムにおいて実行される省電力化方法であって、
前記データベースサーバは、前記ネットワークに接続されるインターフェイスと、前記インターフェイスに接続される演算装置と、前記演算装置に接続される複数の主記憶装置と、を備え、
前記主記憶装置には、前記データベース管理システムが記憶され、
前記データベース管理システムは、前記主記憶装置の消費電力を低減するスリープ状態と、前記データを記憶可能なアクティブ状態とを切り替える主記憶装置省電力機能を備え、
前記ストレージ装置は、前記データベース管理システムによって管理されるデータが格納される記憶部と、前記記憶部に格納されたデータの読み書きを制御する制御部と、を備え、
前記記憶部は、前記データが読み書きされる記憶領域として、前記データベースサーバに提供されるボリュームが作成され、
前記主記憶装置は、前記記憶部に作成されたボリュームの消費電力情報を保持し、
前記省電力化方法は、
前記演算装置が、前記ストレージ装置に格納されたデータを読み書きする問い合わせを受け付け、
前記演算装置が、前記受け付けた問い合わせを解析して、一つ以上の実行計画を作成し、
前記演算装置が、前記作成された実行計画に基づいてデータを読み書きするボリュームを特定し、
前記演算装置が、前記特定されたボリュームの消費電力情報に基づいて、前記一つ以上の実行計画について、それぞれ消費電力を算出し、
前記演算装置が、前記一つ以上の実行計画から、前記算出された消費電力が所定の閾値を満足する実行計画を選択し、
前記演算装置が、前記選択された実行計画に基づいて、前記制御部にデータの読み書きを指示するための処理を実行し、
前記演算装置が、前記複数の主記憶装置から一の主記憶装置を選択し、当該選択された主記憶装置とは異なる主記憶装置に、当該選択された主記憶装置に記憶されているデータを割り当て、
前記演算装置が、前記選択された主記憶装置にデータが記憶されていない場合には、当該選択された主記憶装置を前記アクティブ状態から前記スリープ状態に移行させることを特徴とする省電力化方法。
【請求項１３】
データベース管理システムが実行されるデータベースサーバと、前記データベースサーバとネットワークを介して接続され、前記データベース管理システムによって管理されるデータが格納されるストレージ装置と、を備える計算機システムにおいて実行される省電力化方法であって、
前記データベースサーバは、前記ネットワークに接続されるインターフェイスと、前記インターフェイスに接続される演算装置と、前記演算装置に接続される主記憶装置と、を備え、
前記主記憶装置には、前記データベース管理システムが記憶され、
前記ストレージ装置は、前記データベース管理システムによって管理されるデータが格納される記憶部と、前記記憶部に格納されたデータの読み書きを制御する制御部と、を備え、
前記制御部は、前記ストレージ装置の消費電力を低減するスリープ状態と、前記データを読み書き可能なアクティブ状態とを切り替えるストレージ省電力機能を備え、
前記記憶部は、前記データが読み書きされる記憶領域として、前記データベースサーバに提供されるボリュームが複数作成され、
前記主記憶装置は、前記記憶部に作成されたボリュームの消費電力情報を保持し、
前記省電力化方法は、
前記演算装置が、前記ストレージ装置に格納されたデータを読み書きする問い合わせを受け付け、
前記演算装置が、前記受け付けた問い合わせを解析して、実行計画を作成し、
前記演算装置が、前記作成された実行計画に基づいて、前記制御部にデータの読み書きを指示し、
前記演算装置が、前記複数のボリュームに分散して記憶されているデータを読み出す問い合わせを受け付けた場合には、前記読み出されるデータが格納されている複数のボリュームのうち一部のボリュームを除外してデータの読み出しを前記制御部に指示し、
前記演算装置が、前記除外されたボリュームを前記アクティブ状態から前記スリープ状態に移行させるように前記制御部に指示することを特徴とする省電力化方法。
【請求項１４】
データを格納するストレージ装置に接続され、当該データを管理するデータベース管理システムが実行される計算機であって、
前記ストレージ装置に接続されるインターフェイスと、前記インターフェイスに接続される演算装置と、前記演算装置に接続される主記憶装置と、を備え、
前記主記憶装置には、前記データベース管理システムが記憶され、
前記データベース管理システムは、前記演算装置の消費電力を低減するスリープ状態と、前記データの処理を可能とするアクティブ状態とを切り替える演算装置省電力機能を備え、
前記ストレージ装置は、前記データが読み書きされる記憶領域であるボリュームを提供し、
前記主記憶装置は、前記ストレージ装置によって提供されたボリュームの消費電力情報を保持し、
前記演算装置は、
前記ストレージ装置に格納されたデータを読み書きする問い合わせを受け付け、
前記受け付けた問い合わせを解析して、一つ以上の実行計画を作成し、
前記作成された実行計画に基づいてデータを読み書きするボリュームを特定し、
前記特定されたボリュームの消費電力情報に基づいて、前記一つ以上の実行計画について、それぞれ消費電力を算出し、
前記一つ以上の実行計画から、前記算出された消費電力が所定の閾値を満足する実行計画を選択し、
前記選択された実行計画に基づいて、前記ストレージ装置にデータの読み書きを指示するための処理を実行し、
前記複数の演算装置から一の演算装置を選択し、当該選択された演算装置とは異なる演算装置に、当該選択された演算装置で実行されている処理を割り当て、
前記選択された演算装置で処理が実行されていない場合には、当該選択された演算装置を前記アクティブ状態から前記スリープ状態に移行させることを特徴とする計算機。
【請求項１５】
データを格納するストレージ装置に接続され、当該データを管理するデータベース管理システムが実行される計算機であって、
前記ストレージ装置に接続されるインターフェイスと、前記インターフェイスに接続される演算装置と、前記演算装置に接続される主記憶装置と、を備え、
前記主記憶装置には、前記データベース管理システムが記憶され、
前記データベース管理システムは、前記主記憶装置の消費電力を低減するスリープ状態と、前記データを記憶可能なアクティブ状態とを切り替える主記憶装置省電力機能を備え、
前記ストレージ装置は、前記データが読み書きされる記憶領域であるボリュームを提供し、
前記主記憶装置は、前記ストレージ装置によって提供されたボリュームの消費電力情報を保持し、
前記演算装置は、
前記ストレージ装置に格納されたデータを読み書きする問い合わせを受け付け、
前記受け付けた問い合わせを解析して、一つ以上の実行計画を作成し、
前記作成された実行計画に基づいてデータを読み書きするボリュームを特定し、
前記特定されたボリュームの消費電力情報に基づいて、前記一つ以上の実行計画について、それぞれ消費電力を算出し、
前記一つ以上の実行計画から、前記算出された消費電力が所定の閾値を満足する実行計画を選択し、
前記選択された実行計画に基づいて、前記ストレージ装置にデータの読み書きを指示するための処理を実行し、
前記複数の主記憶装置から一の主記憶装置を選択し、当該選択された主記憶装置とは異なる主記憶装置に、当該選択された主記憶装置に記憶されているデータを割り当て、
前記選択された主記憶装置にデータが記憶されていない場合には、当該選択された主記憶装置を前記アクティブ状態から前記スリープ状態に移行させることを特徴とする計算機。
【請求項１６】
データを格納するストレージ装置に接続され、当該データを管理するデータベース管理システムが実行される計算機であって、
前記ストレージ装置に接続されるインターフェイスと、前記インターフェイスに接続される演算装置と、前記演算装置に接続される主記憶装置と、を備え、
前記主記憶装置には、前記データベース管理システムが記憶され、
前記ストレージ装置は、
消費電力を低減するスリープ状態と、前記データを読み書き可能なアクティブ状態とを切り替える省電力機能を備え、
前記データが読み書きされる記憶領域であるボリュームを複数提供し、
前記主記憶装置は、前記ストレージ装置によって提供されたボリュームの消費電力情報を保持し、
前記演算装置は、
前記ストレージ装置に格納されたデータを読み書きする問い合わせを受け付け、
前記受け付けた問い合わせを解析して、実行計画を作成し、
前記作成された実行計画に基づいて、データの読み書きを前記ストレージ装置に指示し、
前記複数のボリュームに分散して記憶されているデータを読み出す問い合わせを受け付けた場合には、前記読み出されるデータが格納されている複数のボリュームのうち一部のボリュームを除外してデータの読み出しを前記ストレージ装置に指示し、
前記除外されたボリュームを前記アクティブ状態から前記スリープ状態に移行させるように前記ストレージ装置に指示することを特徴とする計算機。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機システムの消費電力を調整する技術に関し、特に、データベース管理システムにおける消費電力を調整する技術に関する。
【背景技術】
【０００２】
データベース管理システムでは、データを入出力するクエリの実行要求を受け付けると、クエリの実行計画を作成し、データの入出力と処理が実行される。従来技術においては、主記憶容量又は二次記憶容量などの利用可能な計算機資源の制約下において、処理性能が最大化されるようにクエリ実行計画が生成されていた。
【０００３】
近年、計算機システムには、性能の向上に加え、電力消費の低減が強く求められており、ディスクドライブのスピンダウンなど、多様な省電力化機能がストレージ装置に具備されるようになりつつある（特許文献１、特許文献２、非特許文献１、非特許文献２参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−１０８３１７号公報
【特許文献２】特開２００７−１０２３２２号公報
【非特許文献】
【０００５】
【非特許文献１】S.W.Son、他2名、"Disk Layout Optimization for Reducing Energy Consumption."、In Proc. Int'l Conf. on Supercomputing、2005、p274-283
【非特許文献２】J.Gray、他2名、"Parity Striping of Disc Arrays: Low-Cost Reliable Storage with Acceptable Throughput."、In Proceedings of the 16th Very Large Database Conference、1990、p148-160
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、データベース管理システムにおいて、クエリ実行計画は、計算機システムの省電力機能を考慮せずに生成されるため、消費電力を低減させるには不十分であった。
【０００７】
本発明は、データベース管理システムにおいて、省電力化機能を考慮してクエリ実行計画を最適化することによって、消費電力を低減させることを可能とする計算機システムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、データベース管理システムが実行されるデータベースサーバと、前記データベースサーバとネットワークを介して接続され、前記データベース管理システムによって管理されるデータが格納されるストレージ装置と、を備える計算機システムであって、前記データベースサーバは、前記ネットワークに接続されるインターフェイスと、前記インターフェイスに接続される複数の演算装置と、前記演算装置に接続される主記憶装置と、を備え、前記主記憶装置には、前記データベース管理システムが記憶され、前記データベース管理システムは、前記演算装置の消費電力を低減するスリープ状態と、前記データの処理を可能とするアクティブ状態とを切り替える演算装置省電力機能を備え、前記ストレージ装置は、前記データベース管理システムによって管理されるデータが格納される記憶部と、前記記憶部に格納されたデータの読み書きを制御する制御部と、を備え、前記記憶部は、前記データが読み書きされる記憶領域として、前記データベースサーバに提供されるボリュームが作成され、前記主記憶装置は、前記記憶部に作成されたボリュームの消費電力情報を保持し、前記データベース管理システムは、前記演算装置に実行されることによって、前記ストレージ装置に格納されたデータを読み書きする問い合わせを受け付け、前記受け付けた問い合わせを解析して、一つ以上の実行計画を作成し、前記作成された実行計画に基づいてデータを読み書きするボリュームを特定し、前記特定されたボリュームの消費電力情報に基づいて、前記一つ以上の実行計画について、それぞれ消費電力を算出し、前記一つ以上の実行計画から、前記算出された消費電力が所定の閾値を満足する実行計画を選択し、前記選択された実行計画に基づいて、前記制御部にデータの読み書きを指示するための処理を実行し、前記複数の演算装置から一の演算装置を選択し、当該選択された演算装置とは異なる演算装置に、当該選択された演算装置で実行されている処理を割り当て、前記選択された演算装置で処理が実行されていない場合には、当該選択された演算装置を前記アクティブ状態から前記スリープ状態に移行させる。
【発明の効果】
【０００９】
本発明の代表的な実施形態によると、計算機システムの省電力機能が有効に機能するように実行計画を生成することによって消費電力を低減させることができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の第１実施形態の計算機システムの構成を示す図である。
【図２】本発明の第１実施形態の計算機システムにおける処理手順の概要を説明する図である。
【図３】本発明の第１実施形態のクエリ受付処理の手順を示すフローチャートである。
【図４】本発明の第１実施形態のクエリ実行計画生成処理の手順を示すフローチャートである。
【図５】本発明の第１実施形態のストレージ電力特性情報取得処理の手順を示すフローチャートである。
【図６】本発明の第１実施形態のストレージ電力特性情報送信処理の手順を示すフローチャートである。
【図７】本発明の第１実施形態のストレージ電力特性情報生成処理の手順を示すフローチャートである。
【図８】本発明の第１実施形態の実行コスト見積式構成処理の手順を示すフローチャートである。
【図９】本発明の第１実施形態のクエリ実行計画最適化処理の手順を示すフローチャートである。
【図１０】本発明の第１実施形態のクエリ実行計画管理表の一例を示す図である。
【図１１】本発明の第１実施形態のクエリ実行計画決定処理の手順を示すフローチャートである。
【図１２】本発明の第１実施形態のクエリ実行処理の手順を示すフローチャートである。
【図１３】本発明の第１実施形態の電力制御命令発行処理の手順を示すフローチャートである。
【図１４】本発明の第１実施形態のアウトオブオーダ実行処理とデータタスク駆動処理の手順を示すフローチャートである。
【図１５】本発明の第１実施形態のタスク生成処理の手順を示すフローチャートである。
【図１６】本発明の第１実施形態のインオーダ実行処理との手順を示すフローチャートである。
【図１７】本発明の第１実施形態の入出力処理の手順を示すフローチャートである。
【図１８】本発明の第１実施形態のボリューム状態情報の一例を示す図である。
【図１９】本発明の第１実施形態の電力制御処理の手順を示すフローチャートである。
【図２０】本発明の第１実施形態のスリープ処理の手順を示すフローチャートである。
【図２１】本発明の第１実施形態のデータベースの表及び索引を格納するボリュームの構成を説明する図である。
【図２２】本発明の第１実施形態のデータベースの各表の構成を説明する図である。
【図２３】本発明の第１実施形態の外部ストレージ装置のストレージ電力特性情報を示す図である。
【図２４】本発明の第１実施形態のデータベースサーバで実行され、外部ストレージ装置からデータを取得するためのクエリの例を示す図である。
【図２５】本発明の第１実施形態のハッシュ結合によってクエリ１を処理するクエリ実行計画案１を説明する図であり、（Ａ）はクエリ実行計画案１の内容、（Ｂ）は各ボリュームの状態を時系列順に示す図である。
【図２６】本発明の第１実施形態の索引結合（インオーダ実行）によってクエリ１を処理するクエリ実行計画案２を説明する図であり、（Ａ）はクエリ実行計画案２の内容、（Ｂ）は各ボリュームの状態を時系列順に示す図である。
【図２７】本発明の第１実施形態の索引結合（アウトオブデータ実行）によってクエリ１を処理するクエリ実行計画案３を説明する図であり、（Ａ）はクエリ実行計画案３の内容、（Ｂ）は各ボリュームの状態を時系列順に示す図である。
【図２８】本発明の第１実施形態において閾値を指定せずに実行時間の低減を優先してクエリ１を処理した場合のクエリ実行計画表の一例を示す図である。
【図２９】本発明の第１実施形態において最大消費電力を２５０Ｗとする閾値を指定し、実行時間の低減を優先してクエリ１を処理した場合のクエリ実行計画表の一例を示す図である。
【図３０】本発明の第１実施形態において閾値を指定せずに実行時間の低減を優先してクエリ２を処理した場合のクエリ実行計画表の一例を示す図である。
【図３１】本発明の第２実施形態の計算機システムの構成を示す図である。
【図３２】本発明の第２実施形態のサーバ電力特性情報生成処理の手順を示すフローチャートである。
【図３３】本発明の第２実施形態の電力制御命令発行処理の手順を示すフローチャートである。
【図３４】本発明の第２実施形態のＣＰＵ電力制御処理の手順を示すフローチャートである。
【図３５】本発明の第２実施形態の主記憶電力制御処理の手順を示すフローチャートである。
【図３６】本発明の第２実施形態のＣＰＵ・主記憶状態情報の一例を示す図であり、（Ａ）はＣＰＵの状態、（Ｂ）は主記憶の状態を示している。
【図３７】本発明の第２実施形態のタスク生成処理の手順を示すフローチャートである。
【図３８】本発明の第２実施形態のデータベースサーバのＣＰＵ・主記憶電力特性情報を示す図である。
【図３９】本発明の第２実施形態のデータベースサーバにおけるＣＰＵに対する電力制御による消費電力の低減を説明する図であり、（Ａ）は電力制御実行前、（Ｂ）は電力制御実行後を示す。
【図４０】本発明の第２実施形態のデータベースサーバにおける主記憶に対する電力制御による消費電力の低減を説明する図であり、（Ａ）は電力制御実行前、（Ｂ）は電力制御実行後を示す。
【図４１】本発明の第３実施形態の計算機システムの構成を示す図である。
【図４２】本発明の第３実施形態のクエリ実行計画生成処理の手順を示すフローチャートである。
【図４３】本発明の第３実施形態の部分処理クエリ実行計画案生成処理の手順を示すフローチャートである。
【図４４】本発明の第３実施形態のボリューム状態情報取得処理の手順を示すフローチャートである。
【図４５】本発明の第３実施形態のボリューム状態情報送信処理の手順を示すフローチャートである。
【図４６】本発明の第３実施形態のボリューム及びＣＰＵのスリープ計画表の一例を示す図である。
【図４７】本発明の第３実施形態のアウトオブオーダ実行処理の手順を示すフローチャートである。
【図４８】本発明の第３実施形態のインオーダ実行処理の手順を示すフローチャートである。
【図４９】本発明の第３実施形態のデータベースの構成を説明する図である。
【図５０】本発明の第３実施形態の外部ストレージ装置のストレージ電力特性情報を示す図である。
【図５１】本発明の第３実施形態のデータベースサーバで実行されるクエリの一例を示す図である。
【図５２】本発明の第３実施形態の索引結合（アウトオブオーダ実行）によってクエリ１を処理するクエリ実行計画案３を説明する図である。
【図５３】本発明の第３実施形態において部分実行を行わない場合のクエリ実行計画案３による処理性能を示す図であり、（Ａ）は各ボリュームの性能情報、（Ｂ）は各ボリュームの状態を示す。
【図５４】本発明の第３実施形態において部分実行を行う場合のクエリ実行計画案３による処理性能を示す図であり、（Ａ）はスリープ計画表、（Ｂ）は各ボリュームの性能情報、（Ｃ）は各ボリュームの状態を示す。
【図５５】本発明の第４実施形態の計算機システムの構成を示す図である。
【図５６】本発明の第４実施形態の入出力命令発行処理の手順を示すフローチャートである。
【図５７】本発明の第４実施形態の入出力処理の手順を示すフローチャートである。
【図５８】本発明の第４実施形態の入出力命令保留処理の手順を示すフローチャートである。
【図５９】本発明の第４実施形態の保留入出力命令再開処理の手順を示すフローチャートである。
【図６０】本発明の第４実施形態の保留入出力情報の一例を示す図である。
【図６１】本発明の第４実施形態において遅延可能フラグを付与せずに入出力命令を発行した場合の各ボリュームの状態を説明する図である。
【図６２】本発明の第４実施形態において遅延可能フラグを付与して入出力命令を発行した場合の各ボリュームの状態を説明する図である。
【発明を実施するための形態】
【００１１】
（第１実施形態）
本発明の第１実施形態のデータベースシステム（計算機システム１０）では、アプリケーションプログラム１３０によって業務処理を実行し、データベースサーバ１００を介して外部ストレージ装置２００に格納されたデータを読み書きする。以下、本発明の第１実施形態の計算機システム１０の構成について説明する。
【００１２】
図１は、本発明の第１実施形態の計算機システム１０の構成を示す図である。本発明の第１実施形態の計算機システム１０は、データベースサーバ１００及び外部ストレージ装置２００を含む。データベースサーバ１００及び外部ストレージ装置２００は、それぞれ複数含まれるようにしてもよい。データベースサーバ１００及び外部ストレージ装置２００はそれぞれ、別の筐体にあってもよく、もしくは、同一の筐体にあってもよい。また、データベースサーバ１００及び外部ストレージ装置２００はそれぞれ、計算機システムもしくはクラウド上に構成された仮想的な計算機及びストレージであってもよい。
【００１３】
データベースサーバ１００及び外部ストレージ装置２００は、ネットワーク２０及びネットワーク３０の２種類のネットワークによって接続されている。ネットワーク２０は、データを送受信するためのネットワークであり、本実施形態では大容量のデータの送受信に適したＳＡＮ（Storage Area Network）である。ネットワーク３０は、コマンドなどの制御情報が送受信されるネットワークであり、例えば、インターネットプロトコル（ＩＰ）ネットワークである。なお、ネットワーク２０及びネットワーク３０を双方の機能を兼ねる単一のネットワークとしてもよい。また、ネットワーク２０及びネットワーク３０は、有線あってもよいし、無線であってもよい。ネットワーク２０及びネットワーク３０は、ＳＣＳＩ（Small Computer System Interface）等のバスであってもよい。
【００１４】
データベースサーバ１００は、データの入出力要求（クエリ）を受け付けて、外部ストレージ装置２００に格納されたデータを読み書きする。データの入出力要求は、ネットワークを介して接続された他の計算機からの入力であってもよいし、データベースサーバ１００で実行されるアプリケーションプログラムからの入力であってもよい。
【００１５】
データベースサーバ１００は、ＣＰＵ（演算装置）１１０、主記憶（主記憶装置）１２０、ホストバスアダプタ（ＨＢＡ）１６０、ネットワークインターフェイスカード（ＮＩＣ）１６１、ストレージ装置１８０、電源監視部１９０及び電源１９１を含む。
【００１６】
ＣＰＵ１１０は、主記憶１２０に記憶されたプログラムを実行することによって、各種処理を実行する。主記憶１２０は、ＣＰＵ１１０によって実行されるプログラムを記憶する。主記憶１２０に記憶されるプログラムは、例えば、ストレージ装置１８０に格納されたプログラムを読み出してもよいし、図示しない読み出し専用メモリ（ＲＯＭ）に記憶されているプログラムを読み出してもよい。本実施形態では、図１に示すように、主記憶１２０は、アプリケーションプログラム１３０と、オペレーティングシステム（ＯＳ）１４０と、データベース管理システム（ＤＢＭＳ）１５０と、を記憶する。また、主記憶１２０は、各プログラムの実行に必要なデータを一時的に記憶する。
【００１７】
アプリケーションプログラム１３０は、ＣＰＵ１１０に実行されることによって、データベースサーバ１００に業務処理を実行させる。アプリケーションプログラム１３０は、例えば、Ｗｅｂアプリケーションなどである。なお、データベースサーバ１００にアプリケーションプログラム１３０を配置せずに、アプリケーションプログラム１３０を実行するための計算機（アプリケーションサーバ）を配置して当該計算機がデータベースサーバ１００に入出力要求を送信し、データベースサーバ１００を介して外部ストレージ装置２００に格納されたデータを読み書きするようにしてもよい。
【００１８】
オペレーティングシステム（ＯＳ）１４０は、アプリケーションプログラム１３０が各種資源（リソース）を利用するためのインターフェイスを提供したり、リソースを管理したりする。
【００１９】
ＤＢＭＳ１５０は、外部ストレージ装置２００に格納されたデータを管理する。また、ＤＢＭＳ１５０は、外部ストレージ装置２００だけでなく、データベースサーバ１００に備えられたストレージ装置１８０に格納されたデータを管理してもよく、図示しない他の外部ストレージ装置に格納されたデータを管理するようにしてもよい。
【００２０】
ＤＢＭＳ１５０は、クエリ受付部１５１、クエリ実行計画生成部１５２、クエリ実行部１５３及びクエリ実行特性情報１５４を含む。クエリ受付部１５１、クエリ実行計画生成部１５２及びクエリ実行部１５３は、ＣＰＵ１１０によって実行されるプログラムを含む。
【００２１】
クエリ受付部１５１は、外部の計算機から又はアプリケーションプログラム１３０の実行により、入力されたデータの入出力要求を受け付け、クエリ実行計画生成部１５２、クエリ実行部１５３によってクエリを実行し、クエリの実行結果を要求元に送信する。クエリは、例えば、ＳＱＬによって記載されている。
【００２２】
クエリ実行計画生成部１５２は、クエリ受付部１５１によって受け付けられたクエリを解析し、外部ストレージ装置２００に格納されたデータにアクセスするための手順（クエリ実行計画）を生成する。本実施形態では、クエリ実行計画生成部１５２は、指定されたポリシーに基づいてクエリ実行計画を生成する。クエリ実行計画生成部１５２による処理の詳細については図４から図１１にて後述する。
【００２３】
クエリ実行部１５３は、クエリ実行計画生成部１５２によって生成されたクエリ実行計画に基づいて外部ストレージ装置２００からデータを取得する。クエリ実行部１５３による処理の詳細については図１２から図１６にて後述する。
【００２４】
ホストバスアダプタ（ＨＢＡ）１６０は、ネットワーク２０に接続するためのインターフェイスである。ネットワークインターフェイスカード（ＮＩＣ）１６１は、ネットワーク３０に接続するためのインターフェイスである。
【００２５】
ストレージ装置１８０は、データベースサーバ１００に備えられる記憶装置である。ストレージ装置１８０は、不揮発性の記憶媒体であり、主記憶１２０にロードされて実行されるアプリケーションプログラム１３０などのプログラム、当該プログラムの実行に必要な制御情報などが格納される。また、アプリケーションプログラム１３０、ＯＳ１４０、ＤＢＭＳ１５０によって管理されるデータを格納してもよい。
【００２６】
電源監視部１９０は、電源１９１からの電力の供給状態を監視する。例えば、電源１９１からの電力供給の遮断を検知した場合にはデータベースサーバ１００の電源を停止させるための処理（シャットダウン）を実行する。電力供給の遮断は、例えば、所定の電圧以下の状態が所定時間継続した場合に検知される。電源１９１は、例えば、複数の電源モジュールによって構成される。また、電源１９１には、無停電電源装置（ＵＰＳ）などのバックアップ電源を含み、外部からの電源の供給が遮断された後も所定時間電源の供給を継続することができるように構成されている。これにより、電源の供給が遮断された後にバックアップ電源から電源が供給されている間に安全にデータベースサーバ１００の電源を遮断することができる。また、電源監視部１９０は、電源１９１からの電源の供給状態を計測する。電源監視部１９０が計測する項目は、電力供給の消費電力や（積算）電力量等である。電源監視部１９０及び電源１９１は、データベースサーバ１００の筐体内に構成されていてもよく、また、電力分配装置（ＰＤＵ）等の別の筐体内に構成されていてもよい。
【００２７】
外部ストレージ装置２００は、データベースサーバ１００によって読み書きされるデータを格納する。外部ストレージ装置２００は、制御部２１０、ホストバスアダプタ（ＨＢＡ）２６０、ネットワークインターフェイスカード（ＮＩＣ）２６１、ストレージ装置群２８０、電源監視部２９０及び電源２９１を含む。また、外部ストレージ装置２００には、図示しない冷却部などが含まれる。冷却部は、例えば、複数の冷却ファンによって構成される。なお、外部ストレージ装置２００は、データベースサーバ１００に読み書きされるデータ以外のデータを格納してもよい。
【００２８】
制御部２１０は、データベースサーバ１００から送信されたデータの入出力要求に基づいて、ストレージ装置群２８０に格納されたデータを読み書きする。制御部２１０は、外部ストレージ装置２００を制御し、演算装置及び記憶装置などのハードウェアと演算装置によって実行されるプログラムなどのソフトウェアによって構成される。
【００２９】
また、制御部２１０は、ストレージ装置群２８０によって提供される一又は複数の記憶領域を論理的に一つのボリュームとして、データベースサーバ１００などの外部の計算機に提供する。外部ストレージ装置２００は、一又は複数のボリュームを提供する。データベースサーバ１００は、各ボリュームに対してデータを読み書きする。
【００３０】
制御部２１０は、入出力処理部２１１、ストレージ電力制御部２１２、ボリューム状態情報２１３、ストレージ電力特性情報管理部２１４及びストレージ電力特性情報２１５を含む。
【００３１】
入出力処理部２１１は、データベースサーバ１００などから送信されたストレージ装置群２８０に格納されたデータの入出力要求を受け付ける。また、入出力処理部２１１は、データの入出力要求の結果をデータの要求元に送信する。
【００３２】
ストレージ電力制御部２１２は、主としてストレージ装置群２８０の消費電力を制御する。例えば、一定時間アクセスされなかったストレージ装置のディスクドライブの回転を減速させたり、停止させたりするなどして、消費電力を削減する（省電力機能）。
【００３３】
ボリューム状態情報２１３は、ストレージ装置群２８０によって提供されるボリュームの情報を格納する。ボリューム状態情報２１３には、例えば、省電力機能が実行されているか否かを示す電力情報などが含まれる。ボリューム状態情報２１３の詳細は、図１８にて後述する。
【００３４】
ストレージ電力特性情報管理部２１４は、ストレージ装置群２８０によって提供される各ボリュームの電力特性情報を管理する。具体的には、所定のタイミングでボリュームごとの消費電力などの電力特性情報を取得し、ストレージ電力特性情報２１５として記録する。ストレージ電力特性情報管理部２１４による処理の詳細については図１９及び図２０にて後述する。ストレージ電力特性情報２１５の詳細は図２３にて後述する。
【００３５】
ホストバスアダプタ（ＨＢＡ）２６０は、ネットワーク２０に接続するためのインターフェイスである。ネットワークインターフェイスカード（ＮＩＣ）２６１は、ネットワーク３０に接続するためのインターフェイスである。
【００３６】
ストレージ装置群２８０は、大容量の記憶資源が用いられた複数の記憶装置によって構成される。本実施形態では、記憶装置としてハードディスクドライブ（ＨＤＤ）などの磁気ディスク装置が用いられるが、光ディスクドライブ、半導体記憶装置（ソリッドステートドライブ；ＳＳＤ）などの不揮発性記憶媒体であってもよい。また、信頼性（対障害性）を向上させるために、複数の記憶装置によって冗長性を持たせた構成とするようにしてもよい。ストレージ装置群２８０によって提供されるボリュームには、表（関係表）及び索引などのデータベースを構成するオブジェクトが格納されている。データベースオブジェクトは、一のボリュームに格納されていてもよいし、複数のボリュームに分散して格納されていてもよい。
【００３７】
また、ストレージ装置群２８０は、各ボリュームに格納されたデータの読み書きを高速化するために一時的にデータを格納する補助記憶装置（キャッシュメモリ）を備えるようにしてもよい。例えば、アクセスされる可能性の高いデータを予測して、あらかじめ補助記憶装置に格納しておくことによって、ストレージ装置群２８０を構成する記憶装置から直接データを取得することなく、要求されたデータを高速に提供することが可能となる。
【００３８】
電源監視部２９０は、データベースサーバ１００の電源監視部１９０と同様に、電源２９１からの電力の供給状態を監視する。例えば、電力供給の遮断を検知した場合には、ストレージ装置群２８０に格納されたデータベースオブジェクトの破損を防ぐために安全に電源を遮断する停電処理が実行される。また、電源監視部２９０は、電源２９１からの電源の供給状態を計測する。電源監視部２９０が計測する項目は、電力供給の消費電力や（積算）電力量等である。電源監視部２９０及び電源２９１は、外部ストレージ装置２００の筐体内に構成されていてもよく、また、電力分配装置（ＰＤＵ）等の別の筐体内に構成されていてもよい。また、電源監視部２９０及び電源２９１は、電源監視部１９０及び電源１９１と共用してもよい。
【００３９】
以上、本実施形態の計算機システム１０の全体構成について説明した。続いて、本実施形態の計算機システム１０における処理の概要について説明する。図２は、本発明の第１実施形態の計算機システム１０における処理手順の概要を説明する図である。図２では、アプリケーションプログラム１３０によってデータベース管理システム１５０を介して外部ストレージ装置２００からデータを取得する手順を示している。
【００４０】
データベースサーバ１００のＣＰＵ１１０は、アプリケーションプログラム１３０が実行されると、データベース管理システム１５０のクエリ受付部１５１にデータを取得するためのクエリ（問い合わせ）を送信する。
【００４１】
ＣＰＵ１１０は、クエリを受信すると、クエリ実行計画生成部１５２を実行し、受信したクエリに基づいてクエリ実行計画を生成する。さらに、生成したクエリ実行計画に基づいて、クエリ実行部１５３を実行する。クエリ実行部１５３では、生成されたクエリ実行計画に基づき、データの入出力命令を生成する。クエリ実行部１５３では、データの入出力命令を、順次、外部ストレージ装置２００に送信する。
【００４２】
クエリ実行計画は、データの入出力命令、演算処理などを含むオペレーションを組み合わせて構成されている。また、オペレーションの先行関係が必要に応じて定義されている。例えば、複数の異なるデータを取得するクエリを実行する場合、異なるデータに対する入出力命令を含むオペレーションがクエリ実行計画に複数含まれていることがある。
【００４３】
外部ストレージ装置２００の制御部２１０は、入出力処理部２１１にデータベースサーバ１００から送信されたデータの入出力命令を受け付けると、ボリュームの構成情報などに基づいて、ストレージ装置群２８０に格納されたデータベースから要求されたデータの格納場所を特定し、当該データにアクセスする。そして、データにアクセスした結果（入出力結果）を入出力処理部２１１によってデータベースサーバ１００に応答する。このとき、入出力結果はＨＢＡ２６０及びネットワーク３０を介して送信される。
【００４４】
ＣＰＵ１１０は、外部ストレージ装置２００から入出力結果を受信すると、クエリ実行部１５３によって受信した入出力結果及びクエリ実行計画に基づいて、クエリ実行結果を生成する。すべての入出力結果を受信すると、最終的なクエリ実行結果を生成し、クエリ受付部１５１によってアプリケーションプログラム１３０に応答する。アプリケーションプログラム１３０では、応答されたクエリ結果に基づいて業務処理を実行する。
【００４５】
続いて、本発明の第１実施形態の計算機システム１０における処理について説明する。図２に示した手順に沿って各処理について説明する。
【００４６】
図３は、本発明の第１実施形態のクエリ受付処理の手順を示すフローチャートである。クエリ受付処理は、データベースサーバ１００で実行されるＤＢＭＳ１５０に含まれるクエリ受付部１５１によって実行される。クエリ受付処理は、外部ストレージ装置２００に格納されたデータに対する入出力要求（クエリ）を受け付けた場合に実行される。
【００４７】
データベースサーバ１００のＣＰＵ１１０は、クエリ受付部１５１において、アプリケーションが発行したクエリ（入出力要求）を受信する（ステップＳ１０１）。さらに、受信したクエリをクエリ実行計画生成部１５２に送信する（ステップＳ１０２）。
【００４８】
ＣＰＵ１１０は、クエリ実行計画生成部１５２によってクエリ実行計画生成処理を実行することでクエリ実行計画を生成する。クエリ実行計画生成処理の詳細については、図４にて後述する。そして、ＣＰＵ１１０は、生成されたクエリ実行計画をクエリ実行部１５３に送信し、受信したクエリを実行する。クエリの実行が完了すると、クエリ受付部１５１において、クエリ実行部１５３からクエリ結果を受信する（ステップＳ１０３）。その後、受信したクエリ結果をアプリケーションに送信する（ステップＳ１０４）。
【００４９】
続いて、クエリ実行計画生成処理について説明する。図４は、本発明の第１実施形態のクエリ実行計画生成処理の手順を示すフローチャートである。クエリ実行計画生成処理は、データベースサーバ１００で実行されるＤＢＭＳ１５０に含まれるクエリ実行計画生成部１５２によって実行される。
【００５０】
データベースサーバ１００のＣＰＵ１１０は、クエリ受付部１５１によってクエリ実行計画生成処理が実行されると、まず、クエリ受付部１５１が送信したクエリを受信する（ステップＳ１１１）。さらに、受信したクエリに基づいて、一以上のクエリ実行計画案を生成する（Ｓ１１２）。
【００５１】
クエリ実行計画は、受信したクエリに基づいて、データを格納する表（関係表）からレコードを抽出したり、抽出されたレコードを整列したりするための手順を定義するものである。本実施形態では、複数のクエリ実行計画案を生成し、後述するように、各クエリ実行計画案の実行コストを算出してパラメータを最適化し、実際に実行するクエリ実行計画を決定する。
【００５２】
ここで、クエリ実行計画の例について説明する。結合演算処理に関して例を挙げると、クエリ実行計画案には、例えば、ハッシュ結合、ネステッドループ結合、整列併合（ソート＆マージ）結合などがあり、それぞれに長所短所があり、必要とされる性能に応じて選択される。
【００５３】
ハッシュ結合では、ステップ１として、関係表Ｒからハッシュ表Ｒ’を作成する。次に、ステップ２として、関係表Ｓを走査し、ハッシュ表Ｒ’と照合する。最後に、ステップ３として、照合結果を整列する。
【００５４】
ネステッドループ結合では、ステップ１として、関係表Ｒを走査し、各行について、索引Ｓ’を参照して関係表Ｓを検索する。そして、ステップ２として、検索結果を整列する。
【００５５】
整列併合（ソート＆マージ）結合では、ステップ１として、関係表Ｒを整列する。そして、ステップ２として、整列された関係表Ｒと、索引Ｓ’を参照して関係表Ｓを走査して照合する。
【００５６】
続いて、クエリ実行計画案が生成されると、ＣＰＵ１１０は、クエリ実行計画を決定するための処理を実行する。本実施形態では、クエリの実行に伴う消費電力をクエリの評価に含めるため、まず、外部ストレージ装置２００における電力特性情報を取得するためのストレージ電力特性情報取得処理を実行する（ステップＳ１１３）。ストレージ電力特性情報取得処理の詳細については図５にて後述する。なお、本実施形態では、クエリを受け付けるたびに外部ストレージ装置２００から電力特性情報を取得しているが、定期的に外部ストレージ装置２００から電力特性情報を取得して主記憶１２０に記憶し、クエリ実行時に参照するようにしてもよい。
【００５７】
次に、ＣＰＵ１１０は、生成されたクエリ実行計画案の実行コスト見積式を構成する実行コスト見積式構成処理を実行する（ステップＳ１１４）。実行コストの見積式は、処理速度などの性能評価するための見積式と、消費電力を評価する見積式とが含まれる。実行コスト見積式構成処理の詳細については図８にて後述する。
【００５８】
次に、ＣＰＵ１１０は、ステップＳ１１４の処理で構成された実行コスト見積式に基づいて、各クエリ実行計画案の実行コストの見積値を算出し、各クエリ実行計画案を最適化するクエリ実行計画最適化処理を実行する（ステップＳ１１５）。クエリ実行計画最適化処理の詳細については図９にて後述する。
【００５９】
さらに、ＣＰＵ１１０は、ステップＳ１１５の処理で最適化された各クエリ実行計画案の実行コストの見積値に基づいて、実行するクエリ実行計画案を決定するクエリ実行計画決定処理を実行する（ステップＳ１１６）。クエリ実行計画決定処理の詳細については図１１にて後述する。
【００６０】
最後に、ＣＰＵ１１０は、決定されたクエリ実行計画をクエリ実行部１５３に送信し（ステップＳ１１７）、本処理を終了する。
【００６１】
続いて、外部ストレージ装置２００によって提供される各ボリュームの消費電力などの電力特性情報を取得するストレージ電力特性情報取得処理について説明する。図５は、本発明の第１実施形態のストレージ電力特性情報取得処理の手順を示すフローチャートである。ストレージ電力特性情報取得処理は、データベースサーバ１００で実行されるＤＢＭＳ１５０に含まれるクエリ実行計画生成部１５２によって実行される。
【００６２】
ＣＰＵ１１０は、ストレージ電力特性情報取得処理が実行されると、外部ストレージ装置２００にストレージ電力特性情報取得命令を発行する（ステップＳ１２１）。外部ストレージ装置２００は、ストレージ電力特性情報取得命令を受信すると、要求された電力特性情報を取得し、データベースサーバ１００に応答する。そして、ＣＰＵ１１０は、外部ストレージ装置２００からストレージ電力特性情報を受信し（ステップＳ１２２）、主記憶１２０（クエリ実行計画生成部１５２）に記憶する。その後、取得したストレージ電力特性情報に基づいてクエリ実行計画案の実行コストの見積値の算出などを行う。
【００６３】
次に、ストレージ電力特性情報送信処理について説明する。図６は、本発明の第１実施形態のストレージ電力特性情報送信処理の手順を示すフローチャートである。ストレージ電力特性情報送信処理は、外部ストレージ装置２００の制御部２１０に含まれるストレージ電力特性情報管理部２１４によって実行される。
【００６４】
制御部２１０は、データベースサーバ１００からストレージ電力特性情報取得命令を受信すると（ステップＳ１３１）、ストレージ電力特性情報２１５をデータベースサーバ１００に送信する（ステップＳ１３２）。なお、ストレージ電力特性情報取得命令に取得する電力特性情報の指定が含まれている場合には指定された情報を送信するようにしてもよいし、取得可能なストレージ電力特性情報２１５を常に送信するようにしてもよい。本実施形態におけるストレージ電力特性情報の生成タイミングは図７にて後述する。
【００６５】
次に、ストレージ電力特性情報生成処理について説明する。図７は、本発明の第１実施形態のストレージ電力特性情報生成処理の手順を示すフローチャートである。ストレージ電力特性情報生成処理は、外部ストレージ装置２００の制御部２１０に含まれるストレージ電力特性情報管理部２１４によって実行される。
【００６６】
また、ストレージ電力特性情報生成処理は、ストレージ電力特性情報取得命令を受信したタイミングで実行されるようにしてもよいが、本実施形態では、ストレージ電力特性情報送信処理の実行タイミングに関わらず、独立したタイミングで実行してもよい。具体的には、制御部２１０の負荷を検出し、無負荷状態の場合にストレージ電力特性情報を生成する。また、ストレージ電力特性情報を生成する処理を定期的に実行し、処理実行時に制御部２１０が無負荷状態でない場合には無負荷状態になるまで待機し、その後、ストレージ電力特性情報を生成するようにしてもよい。
【００６７】
制御部２１０は、ストレージ電力特性情報生成処理が開始されると、まず、制御部２１０が無負荷状態であるか否かを判定する（ステップＳ１４１）。制御部２１０の無負荷状態とは、例えば、データベースサーバ１００などから受信した入出力要求を処理していない状態である。制御部２１０は、制御部２１０が無負荷状態でない場合には（ステップＳ１４１の結果が「Ｆ」）、制御部２１０が無負荷状態になるまで待機する（ステップＳ１４２）。
【００６８】
制御部２１０が無負荷状態である場合には（ステップＳ１４１の結果が「Ｔ」）、制御部２１０は、各ボリュームに対してステップＳ１４４からステップＳ１４６までの処理を実行する（ステップＳ１４３）。
【００６９】
制御部２１０は、まず、ストレージ電力特性情報を生成する対象のボリュームをスリープ状態（スリープ化）及びアクティブ状態（アクティブ化）に移行させ、各状態への移行が完了するまでに要する時間及び消費電力量を計測する（ステップＳ１４４）。アクティブ状態とは、格納されたデータに即座にアクセス可能な状態であり、例えば、ディスクドライブについて言えば、通常の回転速度を維持している状態であり、フラッシュメモリについて言えば、フラッシュチップとコントローラが動作している状態である。一方、スリープ状態とは、消費電力を低減している状態であり、例えば、ディスクドライブについて言えば、ディスクの回転を停止又は低速にしている状態であり、フラッシュメモリについて言えば、フラッシュチップとコントローラのいずれかが停止もしくは休眠している状態である。スリープ状態のボリュームからデータを入出力する場合には、一旦アクティブ状態に移行させる必要がある。ここでは、ボリュームの状態として、アクティブとスリープの２種類を述べているが、これ以外の状態、例えば、アクティブ状態より低速でアクセス可能であってアクティブ状態より消費電力が低い状態があってもよい。
【００７０】
次に、制御部２１０は、複数種類の負荷量となる入出力を対象のボリュームに対して実行し、負荷量ごとにスループット及び消費電力を計測する（ステップＳ１４５）。
【００７１】
ステップＳ１４４及びステップＳ１４５の処理が終了すると、制御部２１０は、対象のボリュームに対応するストレージ電力特性情報２１５を更新する（ステップＳ１４６）。以上の処理をすべてのボリュームに対して実行し、ストレージ電力特性情報２１５を生成する。
【００７２】
続いて、クエリ実行計画案の実行コストを算出するための見積式を構成する実行コスト見積式構成処理について説明する。図８は、本発明の第１実施形態の実行コスト見積式構成処理の手順を示すフローチャートである。実行コスト見積式構成処理は、データベースサーバ１００で実行されるＤＢＭＳ１５０に含まれるクエリ実行計画生成部１５２によって実行される。
【００７３】
ＣＰＵ１１０は、実行コスト見積式構成処理が開始されると、生成されたすべてのクエリ実行計画案について、ステップＳ１５２及びステップＳ１５３の処理を実行する（ステップＳ１５１）。この際、生成されたすべてのクエリ実行計画案について、同処理を行うのではなく、事前に定めたルールを用いる等によって、一部のクエリ実行計画案を除外してもよい。
【００７４】
ＣＰＵ１１０は、まず、性能情報の見積式を構成する（ステップＳ１５２）。性能情報は、クエリの実行速度や実行時間などに関する情報であり、実行多重度やメモリ消費量などであってもよい。次に、ＣＰＵ１１０は、消費電力情報の見積式を構成する（ステップＳ１５３）。消費電力情報は、クエリ実行時の消費電力に関する情報であり、例えば、単位時間当たりの平均消費電力量、最大消費電力量、総消費電力量などがある。
【００７５】
続いて、各クエリ実行計画案の実行コストの見積式が構成されると、見積式に基づいてクエリ実行計画案のパラメータを最適化する。図９は、本発明の第１実施形態のクエリ実行計画最適化処理の手順を示すフローチャートである。クエリ実行計画最適化処理は、データベースサーバ１００で実行されるＤＢＭＳ１５０に含まれるクエリ実行計画生成部１５２によって実行される。
【００７６】
ＣＰＵ１１０は、すべてのクエリ実行計画案について、指定された優先度（クエリ優先度）に適するようにクエリ実行計画案のパラメータを調整する（ステップＳ１６１）。本実施形態では、例えば、総消費電力量の低減を優先してパラメータを調整したり、最大消費電力の低減を優先してパラメータを調整したりする。特に優先度が指定されていない場合には、例えば、実行時間が短くなるようにパラメータを調整する。また、優先度が指定される項目にはそれぞれ閾値を設定することが可能となっており、閾値を満たす範囲で優先度が指定された項目を最適化する。この際、すべてのクエリ実行計画案について、上記の処理を行うのではなく、事前に定めたルールを用いる等によって、一部のクエリ実行計画案を除外してもよい。
【００７７】
ＣＰＵ１１０は、まず、クエリ優先度が指定されているか否かを判定する（ステップＳ１６２）。クエリ優先度は、クエリを示すＳＱＬに指示子として指定するようにしてもよいし、ＤＢＭＳ１５０の設定ファイルに含ませるようにしてもよい。ＳＱＬの指示子としてクエリ優先度を指定する場合には、例えば、負荷の大きい特定のクエリを実行する場合にのみ消費電力を調整することが可能となる。一方、ＤＢＭＳ１５０の設定ファイルにクエリ優先度を指定する場合には、例えば、計算機システム全体の消費電力量を調整することが可能となる。
【００７８】
ＣＰＵ１１０は、クエリ優先度に総消費電力量の低減が指定されている場合には、指定された閾値を満たす範囲で総消費電力消費量を最小化するようにクエリ実行計画案のパラメータを調整する（ステップＳ１６３）。このとき、閾値としては、例えば、最大消費電力の上限及び実行時間の上限が指定される。
【００７９】
また、ＣＰＵ１１０は、クエリ優先度が指定されていない場合、又は、実行時間の低減が指定されている場合には、指定された閾値を満たす範囲で実行時間を最小化するようにクエリ実行計画案のパラメータを調整する（ステップＳ１６４）。このとき、閾値は、最大消費電力の上限及び総消費電力消費量の上限が指定される。
【００８０】
さらに、ＣＰＵ１１０は、クエリ優先度に最大消費電力の低減が指定されている場合には、指定された閾値を満たす範囲で最大消費電力を最小化するようにクエリ実行計画案のパラメータを調整する（ステップＳ１６５）。このとき、閾値は、最大消費電力の上限及び実行時間の上限が指定される。
【００８１】
クエリ実行計画案のパラメータは、例えば、後述するアウトオブオーダ実行形式でクエリを実行する場合にデータにアクセスするタスクの生成可能数（外部ストレージ装置２００に同時にアクセス可能な上限数）である。
【００８２】
なお、クエリ実行計画案のパラメータの調整には、外部ストレージ装置２００に送信する電力制御命令を付加することも含まれる。例えば、クエリ実行計画において後続のオペレーションで特定のボリュームにアクセスしない場合には、スリープ化を指示する電力制御命令を付加する。これにより、アクセスしないボリュームの省電力機能を早期に起動させることができる。
【００８３】
クエリ実行計画案のパラメータの調整が終了すると、ＣＰＵ１１０は、クエリ実行計画案を実行コストの見積式に適用し、性能情報及び消費電力情報の見積値を算出する（ステップＳ１６６）。そして、すべてのクエリ実行計画案についてステップＳ１６２からステップＳ１６５までの処理を実行すると、本処理を終了する。
【００８４】
生成されたクエリ実行計画案のすべての性能情報と消費電力情報を算出すると、クエリ実行計画管理表を作成する。図１０は、本発明の第１実施形態のクエリ実行計画管理表の一例を示す図である。クエリ実行計画管理表は、クエリ実行計画案のパラメータ、実行コストの見積式及び見積値が格納される。
【００８５】
本実施形態では、クエリ実行計画案のパラメータは、アウトオブオーダ実行を行うか否か、アウトオブオーダ実行を行う場合の多重度が設定される。アウトオブオーダ実行を行う場合の多重度とは、データを取得するためのタスクを同時に生成可能な上限数である。
実行コストの見積式及び見積値が格納される。実行コストの見積式は、実行時間、消費電力量、最大消費電力について、クエリの実行形式、パラメータなどに基づいて定義される。見積値は、実行するクエリを実行コストの見積式に適用した結果である。
【００８６】
なお、クエリ実行計画管理表を実行計画案生成時に作成し、実行コスト見積式構成処理の実行時に見積り式を書き込み、クエリ実行計画最適化処理の実行時に見積り式の算出結果を書き込むようにしてもよい。
【００８７】
クエリ実行計画管理表が作成されると、生成されたクエリ実行計画案から実行するクエリ実行計画案を決定する。図１１は、本発明の第１実施形態のクエリ実行計画決定処理の手順を示すフローチャートである。
【００８８】
ＣＰＵ１１０は、まず、クエリの評価尺度に閾値が指定されているか否かを判定する（ステップＳ１７１）。閾値が指定されている場合には（ステップＳ１７１の結果が「Ｔ」）、閾値を満たさないクエリ実行計画案を除外する（ステップＳ１７２）。
【００８９】
次に、ＣＰＵ１１０は、クエリの評価尺度に優先度（クエリ優先度）が指定されているか否かを判定する（ステップＳ１７３）。クエリ優先度に総消費電力量の低減が指定されている場合には、総消費電力量が最も少ないクエリ実行計画案を選択する（ステップＳ１７４）。また、クエリ優先度が指定されていない場合、又は、実行時間の低減が指定されている場合には、実行時間が最も短いクエリ実行計画案を選択する（ステップＳ１７５）。さらに、クエリ優先度に最大消費電力の低減が指定されている場合には、最大消費電力が最も少ないクエリ実行計画案を選択する（ステップＳ１７６）。
【００９０】
以上のように、クエリ実行計画を決定すると、クエリ実行部１５３によってクエリを実行する。図１２は、本発明の第１実施形態のクエリ実行処理の手順を示すフローチャートである。
【００９１】
ＣＰＵ１１０は、クエリ実行計画生成部１５２によって決定されたクエリ実行計画をクエリ実行部１５３に送信する（ステップＳ１８１）。クエリ実行計画は、一又は複数の実行計画ステップで構成されており、実行計画ステップごとに、順次、ステップＳ１８３からステップＳ１８９までの処理を実行する（ステップＳ１８２）。
【００９２】
ＣＰＵ１１０は、実行計画ステップの実行直前に電力制御命令を発行するように指定されているか否かを判定する（ステップＳ１８３）。実行計画ステップの実行直前に電力制御命令を発行する場合には（ステップＳ１８３の結果が「Ｔ」）、指定された電力制御命令を発行する電力制御命令発行処理を実行する（ステップＳ１８４）。例えば、アクセス先のボリュームをあらかじめアクティブ化させるための電力制御命令を発行する。電力制御命令発行処理の詳細については図１３にて後述する。
【００９３】
次に、ＣＰＵ１１０は、実行する実行計画ステップをアウトオブオーダ実行形式で処理するかがパラメータに設定されているか否かを判定する（ステップＳ１８５）。アウトオブオーダ実行形式で実行計画ステップを実行する場合には（ステップＳ１８５の結果が「Ｔ」）、当該実行計画ステップに対してアウトオブオーダ実行処理を実行する（ステップＳ１８６）。なお、アウトオブオーダ実行処理の詳細については、図１４にて後述する。
【００９４】
一方、ＣＰＵ１１０は、アウトオブオーダ実行形式で実行計画ステップを実行しない場合には（ステップＳ１８５の結果が「Ｆ」）、当該実行計画ステップに対してインオーダ実行処理を実行する（ステップＳ１８７）。なお、インオーダ実行処理の詳細については、図１５にて後述する。
【００９５】
ＣＰＵ１１０は、実行計画ステップを実行すると、当該実行計画ステップの実行直後に電力制御命令を発行するように指定されているか否かを判定する（ステップＳ１８８）。実行計画ステップの直後に電力制御命令を発行する場合には（ステップＳ１８８の結果が「Ｆ」）、指定された電力制御命令を発行する電力制御命令発行処理を実行する（ステップＳ１８９）。例えば、アクセスが完了したボリュームをスリープ化させるための電力制御命令を発行する。
【００９６】
クエリ実行計画のすべての実行計画ステップを実行すると、ＣＰＵ１１０は、クエリの実行結果をクエリ受付部１５１に送信し（ステップＳ１９０）、本処理を終了する。
【００９７】
続いて、電力制御命令を制御対象に対して発行する電力制御命令発行処理について説明する。図１３は、本発明の第１実施形態の電力制御命令発行処理の手順を示すフローチャートである。
【００９８】
ＣＰＵ１１０は、クエリ実行計画に指定されている電力制御命令が、ストレージに対する電力制御命令を含むか否かを判定する（ステップＳ２０１）。クエリ実行計画に指定されている電力制御命令が、ストレージに対する電力制御命令を含む場合には（ステップＳ２０１の結果が「Ｔ」）、外部ストレージ装置２００にストレージ電力制御命令を発行する（ステップＳ２０２）。
【００９９】
続いて、クエリ実行計画の各実行計画ステップにおいてアウトオブオーダ実行形式でデータにアクセスする方法について説明する。アウトオブオーダ実行形式では、クエリ実行計画を構成する各オペレーションを順次実行して外部ストレージ装置２００からデータを取得するためのタスクを生成し、複数のタスクを並行して実行する。同時に生成されるタスクの数の上限はパラメータとして設定される。パラメータの設定は、クエリ実行計画最適化処理（図９）で決定される。
【０１００】
図１４は、本発明の第１実施形態のアウトオブオーダ実行処理とデータタスク駆動処理の手順を示すフローチャートである。
【０１０１】
ＣＰＵ１１０は、まず、クエリ実行計画のステップで最初に実行されるオペレーションを選択する（ステップＳ２１１）。続いて、選択されたオペレーションを実行するデータタスク駆動処理を実行する（ステップＳ２１２）。データタスク駆動処理はタスクが生成されてから実行され、図１５にて後述するタスク生成処理が実行される。タスクが生成できない場合には、生成可能になるまでデータタスク駆動処理の実行を待機する。
【０１０２】
データタスク駆動処理では、ＣＰＵ１１０は、まず、オペレーションを実行するために必要な新たなデータを取得する（ステップＳ２２１）。新たなデータは、外部ストレージ装置２００にデータの入出力命令を送信することによって取得される。
【０１０３】
次に、ＣＰＵ１１０は、データの入出力の結果に基づいて、データの加工・集計などの処理（オペレーション）を実行する（ステップＳ２２２）。さらに、実行されたオペレーションに後続のオペレーションが存在するか否かを判定する（ステップＳ２２３）。後続のオペレーションとは、例えば、先行するオペレーションによって取得されたデータに基づいて次のオペレーションを実行するために新たにデータを取得する場合などである。
【０１０４】
ＣＰＵ１１０は、後続のオペレーションが存在する場合には（ステップＳ２２３の結果が「Ｔ」）、当該後続のオペレーションを実行するためのデータタスク駆動処理を実行する（ステップＳ２２４）。このように、データタスク駆動処理は、後続のオペレーションを処理するために再帰的に呼び出される。
【０１０５】
ＣＰＵ１１０は、後続のオペレーションを処理するデータタスク駆動処理の実行が終了した場合、又は、後続のオペレーションが存在しない場合には（ステップＳ２２３の結果が「Ｆ」）、処理中のオペレーションにさらに取得が必要なデータがあるか否かを判定する（ステップＳ２２５）。取得が必要なデータがある場合には（ステップＳ２２５の結果が「Ｔ」）、データタスク駆動処理を再度実行する。一方、取得が必要なデータがない場合には（ステップＳ２２５の結果が「Ｆ」）、本処理を終了する。
【０１０６】
続いて、データタスク駆動処理を実行するためのタスクを生成するタスク生成処理について説明する。図１５は、本発明の第１実施形態のタスク生成処理の手順を示すフローチャートである。
【０１０７】
ＣＰＵ１１０は、まず、生成するタスク数の上限を設定ファイルによって指定していないか否かを判定する（ステップＳ２３１）。設定ファイルによってタスク数の上限を指定していない場合には（ステップＳ２３１の結果が「Ｔ」）、生成するタスク数に制限がないため、新たにタスクを生成し、いずれかのＣＰＵ１１０に割り当てて生成されたタスクの実行を開始する（ステップＳ２３５）。
【０１０８】
一方、ＣＰＵ１１０は、設定ファイルによってタスク数の上限を指定している場合には（ステップＳ２３１の結果が「Ｆ」）、さらに、クエリ実行計画のパラメータによってタスク数の上限を指定していないか否かを判定する（ステップＳ２３２）。クエリ実行計画のパラメータによってタスク数の上限を指定していない場合には（ステップＳ２３２の結果が「Ｔ」）、新たにタスクを生成し、いずれかのＣＰＵ１１０に割り当てて生成されたタスクの実行を開始する（ステップＳ２３５）。
【０１０９】
さらに、ＣＰＵ１１０は、クエリ実行計画のパラメータによってタスク数の上限を指定している場合には（ステップＳ２３１の結果が「Ｔ」）、新たにタスクを生成することによって設定ファイル又はクエリ実行計画のパラメータで指定されたタスク数の上限を超えるか否かを判定する（ステップＳ２３３）。タスク数の上限を超える場合には（ステップＳ２３３の結果が「Ｔ」）、現在実行中のタスクが完了し、消滅するまで待機する（ステップＳ２３４）。一方、タスク数の上限を超えない場合には（ステップＳ２３３の結果が「Ｆ」）、新たにタスクを生成し、いずれかのＣＰＵ１１０に割り当てて生成されたタスクの実行を開始する（ステップＳ２３５）。
【０１１０】
続いて、クエリ実行計画のステップにおいてインオーダ実行形式でデータにアクセスする方法について説明する。インオーダ実行形式では、各オペレーションを順次実行し、後続のオペレーションが存在する場合には実行中のオペレーションの実行状態をスタックに退避し、後続のオペレーションを実行する。そして、後続のオペレーションの実行が完了すると、スタックに退避されたオペレーションを継続する。後続のオペレーション及びスタックに退避されたオペレーションがなくなると、クエリの実行が完了する。図１６は、本発明の第１実施形態のインオーダ実行処理との手順を示すフローチャートである。
【０１１１】
ＣＰＵ１１０は、まず、クエリ実行計画のステップで最初に実行されるオペレーションを選択する（ステップＳ２４１）。続いて、選択されたオペレーションを実行するために必要な新たなデータを取得する（ステップＳ２４２）。新たなデータは、外部ストレージ装置２００にデータの入出力命令を送信することによって取得される。
【０１１２】
次に、ＣＰＵ１１０は、データの入出力の結果に基づいて、オペレーションを実行する（ステップＳ２４３）。さらに、実行されたオペレーションに後続のオペレーションが存在するか否かを判定する（ステップＳ２４４）。
【０１１３】
ＣＰＵ１１０は、後続のオペレーションが存在する場合には（ステップＳ２４４の結果が「Ｔ」）、現在のオペレーションの実行状態をスタックに退避し、後続のオペレーションを選択する（ステップＳ２４５）。そして、選択されたオペレーションを実行するために必要な新たなデータを取得する（ステップＳ２４２）。
【０１１４】
一方、ＣＰＵ１１０は、後続のオペレーションが存在しない場合には（ステップＳ２４４の結果が「Ｆ」）、処理中のオペレーションにさらに取得が必要なデータがあるか否かを判定する（ステップＳ２４６）。取得が必要なデータがある場合には（ステップＳ２の結果が「Ｔ」）、新たなデータを取得する（ステップＳ２４２）。
【０１１５】
ＣＰＵ１１０は、取得が必要なデータがない場合には（ステップＳ２の結果が「Ｆ」）、スタックに退避されたオペレーションが存在するか否かを判定する（ステップＳ２４７）。スタックに退避されたオペレーションが存在する場合には（ステップＳ２４７の結果が「Ｔ」）、最後に退避されたオペレーションを取り出し（ステップＳ２４８）、さらに取得が必要なデータがあるか否かを判定し（ステップＳ２４６）、以降の処理を実行する。スタックに退避されたオペレーションが存在しない場合には（ステップＳ２４７の結果が「Ｆ」）、本処理を終了する。
【０１１６】
以上、クエリ実行部１５３によって外部ストレージ装置２００からデータを取得する手順について説明した。続いて、外部ストレージ装置２００が入出力命令を受信した場合に実行される入出力処理について説明する。図１７は、本発明の第１実施形態の入出力処理の手順を示すフローチャートである。入出力処理は、外部ストレージ装置２００の制御部２１０に含まれる入出力処理部２１１によって実行される。
【０１１７】
制御部２１０は、データベースサーバ１００から入出力命令を受信すると（ステップＳ２５１）、ボリューム状態情報２１３の電力モード２１３２を参照し、データの入出力の対象となるボリュームがスリープ状態であるか否かを判定する（ステップＳ２５２）。ボリューム状態情報２１３は、ストレージ装置群２８０によって提供される各ボリュームの状態を示す情報が格納される。以下、図１８を参照しながらボリューム状態情報２１３について説明する。
【０１１８】
図１８は、本発明の第１実施形態のボリューム状態情報２１３の一例を示す図である。ボリューム状態情報２１３は、ボリューム２１３１、電力モード２１３２及び最終アクセス時間２１３３を含む。ボリューム２１３１は、各ボリュームの識別情報を格納する。電力モード２１３２は各ボリュームの状態を示し、具体的には、格納されたデータに即座にアクセス可能で通常の電力を消費するアクティブ状態と、ディスクドライブの回転を停止又は低速にすることで消費電力を低減するスリープ状態とがある。最終アクセス時間２１３３は、対応するボリュームに最後にアクセスされた時刻である。本実施形態では、図１９にて後述する電力制御処理によって所定の条件下でアクティブ状態とスリープ状態とを切り替えるように制御する。
【０１１９】
ここで、図１７の入出力制御処理の説明に戻る。制御部２１０は、入出力の対象となるボリュームがスリープ状態である場合には（ステップＳ２５２の結果が「Ｔ」）、対象ボリュームをアクティブ化し（ステップＳ２５３）、さらに、ボリューム状態情報２１３を更新する（ステップＳ２５４）。具体的には、ボリューム状態情報２１３の対象ボリュームに対応する電力モード２１３２をアクティブ状態に変更する。
【０１２０】
入出力対象のボリュームがアクティブ状態になると、制御部２１０は、ボリューム状態情報２１３の対象ボリュームの最終アクセス時間２１３３を更新する（ステップＳ２５５）。その後、対象ボリュームに入出力命令を発行し（ステップＳ２５６）、データベースサーバ１００に入出力結果を送信する（ステップＳ２５７）。
【０１２１】
続いて、外部ストレージ装置２００が電力制御命令を受信した場合に実行される電力制御処理について説明する。図１９は、本発明の第１実施形態の電力制御処理の手順を示すフローチャートである。電力制御処理は、外部ストレージ装置２００の制御部２１０に含まれるストレージ電力制御部２１２によって実行される。
【０１２２】
制御部２１０は、データベースサーバ１００から電力制御命令を受信すると（ステップＳ２６１）、受信した電力制御命令の種類を判定し（ステップＳ２６２）、電力制御命令の種類に応じて分岐する。
【０１２３】
制御部２１０は、受信した電力制御命令がスリープ化であった場合には、対象のボリュームをスリープ化する（ステップＳ２６３）。さらに、ボリューム状態情報２１３を更新する（ステップＳ２６４）。具体的には、ボリューム状態情報２１３の対象ボリュームに対応する電力モード２１３２をスリープ状態に変更する。
【０１２４】
一方、制御部２１０は、受信した電力制御命令がアクティブ化であった場合には、対象のボリュームをアクティブ化する（ステップＳ２６５）。さらに、ボリューム状態情報２１３を更新する（ステップＳ２６６）。具体的には、ボリューム状態情報２１３の対象ボリュームに対応する電力モード２１３２をアクティブ状態に変更する。
【０１２５】
続いて、外部ストレージ装置２００が所定時間アクセスされていないボリュームをスリープ化するスリープ処理について説明する。図２０は、本発明の第１実施形態のスリープ処理の手順を示すフローチャートである。スリープ処理は、外部ストレージ装置２００の制御部２１０に含まれるストレージ電力制御部２１２によって実行され、所定のタイミングで実行される。所定のタイミングは、例えば、対象ボリュームに最後にアクセスされてから所定時間経過した後であったり、一定時間毎であったりする。
【０１２６】
制御部２１０は、各ボリュームに対して以下の処理を実行する（ステップＳ２７１）。まず、対象ボリュームがアクティブ状態になってから（最後に対象ボリュームがアクセスされてから）Ｎ秒間以上経過したか否かを判定する（ステップＳ２７２）。対象ボリュームがアクティブ状態になっていない場合、又は、アクティブ状態になってからＮ秒間以上経過していない場合には（ステップＳ２６２の結果が「Ｆ」）、別のボリュームを対象とする。
【０１２７】
一方、制御部２１０は、アクティブ状態になってからＮ秒間以上経過した場合には（ステップＳ２７２の結果が「Ｔ」）、対象ボリュームをスリープ化する（ステップＳ２７３）。さらに、ボリューム状態情報２１３を更新する（ステップＳ２７４）。具体的には、ボリューム状態情報２１３の対象ボリュームに対応する電力モード２１３２をスリープ状態に変更する。
【０１２８】
以上が本発明の第１実施形態の構成及び制御である。ここで、本発明の第１実施形態の適用例を図２１から図３０を参照しながら説明する。まず、本発明の第１実施形態を適用するデータベースの構成について説明する。図２１及び図２２は、本発明の第１実施形態のデータベースの構成を説明する図であり、図２１は表及び索引を格納するボリュームの構成、図２２は各表の構成を説明する図である。
【０１２９】
図２１に示すように、外部ストレージ装置２００によってボリューム１及びボリューム２が提供される。ボリューム１には、表Ｒ及び索引ＩＲが格納される。また、ボリューム２には、表Ｓ及び索引ＩＳが格納される。
【０１３０】
図２２（Ａ）に示すように、表Ｒは、フィールドＲ１、Ｒ２及びＲ３によって構成される。また、フィールドＲ１に対して索引ＩＲが作成されている。さらに、表Ｒのレコード長は１００Ｂ（バイト）、レコード数は１０００００００００（１Ｇ）である。表Ｒの表長（サイズ）は１００ＧＢである。
【０１３１】
一方、図２２（Ｂ）に示すように、表Ｓは、フィールドＳ１、Ｓ２及びＳ３によって構成される。また、フィールドＳ２に対して索引ＩＳが作成されている。さらに、表Ｓのレコード長は１００Ｂ（バイト）、レコード数は１０００００００００００（１００Ｇ）となっている。表Ｓの表長（サイズ）は１０ＴＢである。
【０１３２】
さらに、表Ｒと表Ｓとは、フィールドＲ２及びフィールドＳ２を結合キーとして結合可能であり、フィールドＲ２に格納された値は必ずフィールドＳ２に存在する。結合率は１００であり、即ち、表Ｒの１のレコードに対して、表Ｓの１００のレコードが結合可能である。
【０１３３】
次に、本発明の第１実施形態における外部ストレージ装置２００のストレージ電力特性情報２１５について説明する。図２３は、本発明の第１実施形態の外部ストレージ装置２００のストレージ電力特性情報２１５を示す図である。本実施形態では、ボリューム１及びボリューム２は同じ性能となっており、アクセス性能に関連する性能特性と消費電力に関連する電力特性について説明する。
【０１３４】
性能特性は、主に、ボリュームにデータを入出力（Ｉ／Ｏアクセス）する速度を示している。また、性能特性には、ボリュームに格納されたデータに順次アクセスする場合のシーケンシャルアクセス性能と、格納されたデータをランダムにアクセスする場合のランダムアクセス性能とが含まれる。本実施形態の各ボリュームのシーケンシャルアクセスでは、１秒間当り１００ＭＢのデータの入出力が可能となっている（１００ＭＢ／ｓ）。
【０１３５】
一方、本実施形態の各ボリュームのランダムアクセスでは、１秒間に最大１００００回の入出力が可能となっている（１００００ＩＯＰＳ）。なお、ランダムアクセスの場合には、１回の入出力に要する時間は平均アクセス時間とデータ転送時間を足したものとなる。また、ランダムアクセス性能は、多重度によって変化する。この場合の多重度とは、ボリュームに対する同時アクセス数である。図２３に示すように、多重度が大きくなるほどスループット（ランダムアクセス性能）が大きくなり、多重度が１（同時アクセス数が１）の場合には１００ＩＯＰＳとなっている一方、多重度が１００以上の場合には１００００ＩＯＰＳとなっている。すなわち、外部ストレージ装置２００は、各ボリュームに対して同時に１００の入出力を並列して処理することが可能となっている。
【０１３６】
次に、電力特性について説明する。前述のように、各ボリュームには入出力が可能なアクティブ状態と、ディスクの回転が停止又は低速となっているスリープ状態の２種類の電力モードがある。
【０１３７】
アクティブ状態で入出力がない場合の消費電力は１００Ｗとなっている。また、シーケンシャルアクセス時の消費電力は２００Ｗとなる。ランダムアクセス時の消費電力は１００Ｗから２００Ｗの間となり、多重度に依存する。具体的には、多重度をｘ、ランダムアクセス性能をｆ（ｘ）とすると、消費電力ｇ（ｘ）＝１００Ｗ＋（２００Ｗ−１００Ｗ）×ｆ（ｘ）÷１００００ＩＯＰＳとなる。すなわち、多重度が大きい場合には消費電力が大きくなる。一方、スリープ時の消費電力は１０Ｗとなっている。
【０１３８】
また、アクティブ状態からスリープ状態に遷移するための時間は１０秒間であり、その間、５００ジュール（Ｊ）のエネルギーを必要とする。この場合、平均電力としては５０Ｗとなる。同様に、スリープ状態からアクティブ状態に遷移するための時間は１０秒間であり、５００ジュール（Ｊ）のエネルギーを必要とする（平均５０Ｗ）。
【０１３９】
続いて、外部ストレージ装置２００の性能を計測する手順及び具体例について図２４から図３０を参照しながら説明する。まず、実行時の性能を計測するためのクエリについて説明する。図２４は、本発明の第１実施形態のデータベースサーバ１００で実行され、外部ストレージ装置２００からデータを取得するためのクエリの例を示す図である。本実施形態では、クエリはＳＱＬによって表現されており、表Ｒ及び表Ｓを結合する２種類のクエリを示している。
【０１４０】
（Ａ）に示すクエリ１は表ＲのフィールドＲ２と表ＳのフィールドＳ２が一致するレコードについて、表ＲのフィールドＲ１、表ＳのフィールドＳ３の値を取得する。このとき、表ＲのフィールドＲ１の値がｘ１からｙ１の間であることを条件式としてレコードを取得する。なお、条件式に該当するレコードの選択率は０．１％を想定している。
【０１４１】
（Ｂ）に示すクエリ２は、クエリ１とは異なり、表ＲのフィールドＲ２と表ＳのフィールドＳ２が一致するすべてのレコードについて、表ＲのフィールドＲ１、表ＳのフィールドＳ３の値を取得する。
【０１４２】
まず、クエリ１について説明する。ここでは、３種類のクエリ実行計画案を作成し、実行時間及び消費電力に関するコストを算出し、最適なクエリ実行計画案を選択する。作成されるクエリ実行計画案は、具体的には、ハッシュ結合、索引結合（インオーダ実行）、索引結合（アウトオブオーダ実行）の３種類である。以下、各クエリ実行計画案について説明する。
【０１４３】
図２５は、本発明の第１実施形態のハッシュ結合によってクエリ１を処理するクエリ実行計画案１を説明する図であり、（Ａ）はクエリ実行計画案１の内容、（Ｂ）は各ボリュームの状態を時系列順に示す図である。
【０１４４】
ハッシュ結合によるクエリ実行計画案１では、図２５（Ａ）に示すように、まず、表Ｒをスキャン（走査）し、ハッシュ表を作成する（ステップ＃１）。この際、（Ｂ）に示すように、ステップ開始後に表Ｓ（ボリューム２）をスリープ化し、ステップ終了前に表Ｓ（ボリューム２）をアクティブ化する。続いて、表Ｓをスキャンし、ハッシュ表をプローブ（検索）して、結果を出力する（＃２）。この際、（Ｂ）に示すように、ステップ開始後に表Ｒ（ボリューム１）をスリープ化する。
【０１４５】
次に、クエリ実行計画案１によってクエリ結果を取得した場合の性能を算出する。まず、実行時間について計算する。ステップ＃１の実行時間Ｔ１は、前述のように、表Ｒのサイズが１００ＧＢ、読み込み速度が１００ＭＢ／Ｓであるため、１００ＧＢ÷１００ＭＢ／Ｓ＝１０００秒となる。一方、ステップ＃２の実行時間Ｔ２は、表Ｓのサイズが１０ＴＢ、読み込み速度が１００ＭＢ／Ｓであるため、１０ＴＢ÷１００ＭＢ／Ｓ＝１０００００秒となる。したがって、クエリ実行計画案１の実行時間は、１０００秒＋１０００００秒＝１０１０００秒となる。
【０１４６】
続いて、消費電力量について計算する。各ステップのボリュームごとに消費電力を計算する。ステップ＃１のボリューム１の消費電力量は、表Ｒにアクセスしている間の消費電力であり、前述のように、実行時間Ｔ１が１０００秒、アクティブ状態では１秒間当り２００Ｗの消費電力であるため、１０００秒×２００Ｗ＝２０００００Ｊとなる。
【０１４７】
一方、ステップ＃１のボリューム２の消費電力量は、ボリューム２をスリープ化するための消費電力（５００Ｊ、１０秒）、ステップ＃２を実行するためにスリープ化されたボリューム２をアクティブ化するための消費電力（５００Ｊ、１０秒）、及び、スリープ化されている間の消費電力である。スリープ状態の経過時間は１０００秒（＝Ｔ１）−１０秒−１０秒であり、スリープ状態では１秒間当り１０Ｗの消費電力であるため、スリープ状態における消費電力は９８０秒×１０Ｗ＝９８００Ｊとなる。したがって、ステップ＃１のボリューム２の消費電力量は、５００Ｊ＋５００Ｊ＋９８００Ｊ＝１０８００Ｊとなる。
【０１４８】
以上より、ステップ＃１の消費電力量Ｊ１＝２０００００Ｊ＋１０８００Ｊ＝２１０８００Ｊとなる。
【０１４９】
次に、ステップ＃２のボリューム１の消費電力量は、ボリューム１をスリープ化するための消費電力（５００Ｊ、１０秒）、ステップ＃２が終了するまでスリープ状態で待機している間の消費電力である。スリープ状態の経過時間は１０００００秒（＝Ｔ２）−１０秒であるため、スリープ状態における消費電力は９９９９０秒×１０Ｗ＝９９９９００Ｊとなる。したがって、ステップ＃２のボリューム１の消費電力量は、５００Ｊ＋９９９９００Ｊ＝１０００４００Ｊとなる。
【０１５０】
一方、ステップ＃２のボリューム２の消費電力量は、表Ｓにアクセスしている間の消費電力であり、前述のように、実行時間Ｔ２が１０００００秒、１０００００秒×２００Ｗ＝２０００００００Ｊとなる。
【０１５１】
以上より、ステップ＃２の消費電力量Ｊ２＝１０００４００Ｊ＋２０００００００Ｊ＝２１０００４００Ｊとなる。したがって、クエリ実行計画案１の消費電力は、ステップ＃１及びステップ＃２の消費電力を合計すると、２１２１１２００Ｊとなる。
【０１５２】
続いて、最大消費電力について計算する。ステップ＃１のボリューム１の最大消費電力はアクティブ状態であるため２００Ｗとなる。また、ボリューム２の最大消費電力はスリープ化及びアクティブ化されているか、スリープ状態であるため、５０Ｗとなる。したがって、ステップ＃１の最大消費電力Ｐ１は２００Ｗ＋５０Ｗ＝２５０Ｗとなる。
【０１５３】
一方、ステップ＃２のボリューム１の最大消費電力はスリープ化されているか、スリープ状態であるため、５０Ｗとなる。また、ボリューム２の最大消費電力はアクティブ状態であるため、２００Ｗとなる。したがって、ステップ＃２の最大消費電力Ｐ２は５０Ｗ＋２００Ｗ＝２５０Ｗとなる。
【０１５４】
以上より、クエリ実行計画案１の最大消費電力は、各ステップの最大消費電力の最大値となるため、２５０Ｗとなる。
【０１５５】
図２６は、本発明の第１実施形態の索引結合（インオーダ実行）によってクエリ１を処理するクエリ実行計画案２を説明する図であり、（Ａ）はクエリ実行計画案２の内容、（Ｂ）は各ボリュームの状態を時系列順に示す図である。
【０１５６】
索引結合によるクエリ実行計画案２では、図２６（Ａ）に示すように、表Ｒをスキャン（走査）しながら、索引ＩＳを参照して表Ｓを検索し、結果を出力する（＃１）。
【０１５７】
次に、クエリ実行計画案２によってクエリ結果を取得した場合の性能を算出する。まず、実行時間について計算する。フィールドＲ１には索引が作成されており、選択率が０．１％であることから、表Ｒの全レコード（レコード数：１Ｇ）の０．１％のレコードを取得する。このとき、表Ｒから取得されたレコードに含まれるフィールドＲ２に基づいて、索引ＩＳを経由して表Ｓからレコード（フィールドＳ３）が取得される。したがって、表Ｒの全レコード（レコード数：１Ｇ）の０．１％のレコードをランダムアクセスし、アクセス後、表Ｓから全レコード（レコード数：１００Ｇ）の０．１％のレコードをランダムアクセスすることになる。したがって、ボリューム１及びボリューム２にアクセスする時間はほぼ同じ時間となる。以上より、ステップ＃１の実行時間Ｔ１は、（１Ｇ×０．１％÷１００ＩＯＰＳ）＋（１００Ｇ×０．１％÷１００ＩＯＰＳ）＝１０１００００秒となる。
【０１５８】
続いて、消費電力量について計算する。前述のように、ボリューム１とボリューム２にアクセスする時間はほぼ同じであるため、レコード数の関係からボリューム２に対するアクセス速度はボリューム１に対するアクセス速度の１００倍となる。ここで、ボリューム１に対するアクセス速度が１ＩＯＰＳであるとすると、ボリューム２に対するアクセス速度は１００ＩＯＰＳとなる。また、ランダムアクセス性能の最大値が１００００ＩＯＰＳであるのに対し、ボリューム１（表Ｒ）には１ＩＯＰＳでアクセスしているため、アクティブ状態の無負荷状態とみなすことができ、消費電力は１００Ｗとなる。また、ボリューム２は１００ＩＯＰＳ（＝ｆ（ｘ））であるため、消費電力は１００Ｗ＋（２００Ｗ−１００Ｗ）÷１００００ＩＯＰＳ＝１０１Ｗとなる。したがって、消費電力量Ｊ１は、１００Ｗ×１０１００００秒＋１０１Ｗ×１０１００００秒＝２０３０１００００Ｊとなる。
【０１５９】
続いて、最大消費電力について計算する。前述のように、クエリを実行している間、ボリューム１の消費電力は１００Ｗ、ボリューム２の消費電力は１０１Ｗとなる。したがって、クエリ実行計画案２の最大消費電力は、各ボリュームの合計消費電力の最大値となるため、１００＋１０１＝２０１Ｗとなる。
【０１６０】
図２７は、本発明の第１実施形態の索引結合（アウトオブデータ実行）によってクエリ１を処理するクエリ実行計画案３を説明する図であり、（Ａ）はクエリ実行計画案３の内容、（Ｂ）は各ボリュームの状態を時系列順に示す図である。
【０１６１】
索引結合によるクエリ実行計画案３では、アウトオブデータ実行の場合であっても、インオーダ実行の場合と同様に、表Ｒをスキャン（走査）しながら、索引ＩＳを参照して表Ｓを検索し、結果を出力する（＃１）。
【０１６２】
次に、クエリ実行計画案３によってクエリ結果を取得した場合の性能を算出する。多重度ｘはパラメータの最適化時に決定するため、変数ｘの状態で各性能を算出する。まず、実行時間について計算する。図２６に示したインオーダ実行の場合と同様に、表Ｒの全レコード（レコード数：１Ｇ）の０．１％のレコードを取得し、表Ｓについても同様に０．１％のレコードを取得する。
【０１６３】
また、表Ｒから表Ｓの結合率が１００であるため、表Ｒから１レコードが読み出されると、表Ｓから平均１００レコードが読み出され、合計１０１レコードが読み出されることになる。したがって、ボリューム１のスループットはｆ（ｘ×１÷１０１）、ボリューム２のスループットはｆ（ｘ×１００÷１０１）となる。したがって、ボリューム１の実行時間は、１Ｇ×０．１％÷ｆ（ｘ×１÷１０１）ＩＯＰＳ、ボリューム２の実行時間は、１００Ｇ×０．１％÷ｆ（ｘ×１００÷１０１）ＩＯＰＳとなる。ボリューム１とボリューム２のアクセスは並行して実行されるので、各ボリュームの実行時間の最大値が全体の実行時間となる。
【０１６４】
続いて、消費電力量について計算する。前述した各ボリュームの実行時間、表Ｒから表Ｓの結合率及び図２３に示した消費電力の計算式ｇ（ｘ）から、消費電力量Ｊ１はｇ（ｘ×１÷１０１）×（ボリューム１の実行時間）＋ｇ（ｘ×１００÷１０１）×（ボリューム２の実行時間）となる。
【０１６５】
最後に、最大消費電力について計算する。アウトオブデータ実行の場合には、各ボリュームが並列してアクセスされるため、各ボリュームの最大消費電力の和が全体の最大消費電力となる。したがって、最大消費電力Ｐ１はｇ（ｘ×１÷１０１）＋ｇ（ｘ×１００÷１０１）となる。
【０１６６】
以上のように、クエリ実行計画１から３についてコストを計算した結果をクエリ実行計画管理表に書き込む。図２８は、本発明の第１実施形態において閾値を指定せずに実行時間の低減を優先してクエリ１を処理した場合のクエリ実行計画表の一例を示す図である。
【０１６７】
図２８に示す場合には、消費電力等に閾値が設定されていないため、実行時間（全体）が最短のクエリ実行計画案が選択される。クエリ実行計画案１の実行時間が１０１０００秒、クエリ実行計画案２の実行時間が１０１００００秒、クエリ実行計画案３の実行時間が１０１００秒であるため、クエリ実行計画案３が選択される。なお、クエリ実行計画案３では実行時間がもっとも短くなるように多重度ｘは１００に決定される。
【０１６８】
なお、多重度ｘが１００の場合について実行時間を近似的に計算すると、前述の計算式から、ボリューム１の実行時間は、１Ｇ×０．１％÷（１００００×１÷１０１）ＩＯＰＳ＝１０１００秒、ボリューム２の実行時間は、１００Ｇ×０．１％÷（１００００×１００÷１０１）ＩＯＰＳ＝１０１００秒となる。したがって、クエリ実行計画案３の全体の実行時間Ｔ１は１０１００秒となる。
【０１６９】
さらに別の条件の場合について説明する。図２９は、本発明の第１実施形態において最大消費電力を２５０Ｗとする閾値を指定し、実行時間の低減を優先してクエリ１を処理した場合のクエリ実行計画表の一例を示す図である。
【０１７０】
各クエリ実行計画案は、図２８に示した例と同じである。クエリ実行計画案３については、最大消費電力が２５０Ｗ以下になるように多重度ｘを設定する。その結果、多重度ｘが５０以下の場合に最大消費電力が２５０Ｗ以下となる。クエリ１では、多重度ｘが１００以下であれば多重度が大きいほど実行時間が短縮されるため、多重度ｘには５０が決定される。
【０１７１】
ここで、多重度ｘが５０の場合の各性能を近似的に計算すると、前述の計算式から、ボリューム１の実行時間は、１Ｇ×０．１％÷（５０００×１÷１０１）ＩＯＰＳ＝２０２００秒、ボリューム２の実行時間は、１００Ｇ×０．１％÷（５０００×１００÷１０１）ＩＯＰＳ＝２０２００秒となる。したがって、クエリ実行計画案３の全体の実行時間Ｔ１は２０２００秒となる。また、消費電力量Ｊ１は（２５０×１÷１０１）×２０２００＋（２５０×１００÷１０１）×２０２００＝５０５００００Ｊとなる。最大消費電力Ｐ１は（２５０×１÷１０１）＋（２５０×１００÷１０１）＝２５０Ｗとなる。
【０１７２】
続いて、クエリ２についてクエリ実行計画案管理表を作成する場合について説明する。作成するクエリ実行計画案はクエリ１の場合と同様に、ハッシュ結合、索引結合（インオーダ実行）、索引結合（アウトオブオーダ実行）の３種類であり、実行時間及び消費電力に関するコストを算出し、最適なクエリ実行計画案を選択する。以下、各クエリ実行計画案のコストを算出する。
【０１７３】
ハッシュ結合によるクエリ実行計画案１では、クエリ１の場合と同様に、まず、表Ｒをスキャン（走査）し、ハッシュ表を作成する（ステップ＃１）。続いて、表Ｓをスキャンし、ハッシュ表をプローブ（検索）して、結果を出力する（＃２）。各ボリュームの状態遷移もクエリ１の場合と同様である。ハッシュ結合によるクエリ実行計画に基づいてクエリを処理する場合、レコードの選択率に依存せずに表のサイズによって一定の実行時間となるため、クエリ１の場合と同じく、クエリ実行計画案１の実行時間は、１０１０００秒となる。また、消費電力量及び最大消費電力についてもクエリ１の場合と同様であり、クエリ実行計画案１の消費電力量は２１２１１２００Ｊ、最大消費電力は２５０Ｗとなる。なお、各コストの計算手順はクエリ１の場合と同様である。
【０１７４】
索引結合（インオーダ実行）によるクエリ実行計画案２では、クエリ１の場合と同様に、表Ｒをスキャン（走査）しながら、索引ＩＳを参照して表Ｓを検索し、結果を出力する（＃１）。
【０１７５】
次に、クエリ実行計画案２によってクエリ結果を取得した場合の性能を算出する。まず、実行時間について計算する。フィールドＲ１には索引が作成されており、クエリ１とは異なり選択率が１００％であることから、表Ｒの全レコード（レコード数：１Ｇ）を取得し、さらに、索引ＩＳを経由して表Ｓからレコード（フィールドＳ３）が取得される。したがって、表Ｒの全レコード（レコード数：１Ｇ）の全レコードをランダムアクセスし、その後、表Ｓから全レコード（レコード数：１００Ｇ）の全レコードをランダムアクセスすることになる。したがって、ボリューム１及びボリューム２にアクセスする時間はほぼ同じ時間となる。以上より、ステップ＃１の実行時間Ｔ１は、（１Ｇ÷１００ＩＯＰＳ）＋（１００Ｇ÷１００ＩＯＰＳ）＝１０１０００００００秒となる。
【０１７６】
続いて、消費電力量について計算する。消費電力については、クエリ１の場合と同様であり、ボリューム１（表Ｒ）の消費電力は１００Ｗ、ボリューム２の消費電力は１０１Ｗとなる。したがって、消費電力量Ｊ１は、１００Ｗ×１０１０００００００秒＋１０１Ｗ×１０１０００００００秒＝２０３０１０００００００Ｊとなる。
【０１７７】
続いて、最大消費電力について計算する。前述のように、クエリを実行している間、ボリューム１の消費電力は１００Ｗ、ボリューム２の消費電力は１０１Ｗとなる。したがって、クエリ実行計画案２の最大消費電力は、クエリ１の場合と同じく、各ボリュームの合計消費電力の最大値となるため、１００＋１０１＝２０１Ｗとなる。
【０１７８】
索引結合によるクエリ実行計画案３では、アウトオブデータ実行の場合であっても、インオーダ実行の場合と同様に、表Ｒをスキャン（走査）しながら、索引ＩＳを参照して表Ｓを検索し、結果を出力する（＃１）。また、クエリ１の場合と同様に、多重度ｘはパラメータの最適化時に決定するため、変数ｘの状態で各性能を算出する。
【０１７９】
実行時間は、クエリ実行計画案２の場合と同様に、表Ｒの全レコードを取得し、表Ｓについても同様に全レコードを取得し、各ボリュームのスループットは、クエリ１の場合と同じである。したがって、ボリューム１の実行時間は、１Ｇ÷ｆ（ｘ×１÷１０１）ＩＯＰＳ、ボリューム２の実行時間は、１００Ｇ÷ｆ（ｘ×１００÷１０１）ＩＯＰＳとなり、各ボリュームの実行時間の最大値が全体の実行時間となる。
【０１８０】
消費電力量Ｊ１は、クエリ１の場合と同様に、ｇ（ｘ×１÷１０１）×（ボリューム１の実行時間）＋ｇ（ｘ×１００÷１０１）×（ボリューム２の実行時間）となる。また、最大消費電力Ｐ１はｇ（ｘ×１÷１０１）＋ｇ（ｘ×１００÷１０１）となる。
【０１８１】
以上のように、クエリ実行計画１から３についてコストを計算した結果をクエリ実行計画管理表に書き込む。図３０は、本発明の第１実施形態において閾値を指定せずに実行時間の低減を優先してクエリ２を処理した場合のクエリ実行計画表の一例を示す図である。この場合、実行時間（全体）が最短のクエリ実行計画案が選択される。クエリ実行計画案１の実行時間が１０１０００秒、クエリ実行計画案２の実行時間が１０１０００００００秒、クエリ実行計画案３の実行時間が１０１０００００秒であるため、クエリ実行計画案１が選択される。なお、クエリ実行計画案３では実行時間がもっとも短くなるように多重度ｘには１００が決定される。
【０１８２】
以上のように、本発明の第１実施形態の計算機システム１０では、データベース管理システム１５０の制御によって電力消費量を調整することができる。したがって、ハードウェアに対して大規模な投資を必要とせずにソフトウェアの制御で消費電力量を調整できるため、電力消費に伴うランニングコストの増大を抑制することができる。
【０１８３】
また、本発明の第１実施形態の計算機システム１０では、最大消費電力量を抑制することができるため、瞬間的に使用可能な電力量の上限を超過することによって電源供給が不安定になることを防止することができる。
【０１８４】
さらに、本発明の第１実施形態の計算機システム１０では、時間ごとに消費電力量の閾値を設定することによって、電力使用量を平準化することが可能となる。例えば、電力の使用量の多い昼間には消費電力量を抑制し、電力の使用量の少ない夜間には消費電力量を多く使用できるようにすることができる。これにより、気温や天気などの外的な要因による電力消費量の変化にも柔軟に対応することが可能となる。
【０１８５】
（第２実施形態）
本発明の第１実施形態では、外部ストレージ装置２００の電力特性情報に基づいて消費電力等の実行コストを算出していたが、第２実施形態では、データベースサーバ１００の消費電力を考慮して実行コストを算出する例について説明する。
【０１８６】
図３１は、本発明の第２実施形態の計算機システム１０の構成を示す図である。本発明の第２実施形態の計算機システム１０は、第１実施形態の計算機システムと同様に、データベースサーバ１００及び外部ストレージ装置２００を含む。なお、第１実施形態の計算機システム１０と共通の構成については説明を省略し、相違する構成について説明する。
【０１８７】
本実施形態のデータベースサーバ１００には、第１実施形態のデータベースサーバ１００の構成に加えてデータベース管理システム（ＤＢＭＳ）１５０に、サーバ電力制御部１５５、ＣＰＵ・主記憶状態情報１５６、サーバ電力特性情報管理部１５７及びサーバ電力特性情報１５８が含まれている。
【０１８８】
サーバ電力制御部１５５は、データベースサーバ１００の消費電力を制御する。本実施形態では、ＣＰＵ１１０及び主記憶１２０を複数備えており、必要に応じて１又は複数のＣＰＵ１１０及び主記憶１２０が使用される。なお、ＣＰＵ１１０は、ＣＰＵスロットと呼ばれる接続端子を有する電子部品によって搭載される。また、主記憶１２０は、同様に、主記憶スロットと呼ばれる接続端子を有する電子部品によって搭載される。ＣＰＵ１１０及び主記憶１２０はスロット単位で管理するようにしてもよい。
【０１８９】
サーバ電力制御部１５５は、使用するＣＰＵ１１０、主記憶１２０の数を増減させることによって実行性能及び消費電力を調整する。ＣＰＵ・主記憶状態情報１５６は、ＣＰＵ１１０、主記憶１２０の状態を管理するための情報である。ＣＰＵ・主記憶状態情報１５６の詳細については図３７にて後述する。
【０１９０】
サーバ電力特性情報管理部１５７は、データベースサーバ１００の電力特性情報を管理する。具体的には、ＣＰＵ１１０及び主記憶１２０による消費電力などの電力特性情報を取得し、サーバ電力特性情報１５８として記録する。サーバ電力特性情報管理部１５７による処理の詳細については図３２にて後述する。サーバ電力特性情報１５８の詳細は図３８にて後述する。
【０１９１】
なお、第２実施形態の外部ストレージ装置２００の構成は、第１実施形態の外部ストレージ装置の構成と同じである。
【０１９２】
続いて、本発明の第２実施形態の計算機システム１０における処理について説明する。第１実施形態と共通の処理については説明を省略する。
【０１９３】
図３２は、本発明の第２実施形態のサーバ電力特性情報生成処理の手順を示すフローチャートである。サーバ電力特性情報生成処理は、データベースサーバ１００で実行されるＤＢＭＳ１５０に含まれるサーバ電力特性情報管理部１５７によって実行される。サーバ電力特性情報生成処理は、データベースサーバ１００で所定のタイミングで実行され、例えば、定時に実行するようにしてもよいし、所定の時間間隔で実行するようにしてよいし、データベースサーバ１００が所定の状態になった場合に実行するようにしてもよい。
【０１９４】
データベースサーバ１００のＣＰＵ１１０は、サーバ電力特性情報生成処理が開始されると、まず、ＣＰＵ１１０が無負荷状態であるか否かを判定する（ステップＳ３０１）。ＣＰＵ１１０の無負荷状態とは、クエリなどを処理していない状態である。ＣＰＵ１１０が無負荷状態でない場合には（ステップＳ３０１の結果が「Ｆ」）、ＣＰＵ１１０は、無負荷状態になるまで待機する（ステップＳ３０２）。
【０１９５】
ＣＰＵ１１０が無負荷状態である場合には（ステップＳ３０１の結果が「Ｔ」）、ＣＰＵ１１０は、各ＣＰＵ１１０に対してステップＳ３０４からステップＳ３０６までの処理を実行する（ステップＳ３０３）。
【０１９６】
ＣＰＵ１１０は、まず、電力特性情報を生成する対象のＣＰＵ１１０をスリープ状態（スリープ化）及びアクティブ状態（アクティブ化）に移行させ、各状態の消費電力量を計測する（ステップＳ３０４）。アクティブ状態とは、演算処理を実行可能な状態である。一方、スリープ状態とは、演算処理を実行できないかわりに供給する電力を削減して消費電力を低減している状態である。なお、省電力状態として、アクティブ状態よりも演算処理が低速になる代わりに消費電力を抑制する状態を設けてもよい。消費電力を抑制するためには、例えば、供給する電力を削減させたり、周波数を低減させたりする。
【０１９７】
次に、ＣＰＵ１１０は、周波数、供給電力を変更し、各状態における複数種類の負荷量となる処理を実行し、負荷量ごとにスループット及び消費電力を計測する（ステップＳ３０５）。
【０１９８】
ステップＳ３０４及びステップＳ３０５の処理が終了すると、ＣＰＵ１１０は、対象のＣＰＵ１１０に対応するサーバ電力特性情報１５８を更新する（ステップＳ３０６）。以上の処理をすべてのＣＰＵ１１０に対して実行し、サーバ電力特性情報１５８を生成する。
【０１９９】
続いて、ＣＰＵ１１０は、主記憶１２０を設置する主記憶スロットに対してステップＳ３０８及びステップＳ３０９の処理を実行する（ステップＳ３０７）。
【０２００】
ＣＰＵ１１０は、電力特性情報を生成する対象の主記憶１２０をスリープ状態（スリープ化）及びアクティブ状態（アクティブ化）に移行させ、各状態に移行するための時間と各状態における消費電力量を計測する（ステップＳ３０８）。アクティブ状態とは、電力が供給されており、主記憶１２０にデータを読み書きできる状態である。一方、スリープ状態とは、電力が供給されておらず、主記憶１２０にデータを読み書きできない状態である。ここでは、主記憶１２０の状態として、アクティブとスリープの２種類を述べているが、これ以外の状態、例えば、アクティブ状態より低速でアクセス可能であってアクティブ状態より消費電力が低い状態があってもよい。
【０２０１】
ＣＰＵ１１０は、対象の主記憶スロットに対応するサーバ電力特性情報１５８を更新する（ステップＳ３０６）。以上の処理をすべての主記憶スロットに対して実行し、サーバ電力特性情報１５８を生成する。
【０２０２】
続いて、電力制御命令を制御対象に対して発行する電力制御命令発行処理について説明する。図３３は、本発明の第２実施形態の電力制御命令発行処理の手順を示すフローチャートである。電力制御命令発行処理は、データベースサーバ１００で実行されるＤＢＭＳ１５０に含まれるサーバ電力制御部１５５によって実行される。
【０２０３】
ＣＰＵ１１０は、まず、外部ストレージ装置２００に対する電力制御命令を発行する（ステップＳ２０１、ステップＳ２０２）。ステップＳ２０１及びステップＳ２０２の処理については第１実施形態と同じ処理なので説明を省略する。
【０２０４】
次に、ＣＰＵ１１０は、クエリ実行計画に指定されている電力制御命令が、ＣＰＵ電力制御命令を含むか否かを判定する（ステップＳ２０３）。クエリ実行計画に指定されている電力制御命令が、ＣＰＵ電力制御命令を含む場合には（ステップＳ２０３の結果が「Ｔ」）、ＣＰＵ電力制御処理を実行する（ステップＳ２０４）。なお、ＣＰＵ電力制御処理の詳細については、図３４にて後述する。
【０２０５】
最後に、ＣＰＵ１１０は、クエリ実行計画に指定されている電力制御命令が、主記憶電力制御命令を含むか否かを判定する（ステップＳ２０５）。クエリ実行計画に指定されている電力制御命令が、主記憶電力制御命令を含む場合には（ステップＳ２０５の結果が「Ｔ」）、主記憶電力制御処理を実行する（ステップＳ２０６）。なお、主記憶電力制御処理の詳細については、図３５にて後述する。
【０２０６】
ここで、データベースサーバ１００における電力制御処理について説明する。まず、ＣＰＵ１１０に対する電力制御について説明する。図３４は、本発明の第２実施形態のＣＰＵ電力制御処理の手順を示すフローチャートである。ＣＰＵ電力制御処理は、データベースサーバ１００で実行されるＤＢＭＳ１５０に含まれるサーバ電力制御部１５５によって実行される。
【０２０７】
ＣＰＵ１１０は、まず、ＣＰＵ電力制御命令の内容を判定する（ステップＳ３１１）。本実施形態では、ＣＰＵ１１０のスリープ化、周波数・電圧変更、ＣＰＵ１１０のアクティブ化の３種類が設定可能となっている。
【０２０８】
ＣＰＵ１１０は、ＣＰＵ電力制御命令の内容が「スリープ化」の場合には、スリープ化の対象となるＣＰＵ１１０が処理しているタスクがあるか否かを判定する（ステップＳ３１２）。ＣＰＵ１１０が処理しているタスクがある場合には（ステップＳ３１２の結果が「Ｔ」）、処理中のタスクを他のアクティブなＣＰＵに移動させる（ステップＳ３１３）。
【０２０９】
ＣＰＵ１１０は、処理中のタスクがない場合（ステップＳ３１２の結果が「Ｆ」）、又は、処理中のタスクを他のアクティブなＣＰＵに移動させた場合には、対象のＣＰＵをスリープ化する（ステップＳ３１４）。さらに、ＣＰＵ・主記憶状態情報１５６の対応するＣＰＵ１１０のモードをスリープ状態に更新する（ステップＳ３１５）。
【０２１０】
また、ＣＰＵ１１０は、ＣＰＵ電力制御命令の内容が「周波数・電圧変更」の場合には、対象となるＣＰＵ１１０の周波数・電圧を変更する（ステップＳ３１６）。さらに、ＣＰＵ・主記憶状態情報１５６の対応するＣＰＵ１１０の情報を更新する（ステップＳ３１７）。
【０２１１】
ＣＰＵ１１０は、ＣＰＵ電力制御命令の内容が「アクティブ化」の場合には、対象のＣＰＵ１１０をアクティブ化する（ステップＳ３１８）。さらに、他のアクティブなＣＰＵ１１０によって処理中のタスクを対象のＣＰＵ１１０に移動させる（ステップＳ３１９）。例えば、負荷の高いＣＰＵ１１０から移動させてもよいし、待機している処理が割り当てられているＣＰＵ１１０から移動させてもよい。最後に、ＣＰＵ・主記憶状態情報１５６の対応するＣＰＵ１１０のモードをアクティブ状態に更新する（ステップＳ３２０）。
【０２１２】
続いて、主記憶１２０に対する電力制御について説明する。図３５は、本発明の第２実施形態の主記憶電力制御処理の手順を示すフローチャートである。主記憶電力制御処理は、データベースサーバ１００で実行されるＤＢＭＳ１５０に含まれるサーバ電力制御部１５５によって実行される。
【０２１３】
ＣＰＵ１１０は、まず、主記憶電力制御命令の内容を判定する（ステップＳ３３１）。本実施形態では、主記憶１２０のスリープ化又はアクティブ化が設定可能となっている。
【０２１４】
ＣＰＵ１１０は、主記憶電力制御命令の内容が「スリープ化」の場合には、スリープ化の対象となる主記憶１２０にデータが記憶されているか否かを判定する（ステップＳ３３２）。主記憶１２０にデータが記憶されている場合には（ステップＳ３３２の結果が「Ｔ」）、記憶されているデータを他のアクティブな主記憶１２０に移動させる（ステップＳ３３３）。
【０２１５】
ＣＰＵ１１０は、対象となる主記憶１２０にデータが記憶されていない場合（ステップＳ３３２の結果が「Ｆ」）、又は、記憶されているデータを他のアクティブな主記憶１２０に移動させた場合には、対象の主記憶をスリープ化する（ステップＳ３３４）。さらに、ＣＰＵ・主記憶状態情報１５６の対応する主記憶１２０のモードをスリープ状態に更新する（ステップＳ３３５）。
【０２１６】
一方、主記憶電力制御命令の内容が「スリープ化」の場合には、対象の主記憶１２０をアクティブ化する（ステップＳ３３６）。さらに、他のアクティブなＣＰＵ１１０によって処理中のタスクを対象のＣＰＵ１１０に移動させる（ステップＳ３３７）。例えば、各主記憶１２０に記憶されているデータ量を平準化させるようにしてもよいし、空き容量の少ない主記憶１２０からデータを移動させてもよい。最後に、ＣＰＵ・主記憶状態情報１５６の対応する主記憶１２０のモードをアクティブ状態に更新する（ステップＳ３３８）。
【０２１７】
続いて、ＣＰＵ・主記憶状態情報１５６の構成について説明する。図３６は、本発明の第２実施形態のＣＰＵ・主記憶状態情報１５６の一例を示す図であり、（Ａ）はＣＰＵ１１０の状態、（Ｂ）は主記憶１２０の状態を示している。
【０２１８】
ＣＰＵ・主記憶状態情報１５６は、ＣＰＵ１１０の識別子１５６１及びＣＰＵ１１０の電力モード１５６２、主記憶スロットの識別子１５６３及び主記憶スロットの電力モード１５６４によって構成される。ＣＰＵ１１０は、ＣＰＵスロットに装着され、ＣＰＵスロットごとに管理するようにしてもよい。主記憶１２０は、一又は複数の記憶媒体が収容される主記憶スロットごとに管理される。
【０２１９】
ＣＰＵ１１０の電力モード１５６２には、アクティブ状態、スリープ状態などが設定可能となっており、周波数・電圧の変更に応じた省電力状態などを設定可能としてもよい。周波数・電圧を複数段階設定可能な場合には、複数の省電力状態を設定可能としてもよいし、周波数・電圧に対応する項目をＣＰＵ・主記憶状態情報１５６に追加してもよい。また、主記憶スロットの電力モード１５６４には、アクティブ状態、スリープ状態などが設定可能となっている。
【０２２０】
以上がデータベースサーバ１００における電力制御の説明である。補足として、本実施形態におけるクエリ実行部１５３によるタスク生成処理について説明する。図３７は、本発明の第２実施形態のタスク生成処理の手順を示すフローチャートである。ステップＳ２３１からステップＳ２３４までの処理は、第１実施形態と同じである。第２実施形態では、いずれかのＣＰＵ１１０に生成されたタスクを割り当てるのではなく、スリープ状態のＣＰＵ１１０を除くアクティブ状態のＣＰＵ１１０に生成されたタスクを割り当て、当該生成されたタスクの実行を開始する（ステップＳ２３６）。
【０２２１】
以上が本発明の第２実施形態の構成及び制御である。続いて、本発明の第２実施形態の適用例を図３８から図４０を参照しながら説明する。まず、本発明の第２実施形態におけるデータベースサーバ１００のサーバ電力特性情報１５８について説明する。外部ストレージ装置２００のストレージ電力特性情報２１５は第１実施形態と同じである。
【０２２２】
図３８は、本発明の第２実施形態のデータベースサーバ１００のサーバ電力特性情報１５８を示す図である。本実施形態では、各ＣＰＵ１１０及び各主記憶スロットは同じ性能となっており、処理速度に関連する性能特性と消費電力に関連する電力特性について説明する。データベースサーバ１００には、ＣＰＵ１１０及び主記憶スロットがそれぞれ４個備えられている。また、電力モードは、ＣＰＵ１１０及び主記憶スロットいずれもアクティブ状態とスリープ状態のいずれかが設定可能となっている。
【０２２３】
まず、ＣＰＵ１１０について説明する。ＣＰＵ１１０は、それぞれ同じ性能となっている。データベースアクセス時には、実行しているタスクの多重度ｘに応じて利用率が決定する。１ＣＰＵの多重度ｘは最大５０となっており、一のタスクを実行するごとに利用率が２％加算され、利用率ｓ（ｘ）はｘ×２％となる。
【０２２４】
ＣＰＵ１１０の電力特性は、各ＣＰＵ１１０について、アクティブ状態、かつ、無負荷の場合には１００Ｗの消費電力となっている。データベースアクセス時には、最大１５０Ｗの消費電力となり、多重度ｘに対して消費電力ｔ（ｘ）は１００Ｗ＋（１５０Ｗ−１００Ｗ）×ｓ（ｘ）となる。また、スリープ状態の消費電力は１０Ｗとなっている。なお、ＣＰＵ１１０の状態の遷移に要する時間及び電力は、無視できるほど小さくなっている。
【０２２５】
続いて、主記憶１２０について説明する。主記憶１２０は、所定の電力が供給されていない場合にはデータの保持を継続することができないため、アクティブ状態の場合にのみ性能を発揮することができる。電力特性としては、アクティブ状態では１０Ｗ、スリープ状態では１Ｗとなっている。また、主記憶１２０の状態の遷移に要する時間及び電力は、ＣＰＵ１１０の場合と同様に、無視できるほど小さくなっている。
【０２２６】
以上示したサーバ電力特性情報１５８に基づいてＣＰＵ１１０及び主記憶１２０の電力を制御した一例を図３９及び図４０に示す。図３９は、本発明の第２実施形態のデータベースサーバ１００におけるＣＰＵ１１０に対する電力制御による消費電力の低減を説明する図であり、（Ａ）は電力制御実行前、（Ｂ）は電力制御実行後を示す。図４０は、本発明の第２実施形態のデータベースサーバ１００における主記憶１２０に対する電力制御による消費電力の低減を説明する図であり、（Ａ）は電力制御実行前、（Ｂ）は電力制御実行後を示す。
【０２２７】
図３９を参照すると、電力制御を実行する前には、ＣＰＵ１からＣＰＵ４すべてのＣＰＵがアクティブ状態になっており、ＣＰＵ１及びＣＰＵ２の利用率が６０％、ＣＰＵ３及びＣＰＵ４の利用率が４０％となっている。消費電力は、ＣＰＵ１及びＣＰＵ２が１６０Ｗ、ＣＰＵ３及びＣＰＵ４が１４０Ｗとなり、全体で６００Ｗとなる。
【０２２８】
これに対し、本実施形態の電力制御を実行することによって、ＣＰＵ１及びＣＰＵ２の多重度ｘを５０として利用率を高くしてＣＰＵ３及びＣＰＵ４の多重度ｘを０とし、さｒない、スリープ状態に移行させることで、消費電力は、ＣＰＵ１及びＣＰＵ２が２００Ｗ、ＣＰＵ３及びＣＰＵ４が１０Ｗとなる。この結果、消費電力は全体で４２０Ｗとなり、１８０Ｗの電力を削減することができる。
【０２２９】
以上のように、各ＣＰＵの利用率（多重度）を調整することによって、消費電力を削減することが可能となる。ＣＰＵをスリープ状態に移行すると、大幅に消費電力を削減することができるため、利用率の低いＣＰＵで実行されているタスクを他のＣＰＵで実行するように制御することによって全体の消費電力を削減することができる。また、パラメータとして設定された多重度に応じて使用可能なＣＰＵを限定してもよい。
【０２３０】
図４０を参照すると、電力制御を実行する前には、主記憶スロット１から主記憶スロット４すべての主記憶がアクティブ状態になっている。ここで、使用する主記憶１２０を主記憶スロット１及び主記憶スロット２に集中させることによって主記憶スロット３及び主記憶スロット４をスリープ状態に移行させることができる。これにより、主記憶スロット３及び主記憶スロット４の消費電力を１０Ｗから１Ｗに削減することが可能となり、全体として１８Ｗの消費電力を削減することができる。
【０２３１】
本発明の第２実施形態によれば、外部ストレージ装置２００だけでなく、データベースサーバ１００の消費電力を削減することができるので、計算機システム全体の消費電力をより削減することができる。
【０２３２】
（第３実施形態）
第２実施形態では、外部ストレージ装置２００の電力を制御するとともに、データベースサーバ１００の消費電力を制御していた。第３実施形態では、さらに、クエリの精度を低下させることによって消費電力を制御する例について説明する。本実施形態では、クエリの精度を指定する特殊な入出力命令（「部分処理」可能指示子）を発行する。
【０２３３】
図４１は、本発明の第３実施形態の計算機システム１０の構成を示す図である。本発明の第３実施形態の計算機システム１０は、第２実施形態の計算機システムと同様に、データベースサーバ１００及び外部ストレージ装置２００を含む。なお、第２実施形態の計算機システム１０と共通の構成については説明を省略し、相違する構成について説明する。
【０２３４】
第３実施形態のデータベースサーバ１００は、第２実施形態のＤＢＭＳ１５０の構成にスリープ計画表１５９を追加したものである。その他の構成については、第２実施形態と同じである。スリープ計画表１５９は、データベースサーバ１００のＣＰＵ１１０及び外部ストレージ装置２００によって提供されるボリュームをスリープ化させるタイミングを設定するための情報である。スリープ計画表１５９の詳細については図４６にて後述する。
【０２３５】
本実施形態では、クエリの精度の調整は、クエリ実行計画生成部１５２及びクエリ実行部１５３によって行われる。なお、外部ストレージ装置２００の構成は、第２実施形態と同じである。以下、クエリ実行計画生成部１５２及びクエリ実行部１５３による処理について説明する。
【０２３６】
まず、クエリ実行計画生成処理について説明する。図４２は、本発明の第３実施形態のクエリ実行計画生成処理の手順を示すフローチャートである。本実施形態のクエリ実行計画生成処理は、第１実施形態のクエリ実行計画生成処理のステップＳ１１２とステップＳ１１３の処理の間に部分処理を実行するための処理が追加される。
【０２３７】
部分処理の実行についてさらに説明すると、本実施形態では、クエリを示すＳＱＬに部分処理可能指示子を含ませることができる。部分処理は、一部のボリュームをクエリの実行範囲から除外する。これにより、クエリの実行を高速化及び省電力化することが可能となるが、検索結果の精度が低下する。例えば、平均値などを算出する集計関数を利用して検索結果を取得する場合に、概算した結果を把握できれば十分で、迅速に処理結果を取得したい場合などに利用することができる。
【０２３８】
データベースサーバ１００のＣＰＵ１１０は、一以上のクエリ実行計画案を作成すると（ステップＳ１１２）、受信したクエリに部分処理可能指示子を含むか否かを判定する（ステップＳ４０１）。部分処理可能指示子を含む場合には（ステップＳ４０１の結果が「Ｔ」）、受信したクエリに対し、一以上の部分処理クエリ実行計画案を生成する部分処理クエリ実行計画案生成処理を実行する（ステップＳ４０２）。部分処理クエリ実行計画案生成処理の詳細については、図４３にて後述する。ＣＰＵ１１０は、部分処理クエリ実行計画案生成処理実行後、ステップＳ１１３以降の処理を実行する。なお、受信したクエリに部分処理可能指示子を含むか否かを判定は、受信したクエリを表すＳＱＬ文字列が、部分処理可能指示子を表す文字列（例えば、／＊  ＥＮＡＢＬＥ＿ＰＡＲＴＩＡＬ＿ＰＲＯＣＥＳＳＩＮＧ  ＊／）を含むか否かで判定してもよく、または、ＤＢＭＳ１５０の設定ファイル等に部分処理可能指示子を表す命令を含むか否かで判定してもよい。ＤＢＭＳ１５０の設定ファイルで部分処理可能指示子を指定する場合には、例えば、計算機システム全体で部分処理可能であることを指示することになる。
【０２３９】
次に、部分処理クエリ実行計画案生成処理について説明する。図４３は、本発明の第３実施形態の部分処理クエリ実行計画案生成処理の手順を示すフローチャートである。部分処理クエリ実行計画案生成処理は、データベースサーバ１００で実行されるＤＢＭＳ１５０に含まれるクエリ実行計画生成部１５２によって実行される。
【０２４０】
ＣＰＵ１１０は、まず、外部ストレージ装置２００からボリューム状態情報２１３を取得するボリューム状態情報取得処理を実行する（ステップＳ４１１）。ボリューム状態情報取得処理の詳細については、図４４にて後述する。
【０２４１】
次に、ＣＰＵ１１０は、部分処理可能指示子に基づいて、ボリューム状態情報２１３及びＣＰＵ・主記憶状態情報１５６を参照し、ボリューム及びＣＰＵ１１０のスリープ計画を作成する（ステップＳ４１２）。
【０２４２】
さらに、ＣＰＵ１１０は、生成済みの各クエリ実行計画案に対し、ステップＳ４１４以降の処理を実行する（ステップＳ４１３）。
【０２４３】
ＣＰＵ１１０は、まず、クエリ実行計画案を複製する（ステップＳ４１４）。さらに、複製されたクエリ実行計画案の各ステップに関し（ステップＳ４１５）、部分処理を実行するための設定を行う。具体的には、部分処理を実行するためのステップの実行直前の電力制御命令、実行直後の電力制御命令、及び部分処理フラグを付与する（ステップＳ４１６）。
【０２４４】
続いて、ボリューム状態情報２１３を取得するための処理を説明する。図４４は、本発明の第３実施形態のボリューム状態情報取得処理の手順を示すフローチャートである。ボリューム状態情報取得処理、データベースサーバ１００で実行されるＤＢＭＳ１５０に含まれるクエリ実行計画生成部１５２によって実行される。
【０２４５】
ＣＰＵ１１０は、ボリューム状態情報取得処理が開始されると、まず、外部ストレージ装置２００にボリューム状態情報取得命令を発行する（ステップＳ４２１）。その後、外部ストレージ装置２００から送信されたボリューム状態情報を受信する（ステップＳ４２２）。
【０２４６】
次に、ボリューム状態情報取得命令を受信した外部ストレージ装置２００によるボリューム状態情報送信処理について説明する。図４５は、本発明の第３実施形態のボリューム状態情報送信処理の手順を示すフローチャートである。ボリューム状態情報送信処理は、外部ストレージ装置２００の制御部２１０に含まれるストレージ電力制御部２１２によって実行される。
【０２４７】
外部ストレージ装置２００の制御部２１０は、データベースサーバ１００からボリューム状態情報取得命令を受信すると（ステップＳ４３１）、ボリューム状態情報２１３を取得し、データベースサーバ１００に送信する（ステップＳ４３２）。なお、ボリューム状態情報取得命令にボリュームが指定されている場合には、指定されたボリュームの情報のみを送信するようにしてもよい。
【０２４８】
続いて、ボリューム及びＣＰＵ１１０のスリープ計画表１５９について説明する。図４６は、本発明の第３実施形態のボリューム及びＣＰＵ１１０のスリープ計画表１５９の一例を示す図である。スリープ計画表１５９は、前述のように、データベースサーバ１００のＤＢＭＳ１５０に含まれる。
【０２４９】
スリープ計画表１５９は、ボリューム・ＣＰＵを識別する識別子１５９１とスリープ計画１５９２とを含む。スリープ計画１５９２では、図４６に示すように、対象のボリューム又はＣＰＵをスリープ化させるタイミングなどが格納される。なお、スリープ計画表１５９の各レコードは、常時アクティブ化する場合には作成を省略し、ボリューム又はＣＰＵ１１０をスリープ化させる場合にのみ対応するレコードを作成するようにしてもよい。
【０２５０】
続いて、クエリ実行部１５３における処理について説明する。図４７は、本発明の第３実施形態のアウトオブオーダ実行処理の手順を示すフローチャートである。第１実施形態のアウトオブオーダ実行処理との相違点は、データタスク駆動処理の開始時に、オペレーションを実行するために必要な新たなデータがスリープ対象に指定されたボリュームに格納されているか否かを判定する点である。この点を除き、第１実施形態のデータタスク駆動処理と同じ処理である。
【０２５１】
ＣＰＵ１１０は、データタスク駆動処理が開始されると、最初にオペレーションを実行するために必要な新たなデータがスリープ対象に指定されたボリュームに格納されているか否かを判定する（ステップＳ４４１）。新たなデータがスリープ対象に指定されたボリュームに格納されている場合には（ステップＳ４４１の結果が「Ｔ」）、当該オペレーションを実行せずに後続のオペレーションを処理する（ステップＳ２２３）。
【０２５２】
図４８は、本発明の第３実施形態のインオーダ実行処理の手順を示すフローチャートである。第１実施形態のインオーダ実行処理との相違点は、選択されたオペレーションを処理する前に、当該オペレーションを実行するために必要な新たなデータがスリープ対象に指定されたボリュームに格納されているか否かを判定する点である。この点を除き、第１実施形態のインオーダ実行処理と同じ処理である。
【０２５３】
ＣＰＵ１１０は、選択されたオペレーションを処理する前に、当該オペレーションを実行するために必要な新たなデータがスリープ対象に指定されたボリュームに格納されているか否かを判定する（ステップＳ４５１）。新たなデータがスリープ対象に指定されたボリュームに格納されている場合には（ステップＳ４５１の結果が「Ｔ」）、当該オペレーションを実行せずに後続のオペレーションを処理する（ステップＳ２４４）。
【０２５４】
以上が本発明の第３実施形態の構成及び制御である。続いて、本発明の第３実施形態の適用例を図４９から図５４を参照しながら説明する。まず、本発明の第３実施形態におけるデータベースの構成について説明する。図４９は、本発明の第３実施形態のデータベースの構成を説明する図である。
【０２５５】
本例では、ボリューム１からボリューム４までの４個のボリュームが提供され、表Ｒ及び索引ＩＲはボリューム１に格納されている。一方、表Ｓ及び索引ＩＳはボリューム２からボリューム４にハッシュ鍵をＳ２とするハッシュ分散で格納されている。ボリューム２には表Ｓ１及び索引ＩＳ１、ボリューム３には表Ｓ２及び索引ＩＳ２、ボリューム４には表Ｓ３及び索引ＩＳ３が格納されている。また、ハッシュ分散でデータが格納されているため、ボリューム２からボリューム４に表Ｓのデータは均等に格納されている。表Ｒ、索引ＩＲ、表Ｓ及び索引ＩＳの構成は、図２２に示した第１実施形態と同じである。
【０２５６】
次に、本発明の第３実施形態における外部ストレージ装置２００のストレージ電力特性情報２１５について説明する。図５０は、本発明の第３実施形態の外部ストレージ装置２００のストレージ電力特性情報２１５を示す図である。本実施形態では、ボリューム１からボリューム４はすべて同じ性能となっており、図２３に示した第１実施形態の各ボリュームと同じ性能である。
【０２５７】
続いて、実行時の性能を計測するためのクエリについて説明する。図５１は、本発明の第３実施形態のデータベースサーバ１００で実行されるクエリの一例を示す図である。なお、図５１に示したクエリは、図２４（Ａ）に示した第１実施形態のクエリ１と同じであるため説明を省略する。
【０２５８】
また、第１実施形態と同様に、ハッシュ結合、索引結合（インオーダ実行）、索引結合（アウトオブオーダ実行）の３種類のクエリ実行計画案を作成する。ここでは、ハッシュ結合及び索引結合（インオーダ実行）についての説明は省略し、索引結合（アウトオブオーダ実行）の実行計画案３に対して第３実施形態を適用する例について説明する。図５２は、本発明の第３実施形態の索引結合（アウトオブオーダ実行）によってクエリ１を処理するクエリ実行計画案３を説明する図である。なお、実行計画案３については、第１実施形態の実行計画案３と同じである。
【０２５９】
ここで、図５１に示したクエリを、図５２に示したクエリ実行計画案３に基づいて処理した場合の性能について説明する。なお、アウトオブオーダ実行における多重度ｘは１００とする。図５３は、本発明の第３実施形態において部分実行を行わない場合のクエリ実行計画案３による処理性能を示す図であり、（Ａ）は各ボリュームの性能情報、（Ｂ）は各ボリュームの状態を示す。
【０２６０】
部分実行を行わない場合には、（Ａ）に示すように、平均ＩＯＰＳがボリューム１に対して９９ＩＯＰＳ、ボリューム２からボリューム４に対して３３００ＩＯＰＳとなり、合計９９９９ＩＯＰＳとなる。また、（Ｂ）に示すようにすべてのボリュームがアクティブ状態となっている。さらに、消費電力については、ボリューム１が１０１Ｗ、ボリューム２からボリューム４がそれぞれ１３３Ｗとなり、合計５００Ｗとなる。
【０２６１】
図５４は、本発明の第３実施形態において部分実行を行う場合のクエリ実行計画案３による処理性能を示す図であり、（Ａ）はスリープ計画表１５９、（Ｂ）は各ボリュームの性能情報、（Ｃ）は各ボリュームの状態を示す。
【０２６２】
図５４に示す例では、（Ａ）及び（Ｃ）に示すように、ボリューム４をスリープ化して部分実行を行う。そして、（Ｂ）に示すように、平均ＩＯＰＳがボリューム１に対して９９ＩＯＰＳ、ボリューム２及びボリューム３に対して３３００ＩＯＰＳとなり、合計６６９９ＩＯＰＳとなる。また、消費電力については、ボリューム１が１０１Ｗ、ボリューム２及びボリューム３がそれぞれ１３３Ｗ、ボリューム４が１０Ｗとなり、合計３７７Ｗとなる。
【０２６３】
以上のように、本発明の第３実施形態によれば、クエリの部分実行を行うことによって、一部の処理結果を取得できないために精度が低下するが、アクセス対象のボリュームを限定し、アクセス対象でないボリュームをスリープ化することによって消費電力を削減することが可能となる。本実施形態のようにハッシュ分散で各ボリュームに均等にデータが分散して配置されている場合には、例えば、データの平均値を取得する場合に精度が低下する可能性があるものの少ない誤差で概算した結果を得ることが可能となる。このとき、必要な精度は部分実行を行う範囲によって決定すればよい。
【０２６４】
（第４実施形態）
第１実施形態では、外部ストレージ装置２００がデータベースサーバ１００から送信された入出力命令をそのまま処理してデータの入出力を行っていたが、第４実施形態では、受信した入出力命令の処理を遅延することによって省電力化を図る例について説明する。
【０２６５】
図５５は、本発明の第４実施形態の計算機システム１０の構成を示す図である。本発明の第４実施形態の計算機システム１０は、外部ストレージ装置２００の制御部２１０に保留入出力情報２１６を保持する点で第１実施形態の計算機システムと相違する。なお、その他の構成については、第１実施形態の計算機システム１０と共通であり、説明を省略する。
【０２６６】
保留入出力情報２１６は、データベースサーバ１００から送信された入出力命令のうち、保留されている（実行されていない）入出力命令を管理するテーブルである。保留入出力情報２１６の詳細は図６０にて後述する。
【０２６７】
本実施形態の計算機システム１０では、前述のように、入出力命令を遅延して処理可能な遅延入出力モードを備える。遅延入出力モードは、データベース管理システム１５０のクエリ実行部１５３が遅延可能フラグを付与した入出力命令を外部ストレージ装置２００に発行することによって指定される。
【０２６８】
図５６は、本発明の第４実施形態の入出力命令発行処理の手順を示すフローチャートである。入出力命令発行処理は、クエリ実行部１５３によって実行され、アウトオブオーダ実行処理のステップＳ２２１及びインオーダ実行処理のステップＳ２４２の処理で実行される。
【０２６９】
データベースサーバ１００のＣＰＵ１１０は、遅延入出力モードでクエリ処理を実行しているか否かを判定する（ステップＳ５０１）。遅延入出力モードでクエリ処理を実行している場合には（ステップＳ５０１の結果が「Ｔ」）、遅延可能フラグ付きの入出力命令を外部ストレージ装置２００に発行する（ステップＳ５０２）。一方、遅延入出力モードでクエリ処理を実行していない場合には（ステップＳ５０１の結果が「Ｆ」）、通常モード、すなわち、遅延可能フラグを付与していない入出力命令を外部ストレージ装置２００に発行する（ステップＳ５０３）。
【０２７０】
続いて、外部ストレージ装置２００の制御部に備えられる入出力処理部２１１による処理について説明する。第４実施形態の入出力処理では、第１実施形態の入出力処理（図１７）に、遅延入出力を実行するための処理が追加される。図５７は、本発明の第４実施形態の入出力処理の手順を示すフローチャートである。
【０２７１】
制御部２１０は、データベースサーバ１００から入出力命令を受信すると（ステップＳ２５１）、ボリューム状態情報２１３の電力モード２１３２を参照し、データの入出力の対象となるボリュームがスリープ状態であるか否かを判定する（ステップＳ２５２）。入出力の対象となるボリュームがスリープ状態である場合には（ステップＳ２５２の結果が「Ｔ」）、さらに、受信した入出力命令に遅延可能フラグが付与されているか否かを判定する（ステップＳ５１１）。受信した入出力命令に遅延可能フラグが付与されていない場合には（ステップＳ５１１の結果が「Ｆ」）、ステップＳ２５３以降の処理を実行する。
【０２７２】
一方、制御部２１０は、受信した入出力命令に遅延可能フラグが付与されている場合には（ステップＳ５１１の結果が「Ｔ」）、入出力命令保留処理を実行し（ステップＳ５１２）、本処理を終了する。入出力命令保留処理では、受信した入出力命令を保留したり、保留されている入出力命令を処理したりすることを決定する。入出力命令保留処理の詳細については、図５８にて後述する。
【０２７３】
図５８は、本発明の第４実施形態の入出力命令保留処理の手順を示すフローチャートである。入出力命令保留処理は、外部ストレージ装置２００の制御部２１０に含まれる入出力処理部２１１によって実行される。
【０２７４】
制御部２１０は、まず、入出力命令の対象ボリュームに対して所定数（Ｎ個）以上の入出力命令が保留中であるか否かを判定する（ステップＳ５２１）。入出力命令の対象ボリュームに所定値以上の入出力命令が保留中でない場合には（ステップＳ５２１の結果が「Ｆ」）、入出力命令の処理を保留するために、当該入出力命令を保留入出力情報２１６に格納し（ステップＳ５２８）、本処理を終了する。
【０２７５】
制御部２１０は、入出力命令の対象ボリュームに対して所定数以上の入出力命令が保留中である場合には（ステップＳ５２１の結果が「Ｔ」）、対象ボリューム以外の一以上のボリュームをスリープ化する（ステップＳ５２２）。さらに、対象ボリュームをアクティブ化する（ステップＳ５２３）。そして、ボリューム状態情報２１３の電力モード２１３２を更新し（ステップＳ５２４）、最終アクセス時間２１３３を更新する（ステップＳ５２５）。
【０２７６】
次に、制御部２１０は、対象ボリュームにおいて保留されていた入出力命令と、新たに受信した入出力命令を発行する（ステップＳ５２６）。その後、これらの入出力命令による入出力結果をデータベースサーバ１００に送信する（ステップＳ５２７）。
【０２７７】
以上のように、本実施形態では、遅延対象のボリュームであっても所定数以上の入出力命令が保留されている場合には、スループットを向上させるために、対象のボリュームをアクティブ化している。このとき、一以上のアクティブ状態のボリュームをスリープ化することによって、消費電力低減の効果を維持している。なお、スリープ化するボリュームは、入出力命令を受信した回数の少ないボリュームを選択してもよいし、最終アクセス時間２１３３がもっとも古いボリュームを選択してもよい。
【０２７８】
入出力命令保留処理では、対象ボリュームに対する入出力命令が所定数以上の場合には、遅延命令に関わらず保留を解除し、入出力命令を処理するように制御していたが、入出力命令を長時間保留状態にしたままにすると、クエリ全体の処理が遅延する可能性がある。そのため、一定時間以上、入出力命令の処理が保留されているボリュームに対しては、アクティブ化を実行し、入出力命令を処理（再開）するように制御する。
【０２７９】
図５９は、本発明の第４実施形態の保留入出力命令再開処理の手順を示すフローチャートである。保留入出力命令再開処理は、外部ストレージ装置２００の制御部２１０に含まれる入出力処理部２１１によって実行される。
【０２８０】
制御部２１０は、まず、一定時間以上保留された入出力命令を有するボリュームがあるか否かを判定する（ステップＳ５３１）。一定時間以上保留された入出力命令を有するボリュームがない場合には（ステップＳ５３１の結果が「Ｆ」）、本処理を終了する。
【０２８１】
一方、制御部２１０は、一定時間以上保留された入出力命令を有するボリュームがある場合には（ステップＳ５３１の結果が「Ｔ」）、当該ボリューム以外の一以上のボリュームをスリープ化する（ステップＳ５３２）。さらに、当該ボリュームをアクティブ化する（ステップＳ５３３）。そして、ボリューム状態情報２１３の電力モード２１３２を更新し（ステップＳ５３４）、最終アクセス時間２１３３を更新する（ステップＳ５３５）。
【０２８２】
次に、制御部２１０は、当該ボリュームにおいて保留されていた入出力命令を発行する（ステップＳ５３６）。最後に、保留されていた入出力命令による入出力結果をデータベースサーバ１００に送信する（ステップＳ５３７）。
【０２８３】
続いて、保留中の入出力命令を格納する保留入出力情報２１６について説明する。図６０は、本発明の第４実施形態の保留入出力情報２１６の一例を示す図である。保留入出力情報２１６は、前述のように、実行が保留されている入出力命令を格納するテーブルである。保留入出力情報２１６は、対象ボリューム２１６１、入出力種別２１６２、アドレス・サイズ・データ等２１６３、発行元２１６４及び発行時間２１６５を含む。
【０２８４】
対象ボリューム２１６１は、ボリュームを識別する情報を格納する。入出力種別２１６２は、データの入出力を区別するための種別を格納する。入出力種別２１６２には、入力又は出力のみを格納してもよいし、データの読み出し、更新、追加、削除などの内容を格納してもよい。なお、後続の処理で参照する予定のデータを更新する入出力命令が保留されていると、データに不整合が生じてしまう可能性があるため、更新などの入力処理の場合には優先して処理するようにしてもよい。
【０２８５】
アドレス・サイズ・データ等２１６３は、アクセスするデータのアドレス、当該データのサイズ等を格納する。また、データを更新又は追加する場合には、更新内容となるデータを格納する。また、アドレス、サイズ、データ等については、それぞれ個別のフィールドとしてもよい。
【０２８６】
発行元２１６４は、入出力命令を発行したデータベースサーバ１００を識別する情報を格納する。発行時間２１６５は、入出力命令が発行された時刻を格納する。
【０２８７】
以上が本発明の第４実施形態の構成及び制御である。続いて、本発明の第４実施形態の適用例を図６１及び図６２を参照しながら説明する。第４実施形態の適用例におけるデータベースの構成は、第３実施形態の適用例におけるデータベースの構成（図４９）と同じである。また、外部ストレージ装置２００のストレージ電力特性情報２１５は、第３実施形態の適用例におけるストレージ電力特性情報２１５（図５０）と同じである。
【０２８８】
また、第４実施形態の適用例における実行時の性能を計測するためのクエリは、図２４（Ａ）に示した第１実施形態のクエリ１と同じである。さらに、作成されるクエリ実行計画案は、第１実施形態と同様に、ハッシュ結合、索引結合（インオーダ実行）、索引結合（アウトオブオーダ実行）の３種類のクエリ実行計画案を作成するが、ここでは、索引結合（アウトオブオーダ実行）の実行計画案３に対して第４実施形態を適用する例について説明する。実行計画案３は、図２７（Ａ）に示した第１実施形態の実行計画案３と同じである。
【０２８９】
以上の構成において、ボリューム２からボリューム４（表Ｓ）に対する入出力を遅延化させる場合について本実施形態を適用する。なお、多重度ｘは１００とする。図６１は、本発明の第４実施形態において遅延可能フラグを付与せずに入出力命令を発行した場合の各ボリュームの状態を説明する図である。図６２は、本発明の第４実施形態において遅延可能フラグを付与して入出力命令を発行した場合の各ボリュームの状態を説明する図である。
【０２９０】
図６１に示すように、データの入出力を遅延化しない場合には、表Ｓがハッシュ分散によってボリューム２からボリューム４に均等に格納されているため、各ボリュームが均等にアクセスされる。そのため、クエリ１の実行が開始されてから終了するまで各ボリュームがアクティブ状態を継続している。
【０２９１】
一方、図６２に示すように、データの入出力を遅延化する場合には、最初にボリューム４がスリープ化され、ボリューム２及びボリューム３に格納されたデータを優先して取得するように制御される。時間の経過とともにボリューム４に対する入出力命令が所定数に到達し（図５８のステップＳ５２１の結果が「Ｔ」）、若しくは、所定の時間が経過することで（図５９のステップＳ５３１の結果が「Ｔ」）、ボリューム３がスリープ化され（ステップＳ５２２、ステップＳ５３２）、ボリューム４がアクティブ化される（ステップＳ５２３、ステップＳ５３３）。同様に、各ボリュームが順次スリープ化され、消費電力を削減することができる。
【０２９２】
以上のように、本発明の第４実施形態によれば、データを格納するボリュームに対して入出力命令の実行を遅延させることによって省電力機能を発揮させて計算機システム全体の消費電力を削減することができる。
【０２９３】
また、本発明の第４実施形態によれば、タスクの実行順序を入れ替えて処理を実行するため、処理結果の精度を低下させずに、消費電力を削減することができる。また、アクセス回数が多いボリュームは早期にアクティブ化されるため、実行時間の低下を抑制することができる。
【０２９４】
さらに、本発明の第４実施形態では、アクセス頻度の低いボリュームに対する入出力命令を遅延させると、スリープ状態が維持される時間が長くなるため、各ボリュームのアクセス頻度を記録し、アクセス頻度の低いボリュームに対する入出力命令を優先して遅延させるようにしてもよい。
【０２９５】
また、各ボリュームのアクセス頻度を集計するだけでなく、さらにページ単位でアクセス頻度を集計し、アクセス頻度の低いページを特定のボリュームに移動させるようにしてもよい。このように、アクセス頻度に基づいて、データベースのレイアウトを変更することによって、より消費電力を低減させることができる。また、表などのデータベースオブジェクトごとにアクセス頻度を集計し、データベースのレイアウトを変更するようにしてもよい。レイアウトの変更は、管理者の操作に基づいて行ってもよいし、データベースサーバ１００が無負荷状態の場合など所定のタイミングで実行するようにしてもよい。
【０２９６】
以上、本発明の実施形態について説明したが、上記実施形態は本発明の適用例の一部を示したに過ぎず、本発明の技術的範囲を上記実施形態の具体的構成に限定する趣旨ではない。
【符号の説明】
【０２９７】
１０    計算機システム
２０、３０    ネットワーク
１００    データベースサーバ
１１０    ＣＰＵ（演算装置）
１２０    主記憶（主記憶装置）
１３０    アプリケーションプログラム
１４０    オペレーティングシステム（ＯＳ）
１５０    データベース管理システム（ＤＢＭＳ）
１５１    クエリ受付部
１５２    クエリ実行計画生成部
１５３    クエリ実行部
１５４    クエリ実行特性情報
１５５    サーバ電力制御部
１５６    ＣＰＵ・主記憶状態情報
１５７    サーバ電力特性情報管理部
１５８    サーバ電力特性情報（消費電力情報）
１５９    スリープ計画表
１６０    ホストバスアダプタ（ＨＢＡ）
１６１    ネットワークインターフェイスカード（ＮＩＣ）
１８０    ストレージ装置
１９０    電源監視部
１９１    電源
２００    外部ストレージ装置（ストレージ装置）
２１０    制御部
２１１    入出力処理部
２１２    ストレージ電力制御部
２１３    ボリューム状態情報
２１４    ストレージ電力特性情報管理部
２１５    ストレージ電力特性情報（消費電力情報）
２１６    保留入出力情報
２６０    ホストバスアダプタ（ＨＢＡ）
２６１    ネットワークインターフェイスカード（ＮＩＣ）
２８０    ストレージ装置群
２９０    電源監視部
２９１    電源
【図１】
0006690829.tif 000002
【図２】
0006690829.tif 000003
【図３】
0006690829.tif 000004
【図４】
0006690829.tif 000005
【図５】
0006690829.tif 000006
【図６】
0006690829.tif 000007
【図７】
0006690829.tif 000008
【図８】
0006690829.tif 000009
【図９】
0006690829.tif 000010
【図１０】
0006690829.tif 000011
【図１１】
0006690829.tif 000012
【図１２】
0006690829.tif 000013
【図１３】
0006690829.tif 000014
【図１４】
0006690829.tif 000015
【図１５】
0006690829.tif 000016
【図１６】
0006690829.tif 000017
【図１７】
0006690829.tif 000018
【図１８】
0006690829.tif 000019
【図１９】
0006690829.tif 000020
【図２０】
0006690829.tif 000021
【図２１】
0006690829.tif 000022
【図２２】
0006690829.tif 000023
【図２３】
0006690829.tif 000024
【図２４】
0006690829.tif 000025
【図２５】
0006690829.tif 000026
【図２６】
0006690829.tif 000027
【図２７】
0006690829.tif 000028
【図２８】
0006690829.tif 000029
【図２９】
0006690829.tif 000030
【図３０】
0006690829.tif 000031
【図３１】
0006690829.tif 000032
【図３２】
0006690829.tif 000033
【図３３】
0006690829.tif 000034
【図３４】
0006690829.tif 000035
【図３５】
0006690829.tif 000036
【図３６】
0006690829.tif 000037
【図３７】
0006690829.tif 000038
【図３８】
0006690829.tif 000039
【図３９】
0006690829.tif 000040
【図４０】
0006690829.tif 000041
【図４１】
0006690829.tif 000042
【図４２】
0006690829.tif 000043
【図４３】
0006690829.tif 000044
【図４４】
0006690829.tif 000045
【図４５】
0006690829.tif 000046
【図４６】
0006690829.tif 000047
【図４７】
0006690829.tif 000048
【図４８】
0006690829.tif 000049
【図４９】
0006690829.tif 000050
【図５０】
0006690829.tif 000051
【図５１】
0006690829.tif 000052
【図５２】
0006690829.tif 000053
【図５３】
0006690829.tif 000054
【図５４】
0006690829.tif 000055
【図５５】
0006690829.tif 000056
【図５６】
0006690829.tif 000057
【図５７】
0006690829.tif 000058
【図５８】
0006690829.tif 000059
【図５９】
0006690829.tif 000060
【図６０】
0006690829.tif 000061
【図６１】
0006690829.tif 000062
【図６２】
0006690829.tif 000063