JP5304950B2 - データベース管理方法、データベース管理装置及びデータベース管理プログラム - Google Patents
データベース管理方法、データベース管理装置及びデータベース管理プログラム Download PDFInfo
- Publication number
- JP5304950B2 JP5304950B2 JP2012527500A JP2012527500A JP5304950B2 JP 5304950 B2 JP5304950 B2 JP 5304950B2 JP 2012527500 A JP2012527500 A JP 2012527500A JP 2012527500 A JP2012527500 A JP 2012527500A JP 5304950 B2 JP5304950 B2 JP 5304950B2
- Authority
- JP
- Japan
- Prior art keywords
- index
- memory
- database
- data
- database management
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24554—Unary operations; Data partitioning operations
- G06F16/24557—Efficient disk access during query execution
Description
本発明は、データベースに含まれるデータ及びインデクスをメモリに配置して処理可能なデータベースシステムに関する。
近年、インメモリデータベースとディスク型データベースとを組み合わせることによって、データベースシステムの性能の向上を図る技術が提案されている。この技術は、ハードディスク(外部記憶装置、ストレージ装置)に格納されたデータの一部をメモリに配置することによってディスクアクセスの負荷を低減させ、データベース全体の性能を向上させる。
したがって、ハードディスクに格納されたデータをすべてメモリに配置すれば、さらに性能を向上させることも可能である。しかし、データ量が増大すると、メモリ使用量も増大する。また、データベースシステムが稼働する計算機のリソースには制限がある。そのため、限られたリソースを最大限に活かすために、メモリにデータを適切に配置する必要がある。
そこで、特許文献1には、アクセス頻度の高い表又はインデクスを優先して配置することによって、データベースに対するアクセスを高速化する技術が開示されている。
しかし、インメモリデータベースとディスク型データベースとを組み合わせた構成に対し、特開2000−20360号公報に開示された技術を適用しても必ずしも有効であるとは限らない。例えば、インメモリデータベースは、データの入出力時の負荷が小さいため、インデクスの使用による効果が小さい場合がある。そのため、インデクスを使用しないでデータを検索するアクセスプランを選択し、インデクスの代わりにより多くの表をメモリに配置することによって、より性能を向上させることができる場合がある。
本発明は、インメモリデータベースとディスク型データベースとを併用する構成において、メモリ使用量を抑制しながらデータベースの性能を向上させることを目的とする。
本発明の一形態では、データベースシステムにおいて、データを格納する表及び当該データの格納位置を示すインデクスを含むデータベースを管理する方法であって、前記データベースシステムは、前記データベースを管理するデータベース管理装置と、前記データベースを格納する記憶装置と、を有し、前記データベース管理装置は、前記データベースを管理するデータベース管理部と、前記記憶装置に格納されたデータベースの一部を記憶するメモリと、を備え、前記データベース管理部は、前記記憶装置に格納されたデータベースに含まれる表及びインデクスごとのアクセス時間を含む統計情報を管理し、前記方法は、前記データベースに含まれる表を選択する第1のステップと、前記選択された表に定義可能なインデクスを特定する第2のステップと、前記選択された表及び前記特定されたインデクスを前記メモリに記憶した場合に、前記特定されたインデクスの一部又は全部を使用して前記選択された表にアクセスするための処理コストと、前記特定されたインデクスを使用せずに前記選択された表にアクセスするための処理コストとを、前記統計情報に基づいて算出する第3のステップと、前記選択された表を前記メモリに配置可能か否かを、前記選択された表のメモリ使用量に基づいて判定する第4のステップと、前記選択された表を前記メモリに配置可能な場合に、前記算出された処理コスト及び前記特定されたインデクスのメモリ使用量に基づいて、前記特定されたインデクスを前記メモリに配置するか否かを決定する第5のステップと、を含む。
本発明の代表的な一形態によれば、インデクスの使用効果に基づいて当該インデクスをメモリに配置するか否かを決定することによって、メモリ使用量を抑制しながらデータベースの性能を向上させることができる。
以下、本発明の実施の形態について、図面を参照しながら説明する。まず、本発明におけるデータ配置を決定する手順の概要について説明する。
本発明を適用するデータベース管理システムは、ハードディスクなどの外部記憶装置(ストレージ装置)に格納されたデータを処理するディスク型データベースと、RAMなどのメモリに格納されたデータを処理するインメモリデータベースとが併存している。そして、所定の条件を満たす表(テーブル)及びインデクスをメモリに配置することによってシステム全体の性能を向上させる。
(第1の実施の形態)
図1は、本発明の第1の実施の形態に係るデータ配置決定方法の概要を説明する図である。なお、図1に示す各構成の詳細については後述する。
図1は、本発明の第1の実施の形態に係るデータ配置決定方法の概要を説明する図である。なお、図1に示す各構成の詳細については後述する。
本発明の第1の実施の形態のデータ配置決定方法は、データ配置プラン決定ユーティリティ処理部1213によって実行される。
まず、データ配置プラン決定ユーティリティ処理部1213は、データベース(DB)定義情報4020、データ量6010、及びメモリ配置優先度6020に基づいて、配置対象データリスト6050を生成する(S100)。配置対象データリスト6050は、メモリ1200(図2参照)に格納可能な表及びインデクスのリストであり、表及びインデクスごとのメモリ使用量を含む。配置対象データリスト6050の詳細については図7にて後述する。
データベース定義情報4020には、表及びインデクスの定義情報が含まれる。データベース定義情報4020の詳細については後述する。インデクスは、表に格納された各レコードの格納位置を示す情報であり、インデクスを経由してデータを検索することによって、高速にデータを表から取得することが可能になる。インデクスは、レコードに含まれるフィールドに対応して定義される。また、複数のフィールドに対してインデクスを定義してもよい。
配置対象データリスト6050に含まれるインデクスは、データベース定義情報4020に定義済みのインデクスだけでなく、データベース定義情報4020に定義済みのインデクスを組み合わせることによって新たに定義されたインデクスであってもよい。
データ量6010は、表及びインデクスごとの記憶容量である。例えば、運用中のデータベースのデータ配置プランを決定する場合には、ディスク型データベース4010、またはインメモリデータベース1220に実際に格納されている各表及びインデクスの容量を取得すればよい。また、将来的なデータ量の増大に対応可能なデータ配置プランを決定する場合には、例えば、ユーザからデータ件数(レコード件数)の入力を受け付け、入力されたデータ件数及びデータベース定義情報4020に基づいてデータ量を算出することも可能である。
メモリ配置優先度6020は、メモリ1200に配置する表を選択するための優先順位であり、メモリに配置させたい、すなわち、性能を向上させたい表の優先度を高く設定する。メモリ配置優先度6020は、ユーザが設定するものであってもよいし、統計情報4030などに基づいて、データ配置プラン作成時に自動的に設定するようにしてもよい。
例えば、外部記憶装置に格納された表のデータを読み書きする時間(アクセス時間)に基づいて、優先度を設定すればよい。メモリに表を配置することによって、アクセス時間を大幅に削減することができるからである。
さらに、SQLの実行頻度などに基づいて、アクセス頻度の高い表の優先度を高く設定するようにしてもよい。また、データ量の多い表の優先度を高く設定するようにしてもよいし、アクセス頻度とデータ量に基づいて優先度を設定するようにしてもよい。また、参照頻度の多い表の優先度を高く設定するようにしてもよいし、更新頻度が多い表の優先度を高く設定するようにしてもよい。
データ配置プラン決定ユーティリティ処理部1213は、ユーザーアプリケーション(UAP)で実行されるSQLを取得する。そして、取得されたSQLの実行時にアクセスする表を特定し、特定された表に対応するインデクスを利用するか否かを示す情報を含むアクセスパスを生成する(S200)。アクセスパスとは、SQLで指定されたデータを取得するために、表及びインデクスにアクセスする経路である。
データ配置プラン決定ユーティリティ処理部1213は、ディスク型データベースではアクセスパス生成時に通常選択されないアクセスパスも含めて生成する。ディスク型データベースでは、外部記憶装置に格納されたデータをアクセスする際に生じるオーバーヘッドが大きいため、通常、外部記憶装置にアクセスする頻度が大きいアクセスパスを選択しないように制御される。前述したインデクスを使用すると、表に格納されたデータをすべて読み込む(フルスキャンする)必要がなくなるため、外部記憶装置に対するアクセス頻度を少なくすることができる。
一方、インメモリデータベースは、前述のように、メモリ1200に記憶されたデータを入出力するため、オーバーヘッドが少なく、インデクスを使用しなくても性能が著しく悪化するとは限らない。さらに、インデクスを使用しなければ、メモリ1200にインデクスを格納する必要がないため、メモリ使用量を削減することが可能となる。
以上のように、データ配置プラン決定ユーティリティ処理部1213は、すべてのアクセスパスを含むアクセスパス候補リスト6060を生成する。アクセスパス候補リスト6060の詳細については図8にて後述する。
次に、データ配置プラン決定ユーティリティ処理部1213は、統計情報4030に基づいて、アクセスパス候補リスト6060に含まれる各アクセスパスについて、SQL実行コスト(処理コスト)、及び外部記憶装置に対するアクセスコスト(I/Oコスト)を算出する(S300)。SQL実行コスト及びI/Oコストは主として当該SQLの処理時間に基づいて算出されるが、当該SQLの実行頻度などに基づいて算出してもよく、また、メモリ使用量などを加味してもよい。
統計情報4030には、ディスク型データベースにおいて実行されたSQLごとに、実行頻度及び処理時間などが格納されている。統計情報4030の詳細については図6にて後述する。また、各SQLにはアクセスパスが対応付けられており、統計情報4030は、アクセスされた表及びインデクスごとのI/O処理時間を格納されている。なお、統計情報4030に格納されていないアクセスパスの処理コストは、対応するSQLの実行コストなどに基づいて推定する。
以上のように、データ配置プラン決定ユーティリティ処理部1213は、各アクセスパスのSQL実行コストを算出すると、算出されたSQL実行コストを格納するSQL実行コストリスト6070を生成する。SQL実行コストリスト6070には、アクセスパスごとに、I/O処理コスト及びI/O以外の処理コストが格納される。なお、SQL実行コストリスト6070の詳細については図9にて後述する。
配置対象データリスト6050及びSQL実行コストリスト6070が生成されると、データ配置プラン決定ユーティリティ処理部1213は、配置対象データリスト6050、SQL実行コストリスト6070及びメモリ使用量上限値6030に基づいて、データ配置プランを決定する(S400)。
データ配置プランを決定する手順の概要について説明すると、まず、データ配置プラン決定ユーティリティ処理部1213は、配置対象データリスト6050に基づいて優先度の高い表から順に、メモリ使用量上限値6030の範囲内でメモリ1200に配置するデータとして選択する。図1に示した配置対象データリスト6050では、表T2、表T1、表T3の順に選択する。
次に、データ配置プラン決定ユーティリティ処理部1213は、メモリ使用量上限値を超えない範囲で、選択された表のインデクスをメモリに配置する効果と、優先度が次位の表をメモリに配置する効果とを比較する。このとき、表をメモリに配置した場合のI/O処理コストは、外部記憶装置に配置した場合のI/O処理コストと比較すると非常に小さいため、I/O処理コストを除いた処理コストをメモリに配置された場合の処理コストとして効果を比較する。
そして、データ配置プラン決定ユーティリティ処理部1213は、インデクスをメモリに配置する効果が、優先度が次位の表をメモリに配置する効果よりも低い場合に、メモリに配置する対象から除外する。具体的に説明すると、図1に示すSQL実行コストリスト6070では、インデクスI2をメモリに配置する(すなわち、インデクスI2を使用する)ことによって処理コストを40から30に削減することができる。一方、表T2をメモリに配置した場合には、処理コストを200から80に削減することができるため、インデクスI2をメモリに配置するよりも表T2をメモリに配置したほうが効果を高い。したがって、インデクスI2をメモリに配置せずに、表T2をメモリに配置する。
以上のようにして、データ配置プラン決定ユーティリティ処理部1213は、決定データ配置プラン6040を生成する。決定データ配置プラン6040の詳細については後述する。図1の決定データ配置プラン6040では、表T2、T1、T3及びインデクスI3abをメモリ1200に配置する。
決定データ配置プラン6040が生成されると、生成された決定データ配置プラン6040をユーザに提示し、ユーザが決定データ配置プラン6040に基づいてデータ配置定義情報4040を生成するためにデータ配置定義処理を実行する(6140)。そして、データ配置実行部1215は、生成されたデータ配置定義情報4040に基づいて、外部記憶装置に格納された表及びインデクスをメモリに配置する(6150)。
以上、図1を参照しながら本発明の第1の実施の形態によるデータ配置決定方法の概要について説明した。以下、図2を参照しながらデータ配置決定方法が実行されるデータベースシステムの構成について説明する。
図2は、本発明の第1の実施の形態のデータベースシステムの構成を示す機能ブロック図である。
本発明の第1の実施の形態のデータベースシステムは、データベース管理装置1000、端末装置2000、ユーザーアプリケーション(UAP)3000及び外部記憶装置(ストレージ装置)4000を備える。なお、外部記憶装置4000の代わりにデータベース管理装置1000に記憶媒体を備え、外部記憶装置4000に格納される情報を当該記憶装置に格納する構成としてもよい。
データベース管理装置1000は、データベースを管理する計算機である。データベース管理装置1000は、プロセッサ1100、メモリ1200、外部記憶装置入出力インターフェース1300及びネットワークインターフェース1400を備える。
プロセッサ1100は、メモリ1200に記憶されたプログラムであるデータベース管理システム1210を実行することによって、インメモリデータベース(DB)1220及びディスク型データベース(DB)4010を管理する。
メモリ1200は、データベース管理システム1210及びインメモリデータベース1220を記憶する。データベース管理システム1210は、データベースを管理するために必要なプログラム及びデータを含む。データベース管理システム1210の詳細については図3にて後述する。
インメモリデータベース1220は、データを格納する表1221と、表1221に含まれるレコードの格納位置を示す情報を含むインデクス1222とを含む。インメモリデータベース1220は、データベース管理システム1210に含まれるインメモリデータベース管理部1212(図3)によって管理される。
外部記憶装置入出力インターフェース1300は、外部記憶装置(ストレージ装置)4000に接続するためのインターフェースである。また、外部記憶装置4000とは、イーサネット(登録商標)によって接続してもよいし、SAN(Storage Area Network)によって接続してもよい。
ネットワークインターフェース1400は、イーサネットなどによってネットワーク5000に接続されるインターフェースである。データベース管理装置1000は、ネットワーク5000を介して端末装置2000及びUAP3000に接続される。
端末装置2000は、ネットワーク5000を介してデータベース管理装置1000に接続された計算機である。端末装置2000は、データベースを操作するためのコマンドを入力したり、データベースの管理情報を参照したりする。
本発明の第1の実施の形態では、端末装置2000からデータ配置プラン決定ユーティリティ実行要求を送信し、データベース管理システム1210に含まれるデータ配置プラン決定ユーティリティ処理部1213(図3)によって生成された決定データ配置プランを受信し、ユーザに提示する。
データ配置プラン決定ユーティリティ実行要求は、メモリに配置される表の優先順位が定義されたメモリ配置優先度6020と、表及びインデクスを配置可能な容量を示すメモリ使用量上限値6030とを含む。
UAP3000は、データベース管理装置1000で管理されるデータベースに格納されたデータを利用することによって業務を遂行するためのアプリケーションである。UAP3000は、例えば、計算機によって実行されるプログラムであり、ネットワーク5000を介してデータベース管理装置1000にアクセスし、データベースから必要なデータを取得する。
UAP3000には、データベースからデータを取得するためのSQL(Structured Query Language)を実行する処理が含まれている。また、SQLの実行は、UAP3000の内部に定義されたSQLをデータベース管理装置1000に送信するようにしてもよいし、データベース管理装置1000にあらかじめ定義されたSQLの実行を指示するようにしてもよい。
外部記憶装置4000は、いわゆるストレージ装置であり、大容量のデータを格納可能な不揮発性の記憶媒体を備えている。本発明の第1の実施の形態では、不揮発性の記憶媒体として、ハードディスクドライブ(HDD)が搭載されているが、ハードディスクドライブのような磁気記憶媒体ではなく、フラッシュメモリチップなどによって構成されたSSDなどの半導体記憶媒体などであってもよい。
外部記憶装置4000は、ディスク型データベース4010、データベース定義情報4020、及び統計情報4030(図6)を格納する。
ディスク型データベース4010は、データを格納する表4011と、表4011に含まれるレコードの格納位置を示す情報を含むインデクス4012とを含む。表4011及びインデクス4012の構成は、インメモリデータベース1220に含まれる表1221及びインデクス1222と同じである。また、インメモリデータベース1220に含まれる表1221及びインデクス1222は、ディスク型データベース4010にも格納される。なお、インメモリデータベース1220に含まれる表1221及びインデクス1222が更新された場合であっても、ディスク型データベース4010の対応する表4011及びインデクス4012に随時反映させる必要はなく、バックアップ時など所定のタイミングで同期させればよい。
データベース定義情報4020は、表定義情報4021(図4)及びインデクス定義情報4022(図5)を含む。表定義情報4021は、表4011の定義情報である。表定義情報4021には、表4011を構成するフィールドのデータ型などが定義される。インデクス定義情報4022は、インデクス4012の定義情報である。インデクス定義情報4022には、インデクスを生成するために必要な情報、例えば、インデクスを付与する表及びフィールドなどが定義される。表定義情報4021及びインデクス定義情報4022の詳細については後述する。
統計情報4030は、ディスク型データベース4010に格納されるデータにアクセスするSQLの実行時に蓄積される情報であり、SQLごとの処理時間など、様々な情報が含まれる。SQLの処理時間には、演算処理などの時間の他に記憶媒体に対する入出力処理に要する時間(I/O処理時間)が含まれる。本発明の第1の実施の形態の統計情報4030には、I/O処理時間と演算処理時間(I/O処理以外の処理時間)とがそれぞれ把握可能に記録される。統計情報4030の詳細については後述する。
以上、図2を参照しながら本発明の第1の実施の形態のデータベースシステムの構成について説明した。続いて、図3を参照しながら、本発明の第1の実施の形態のデータベース管理システム1210の構成について説明する。
図3は、本発明の第1の実施の形態のデータベース管理システム1210の構成を示すブロック図である。
データベース管理システム1210は、前述のように、データベース管理装置1000のメモリ1200に記憶されたプログラムである。データベース管理システム1210には、データベースを管理するためにプロセッサ1100によって実行されるプログラムと、当該プログラムの実行に必要な情報と含まれる。
データベースを管理及び実行するためのプログラムには、ディスク型データベース管理部1211、インメモリデータベース管理部1212、データ配置プラン決定ユーティリティ処理部1213、及びデータ配置実行部1215が含まれる。
ディスク型データベース管理部1211は、外部記憶装置4000に格納されたディスク型データベース4010を管理するプログラムである。一方、インメモリデータベース管理部1212は、インメモリデータベース1220を管理するプログラムである。
データベース管理システム1210は、UAP3000などによってSQLの実行を指示されると、処理対象の表が管理されているデータベースを特定する。そして、特定されたデータベースに対応するデータベース管理部に処理の実行を指示する。このとき、最初にインメモリデータベース管理部1212によってSQLを処理し、インメモリデータベース1220に表が存在しない場合にディスク型データベース管理部1211が処理するように構成してもよい。
データ配置プラン決定ユーティリティ処理部1213は、データベースに含まれる表及びインデクスをディスク型データベース4010に配置するか、インメモリデータベース1220によって配置するかを決定するデータ配置プランを作成するプログラムである。
データ配置プラン決定ユーティリティ処理部1213は、データベース管理装置1000が端末装置2000から送信されたデータ配置プラン決定ユーティリティ実行要求を受け付けると、データ配置プラン決定ユーティリティ実行要求に含まれるメモリ配置優先度6020及びメモリ使用量上限値6030に基づいて決定データ配置プラン6040が生成される。データ配置プラン決定ユーティリティ処理部1213による処理は図10にて後述する。
データ配置プラン決定ユーティリティ処理部1213は、配置対象データ情報生成部1216、アクセスパス生成部1217、アクセスパス実行コスト算出部1218、及びデータ配置プラン決定部1219を含む。
配置対象データ情報生成部1216は、優先度が付与された配置対象のデータリストを生成する。処理の詳細については、図11にて後述する。アクセスパス生成部1217は、UAP3000から取得されたSQLに基づいてアクセスパスを生成する。処理の詳細については、図12にて後述する。
アクセスパス実行コスト算出部1218は、生成されたアクセスパスに対し、実行コストを算出する。処理の詳細については、図13にて後述する。データ配置プラン決定部1219は、アクセスパスの実行コストに基づいてデータ配置プランを決定する。処理の詳細については、図14から図16にて後述する。
データ配置実行部1215は、データ配置プラン決定ユーティリティ処理部1213によって生成された決定データ配置プラン6040に基づいて、ディスク型データベース4010に含まれる表4011及びインデクス4012をインメモリデータベース1220に移行させるプログラムである。
また、データベースを管理するための情報には、データ量6010、決定データ配置プラン6040、配置対象データリスト6050(図7)、アクセスパス候補リスト6060(図8)及びSQL実行コストリスト6070(図9)が含まれる。
データ量6010は、インメモリデータベース1220又はディスク型データベース4010によって管理されている表(1221、4021)及びインデクス(1222、4022)の記憶容量(メモリ使用量)を格納する。なお、前述のように、記憶容量ではなく、レコード数であってもよい。
決定データ配置プラン6040には、インメモリデータベース1220に配置される配置対象データ(表、インデクス)が定義される。決定データ配置プラン6040は、前述のように、データ配置プラン決定ユーティリティ処理部1213の実行結果として出力される情報である。
配置対象データリスト6050は、インメモリデータベース1220によって管理される候補となる表及びインデクスのリストである。配置対象データリスト6050には、表ごとにレコードが生成され、各レコードには表及び表に対応するインデクスが含まれる。
アクセスパス候補リスト6060は、UAP3000などによって実行されるSQLのアクセスパスのリストである。1つのSQLに複数のアクセスパスを生成可能な場合には、すべてのアクセスパスを格納するようにしてもよいし、所定の条件を満たすアクセスパスのみを格納するようにしてもよい。
SQL実行コストリスト6070は、アクセスパスごとの実行コストである。実行コストは、主として処理時間に対応するが、メモリ使用量、アクセスする表又はインデクスの数などを含んでもよい。本発明の第1の実施の形態では、ディスク型データベース4010によってアクセスする表が管理されている場合のI/O処理コストと、I/O処理コストを除いた演算処理などによる処理コストが含まれている。なお、前述のように、実際に実行されていないアクセスパスの処理コストについては、実行されたアクセスパスの処理コストに基づいて推定する。
以上、図3に基づいてデータベース管理システム1210の構成について説明した。以下、図4から図6を参照しながら外部記憶装置4000に格納された情報について説明する。
図4は、本発明の第1の実施の形態の表定義情報4021の一例を示す図である。
表定義情報4021は、ディスク型データベース4010に含まれる表4011及びインメモリデータベース1220に含まれる表1221の定義情報を含む。
表定義情報4021は、表ID40211、表名40212、構成フィールド数40213、構成フィールド40214及び定義インデクス数40215を含む。
表ID40211は、表を一意に識別するための識別子である。表名40212は、表の名称である。構成フィールド数40213は、表を構成するフィールドの数である。構成フィールド40214は、表を構成するすべてのフィールドの名称又は識別子である。定義インデクス数40215は、表に定義されているインデクスの数である。
具体的に説明すると、表ID40211の値が"3"の場合、表名40212は"T3"となる。表T3は、構成フィールド数40213及び構成フィールド40214に設定された値から、フィールド"C1"、フィールド"C2"、及びフィールド"C3"の3つのフィールドを有する。さらに、表T3に定義されているインデクスの数は2となる。実際に定義されているインデクスは、後述するインデクス定義情報4022に情報が格納される。
図5は、本発明の第1の実施の形態のインデクス定義情報4022の一例を示す図である。
インデクス定義情報4022は、ディスク型データベース4010に含まれるインデクス4012及びインメモリデータベース1220に含まれるインデクス1222の定義情報を含む。
インデクス定義情報4022は、インデクスID40221、インデクス名40222、構成フィールド数40223、構成フィールド40224及び表ID40225を含む。
インデクスID40221は、インデクスを一意に識別するための識別子である。インデクス名40222は、インデクスの名称である。構成フィールド数40223は、インデクスを構成するフィールドの数である。構成フィールド40224は、インデクスを構成するすべてのフィールドの名称又は識別子である。表ID40225は、インデクスが定義されている表の識別子である。
具体的に説明すると、インデクスID40221の値が"2"の場合、インデクス名40222は"I3a"となる。インデクスI3aは、構成フィールド数40223、構成フィールド40224及び表ID40225に設定された値から、表T3のフィールド"C1"及びフィールド"C2"の2つのフィールドに対して設定されている。
図6は、本発明の第1の実施の形態の統計情報4030の一例を示す図である。
統計情報4030は、前述のように、ディスク型データベース4010に格納されるデータにアクセスするSQLの実行時に蓄積される情報である。統計情報4030は、SQL4031、実行頻度4032、アクセスパス4033、I/O時間4034、及び処理時間合計4035を含む。
SQL4031は、UAP3000によって実行されるSQLを示す情報である。SQL4031には、SQLそのものを格納してもよいし、SQLそのものを識別子とともに別の領域に格納し、SQLの識別子を格納するようにしてもよい。
実行頻度4032は、対応するSQLが実行された回数である。格納される回数は、累積回数でもよいし、所定期間内の実行回数であってもよい。
アクセスパス4033は、SQLを実行する際にアクセスする表及びインデクスが定義される。本発明の第1の実施の形態では、アクセスパスの具体的な内容は別途保持されており、アクセスパス4033にはアクセスパスを特定する識別子が設定されている。
I/O時間4034は、表及びインデクスに対するアクセス時間である。I/O時間4034には、表及びインデクスごとにアクセス時間が格納される。I/O時間4034に設定される値は、SQLが1回実行された場合のアクセス時間であってもよいし、累積された時間であってもよい。累積された時間の場合には、実行頻度4023の値で除算することによって、SQLが1回実行された場合のアクセス時間を導出することができる。
処理時間合計4035は、SQLの処理に要する時間である。すなわち、処理時間合計4035からI/O時間4034を減算することによって、演算処理などのI/O処理以外の処理時間を算出することができる。なお、処理時間合計4035に設定される値についても、SQLが1回実行された場合の処理時間であってもよいし、累積された時間であってもよい。
さらに具体的に説明すると、SQL4031の値が"SQL3"の場合、実行頻度は20となる。このとき、アクセスパス4033は"SQL3−1"となる。I/O時間4034を参照すると、SQL3がアクセスパスSQL3−1で実行された場合には、表T3、インデクスI3a及びインデクスI3bにアクセスされる。このとき、表T3に対するアクセス時間は30、インデクスI3a及びインデクスI3bに対するアクセス時間は60となる。処理時間合計4035は、500となっているため、I/O処理時間を除く処理時間は100となる。
以上、図4から図6を参照しながら外部記憶装置4000に格納された情報について説明した。以下、図7から図9を参照しながらデータ配置プラン決定ユーティリティ処理部1213の実行時に生成される情報について説明する。
図7は、本発明の第1の実施の形態の配置対象データリスト6050の一例を示す図である。
配置対象データリスト6050は、前述のように、インメモリデータベース1220によって管理される候補となる表及びインデクスのリストである。配置対象データリスト6050には、表ごとにレコードが生成され、各レコードには表及び表に定義可能なインデクスが含まれる。
配置対象データリスト6050は、外部記憶装置4000に格納されたデータベース定義情報4020(表定義情報4021,インデクス定義情報4022)と、端末装置2000から送信されたデータ配置プラン決定ユーティリティ実行要求に含まれるメモリ配置優先度6020及びメモリ使用量上限値6030に基づいて作成される。
配置対象データリスト6050は、優先度6051、配置対象データ6052、配置対象データの情報6053及びメモリ使用量6054を含む。
優先度6051は、端末装置2000から送信されたメモリ配置優先度6020に基づいて設定される。メモリ配置優先度6020には、具体的には、インメモリデータベース1220に配置する表の優先順位が設定されている。本発明の第1の実施の形態では、優先度の高い順に表をインメモリデータベース1220の表1221に移行させる。
配置対象データ6052は、表ごとに定義され、表データの他に当該表に設定されているインデクスも含む。また、配置対象データの情報6053には、配置対象データに対する情報が設定される。
例えば、表T3では、配置対象データ6052として、表データの他にインデクスI3a、インデクスI3b及びインデクスI3abが含まれる。インデクスI3a及びインデクスI3bは、インデクス定義情報4022に定義されているインデクスである。
ここで、インデクスI3abは、インデクスI3a及びインデクスI3bをマージしたインデクスである。すなわち、配置対象データ6052は、データベース定義情報4020に定義されたインデクス以外のインデクスを含んでもよい。表T3には、インデクスI3a及びインデクスI3bが設定されており、2つのインデクスをマージして新たなインデクスI3abを生成し、メモリに配置することによって、インデクスI3a及びインデクスI3b両方をメモリに配置するよりもメモリ使用量を抑えることができる。ただし、各インデクスをそれぞれ別に利用する場合よりも性能が低下する可能性がある。
なお、表にさらに多くのインデクスが設定されている場合には、さらに多くの組み合わせのインデクスを生成可能であるが、すべての組み合わせについて新たなインデクスを生成してもよいし、組み合わせるインデクスの数を限定するなどして所定の条件を満たす組み合わせのインデクスについてのみ生成するようにしてもよい。
メモリ使用量6054は、表データ又はインデクスをインメモリデータベース1220で管理する場合、すなわち、メモリに配置した場合に使用されるメモリの容量である。データ配置プランは、メモリに配置する配置対象データのメモリ使用量の合計がメモリ使用量上限値6030を超えない範囲で決定される。
図8は、本発明の第1の実施の形態のアクセスパス候補リスト6060の一例を示す図である。
アクセスパス候補リスト6060は、UAP3000などによって実行されるSQLごとのアクセスパスのリストである。アクセスパスは、前述のように、SQLで指定されたデータを取得するために、データベースに含まれる表及びインデクスにアクセスする経路を示すものである。また、アクセスパスは、表のアクセス順序及びインデクスを利用するか否かなどによって、1つのSQLから複数のアクセスパスが生成可能である。
アクセスパス候補リスト6060は、SQL6061、アクセスする表6062、アクセスパス6063、アクセスパスの内容6064、及びアクセスするデータ6065を含む。
SQL6061は、UAP3000によって実行されるSQLを示す情報である。アクセスする表6062は、SQL6061に設定されたSQL実行時にアクセスされる表である。アクセスパス6063は、SQL6061に設定されたSQLを実行するためのアクセスパスの識別子である。アクセスパスの内容6064は、アクセスパス6063の内容を示す情報である。例えば、インデクスの使用有無などが含まれる。アクセスするデータ6065は、アクセスする表に加えてアクセスするインデクスも含む。
インメモリデータベースにおけるデータのアクセスは、ディスク型データベースにおけるデータアクセスと比較して、表又はインデクスに対するI/O処理時間が非常に少ない。したがって、前述のように、ディスク型データベースにおけるアクセスパスを生成する場合には通常選択されないアクセスパスも含めて生成する。さらに、前述のように、本発明の第1の実施の形態では、複数のインデクスをマージすることによって新たなインデクスを生成する。このとき、新たに生成されたインデクスを利用するアクセスパスも生成される。
図8を参照しながらさらに具体的に説明すると、SQL6061が"SQL3"の場合、アクセスする表は"T3"となる。このとき、アクセスパス6063として、"SQL3−1"、"SQL3−2"及び"SQL3−3"が生成される。
アクセスパス"SQL3−1"は、マージしていないインデクスI3a及びインデクスI3bをそれぞれ使用するアクセスパスである。このとき、アクセスするデータ6065は、表T3、インデクスI3a、インデクスI3bとなる。そして、SQL3をアクセスパス"SQL3−1"を選択して実行する場合には、アクセスするデータ6065に含まれるすべての表及びインデクスにアクセスされるため、これらの表及びインデクスをすべてインメモリデータベース1220で管理する必要がある。いずれか1つの表又はインデクスが外部記憶装置4000に格納されていると、外部記憶装置4000にアクセスするためのI/O処理がボトルネックとなってしまうためである。
アクセスパス"SQL3−2"は、インデクスI3a及びインデクスI3bがマージされたインデクスI3abを使用するアクセスパスである。同様に、アクセスパス"SQL3−2"に基づいてSQL3を実行する場合には、表T3及びインデクスI3abがアクセスするデータ6065に設定される。このとき、インデクスI3abの定義情報をインデクス定義情報4022に新たに格納する必要はなく、インデクスI3a及びインデクスI3bに基づいて必要に応じて生成すればよい。
アクセスパス"SQL3−3"は、インデクスを使用せずに表T3にアクセスするアクセスパスである。ディスク型データベースにおける検索では、表T3の全レコードにアクセス(フルスキャン)しなければならない場合があるため、I/O処理時間が増大し、通常、このようなアクセスパスが選択されることはない。しかし、インメモリデータベースではI/O処理時間が小さいためディスク型データベースの場合と比較して処理時間の増大を抑えることができ、さらに、インデクスを使用しない分だけメモリ使用量を抑えることができる。なお、レコード件数が多い表の検索でインデクスを使用しない場合は、全レコードで値を比較する必要があるなどI/O処理時間以外の処理時間も増大する。
図9は、本発明の第1の実施の形態のSQL実行コストリスト6070の一例を示す図である。
SQL実行コストリスト6070は、統計情報4030に基づいて算出されたアクセスパスごとの実行コストを格納する。実行コストは、前述のように、主として処理時間に基づいて設定されるが、メモリ使用量、アクセスする表又はインデクスの数などをさらに加味して設定されてもよい。
SQL実行コストリスト6070は、SQL6071、重要度6072、アクセスパス6073、I/Oコスト6074、処理コスト合計6075及び各データのI/Oを除いた処理コスト6076を含む。
SQL6071及びアクセスパス6073は、アクセスパス候補リスト6060のSQL6061及びアクセスパス6063と同じである。
重要度6072は、対応するSQLの重要度を示し、例えば、SQLの実行頻度が対応する。実行頻度を大きいSQLにアクセスされる表をインメモリデータベース1220に配置すればI/O処理コストを小さくすることができるため、当該SQLの優先度を高く設定することによって、ユーザが各表に対するメモリ配置優先度を指定せずに自動的に設定することが可能となる。
I/Oコスト6074には、統計情報4030のI/O時間4034が設定される。また、処理コスト合計6075には、統計情報4030の処理時間合計4035が設定される。I/Oコスト6074及び処理コスト合計6075には、処理時間がそのまま設定されているが、前述のように、他の要因を考慮して算出されたコストを設定するようにしてもよい。
各データのI/Oを除いた処理コスト6076は、インメモリデータベースによって管理されるデータ(表、インデクス)の組み合わせに対応する列を含む。各列には、処理コスト合計6075から対応するI/Oコスト6074を減算した値が設定される。
具体的に説明すると、アクセスパス6073が"SQL3−2"の場合、表T3の処理コストが30、インデクスI3a及びI3bの処理コストが60となっている。したがって、表T2の各データのI/Oを除いた処理コスト6076は、SQL3の処理で表T2にアクセスしないため、処理コスト合計6075の値260となる。これに対し、表T3の場合には、処理コスト合計6075の値260から表T2のI/Oコスト30を減算した値230となる。さらに、表T3、インデクスI3a、インデクスI3bの場合には、処理コスト合計6075の値260から、表T3、インデクスI3a、インデクスI3bのI/Oコストの合計150(30+60+60)を減算した値110となる。
以上、図7から図9を参照しながらデータ配置プラン決定ユーティリティ処理部1213の実行時に生成される情報について説明した。以下、データ配置プラン決定ユーティリティ処理部1213を実行することによって、データ配置プランを決定する手順について説明する。
図10は、本発明の第1の実施の形態のデータ配置プラン決定ユーティリティ処理部1213による処理手順の概要を示すフローチャートである。
データ配置プラン決定ユーティリティ処理部1213は、データベース管理システム1210に含まれるプログラムであり、データベース管理装置1000のプロセッサ1100によって実行される。
データベース管理装置1000のプロセッサ1100は、端末装置2000からデータ配置プラン決定ユーティリティ実行要求を受信すると、データ配置プラン決定ユーティリティ処理部1213を実行する。
データ配置プラン決定ユーティリティ処理部1213による処理が開始されると、プロセッサ1100は、配置対象データ情報生成部1216によって、配置対象データ情報生成処理を実行する(S100)。配置対象データ情報生成処理は、データベース定義情報4020、データ量6010及びメモリ配置優先度6020を入力情報として、配置対象データ情報を生成し、配置対象データリスト6050を出力する。
入力情報であるデータベース定義情報4020は、外部記憶装置4000に格納されている。また、データ量6010は、前述のように、データベース管理システム1210で取得可能な表及びインデクスの記憶容量であってもよいし、ユーザによって入力されたレコード件数などに基づいて算出したものであってもよい。
メモリ配置優先度6020は、ユーザによって設定され、データ配置プラン決定ユーティリティ実行要求とともに送信される。なお、メモリ配置優先度6020を自動的に設定するように構成してもよい。例えば、前述のように、統計情報4030に基づいて、SQLの実行頻度が大きいSQLによってアクセスされる表の優先度を高く設定するようにしてもよいし、累積処理時間が長いSQLによってアクセスされる表の優先度を高く設定するようにしてもよい。
配置対象データ情報生成処理が終了すると、プロセッサ1100は、アクセスパス生成部1217によって、アクセスパス生成処理を実行する(S200)。アクセスパス生成処理は、UAP3000によって実行されるSQLを取得し、取得されたSQLごとにアクセスパスを生成し、アクセスパス候補リスト6060を出力する。
UAP3000がJAVA(登録商標)によって作成されている場合には、UAP3000のバイトコードを解析することによってSQLを抽出することが可能である。また、UAP3000によって実行されるSQLが、データベース管理システム1210にあらかじめ定義されているSQL(ストアドプロシージャ)を呼び出すように実装されている場合には、データベース定義情報4020に含まれる定義情報に基づいて抽出することも可能である。
アクセスパス生成処理が終了すると、プロセッサ1100は、アクセスパス実行コスト算出部1218によって、アクセスパス実行コスト算出処理を実行する(S300)。アクセスパス実行コスト算出処理は、アクセスパス生成処理によって出力されたアクセスパス候補リスト6060及び統計情報4030を入力情報として、アクセスパスごとの実行コストを算出し、SQL実行コストリスト6070を出力する。
アクセスパス実行コスト算出処理が終了すると、プロセッサ1100は、データ配置プラン決定部1219によって、データ配置プラン決定処理を実行する(S400)。データ配置プラン決定処理は、端末装置2000からデータ配置プラン決定ユーティリティ実行要求とともに送信されたメモリ使用量上限値6030及びアクセスパス実行コスト算出処理によって出力されたSQL実行コストリスト6070を入力情報とし、インメモリデータベース1220に配置された表及びインデクスを定義するデータ配置プランを決定する。そして、決定されたデータ配置プランを出力する。
なお、メモリ使用量上限値6030は、データベース管理装置1000のメモリ容量に基づいて自動的に決定されるようにしてもよいし、デフォルト値をデータベース管理システム1210で保持しておくことによって、入力を省略できるように実装してもよい。
データ配置プラン決定処理が終了し、決定データ配置プラン6040が出力されると、端末装置2000に送信し、決定したデータ配置プランの内容を表示する(S500)。表示画面の例については図17にて後述する。
図11は、本発明の第1の実施の形態の配置対象データ情報生成処理の詳細な処理手順を示すフローチャートである。
データベース管理装置1000のプロセッサ1100は、まず、メモリ配置優先度6020を参照し、優先度の高い表から順に選択し、選択された表に対応する配置対象データ情報を生成する(S101、S110)。
プロセッサ1100は、選択された表の定義情報をデータベース定義情報4020の表定義情報4021から取得する(S102)。さらに、プロセッサ1100は、選択された表のデータ量をデータ量6010から取得する(S103)。
プロセッサ1100は、選択された表に定義されたインデクスの定義情報を、データベース定義情報4020のインデクス定義情報4022から取得する(S104)。さらに、プロセッサ1100は、選択された表に定義されたインデクスのデータ量をデータ量6010から取得する(S105)。
プロセッサ1100は、選択された表に定義されたインデクスの中にマージ可能なインデクスが含まれているか否かを判定する(S106)。例えば、一方のインデクスの構成フィールドが他方のインデクスの構成フィールドに包含される場合にマージ可能と判定する。具体的には、構成フィールドがC1のインデクスI3aと、構成フィールドがC1、C2のインデクスI3bが含まれている場合、インデクスI3aとインデクスI3bをマージしてI3abを生成する。
プロセッサ1100は、マージ可能なインデクスが含まれている場合には(S106の結果が「YES」)、マージしたインデクスの定義情報を生成する(S107)。さらに、プロセッサ1100は、マージしたインデクスのデータ量を算出する(S108)。
プロセッサ1100は、マージ可能なインデクスが含まれていない場合(S106の結果が「NO」)、又は、マージしたインデクスのデータ量の算出が終了した場合には、選択された表の情報及びデータ量、選択された表に定義されたインデクスの情報及びデータ量、マージしたインデクスの情報及びデータ量を配置対象データリスト6050に追加する(S109)。
プロセッサ1100は、S109の処理が終了すると、メモリ配置優先度6020から次に優先度の高い表を選択し、S102の処理を実行する(S101、S110)。
図12は、本発明の第1の実施の形態のアクセスパス生成処理の詳細な処理手順を示すフローチャートである。
データベース管理装置1000のプロセッサ1100は、UAP3000で実行されるSQLを順次選択し、選択されたSQLに対応するアクセスパスを生成する(S201、S203)。
アクセスパスを生成する対象のSQLが選択されると、プロセッサ1100は、選択されたSQLを解析し、インデクスを使用しない場合、及び、定義済みのインデクスを使用する場合についてアクセスパスの候補を生成する。さらに、プロセッサ1100は、配置対象データ情報生成処理でマージされ、当該SQLの実行に使用可能なインデクスを使用する場合についてもアクセスパスの候補を生成する(S202)。生成されたアクセスパスの候補は、アクセスパス候補リスト6060に追加される。
図13は、本発明の第1の実施の形態のSQL実行コスト算出処理の詳細な処理手順を示すフローチャートである。
データベース管理装置1000のプロセッサ1100は、アクセスパス候補リスト6060を参照し、SQLごとに(S310、S370)、統計情報4030から当該SQLの実行頻度を取得し、重要度を割り当てる(S320)。
プロセッサ1100は、選択されたSQLの各アクセスパス候補から順次アクセスパスを選択し(S330、S360)、アクセスパスごとに、統計情報4030に基づいて選択されたSQLの実行コスト(処理コスト)を算出する(S340)。さらに、プロセッサ1100は、アクセスする表及びインデクスごとのI/Oコストを算出する(S350)。なお、コストは、前述のように、処理時間そのものであってもよいし、処理時間の他に別の要因を考慮したものであってもよい。
アクセスパス候補リスト6060に格納されたSQLのアクセスパス候補の実行コスト及び表及びインデクスごとのI/Oコストの算出が終了すると、プロセッサ1100は、算出したコストを含むSQL実行コストリスト6070を作成する(S380)。
図14は、本発明の第1の実施の形態のデータ配置プラン決定処理の詳細な処理手順を示すフローチャートである。
データベース管理装置1000のプロセッサ1100は、まず、各データ(表、インデクス)をインメモリデータベース1220に配置する効果を算出する(S4010)。なお、各データのインメモリデータベース配置効果算出処理の詳細については図15にて後述する。
次に、プロセッサ1100は、配置対象データリスト6050を参照し、優先度の高い表から順に、インメモリデータベース1220に配置する処理を実行する(S4020〜S4120)。
プロセッサ1100は、インメモリデータベース1220に配置するデータとして既に選択済みのデータと、処理対象の表とをインメモリデータベース1220に配置可能か否かを判定する(S4030)。換言すると、プロセッサ1100は、インメモリデータベース1220に配置するデータの容量と、処理対象の表の容量との合計がメモリ使用量上限値6030以下であるか否かを判定する。
そして、プロセッサ1100は、処理対象の表をインメモリデータベース1220に配置可能な場合には(S4030の結果が「YES」)、処理対象の表をインメモリデータベース1220に配置するデータとして選択する(S4040)。
続いて、プロセッサ1100は、処理対象の表に定義されたインデクスをインメモリデータベース1220に配置するか否か、又はいずれのインデクスをインメモリデータベース1220に配置するかを判定するインデクス選択処理を実行する(S4045)。
S4045処理が終了すると、プロセッサ1100は、処理対象の表の次に優先度の高い表を新たな処理対象の表として選択し、処理対象の表が存在しなくなるまで処理を継続する。
プロセッサ1100は、S4040の処理でインメモリデータベース1220に配置するデータとして選択された表と、S4045のインデクス選択処理でインメモリデータベース1220に配置するデータとして選択されたインデクスを含むデータ配置プランを生成する(S4130)。
図15は、本発明の第1の実施の形態のデータ配置プラン決定処理におけるデータごとのインメモリデータベース配置効果算出処理を示すフローチャートである。
データベース管理装置1000のプロセッサ1100は、配置対象データリスト6050を参照し、データ(表又はインデクス)を選択して、インメモリデータベース1220に配置する効果をデータごとに算出する(S4011〜S4016)。
具体的には、プロセッサ1100は、SQL実行コストリスト6070を参照し、選択されたデータにアクセスするSQLを抽出する。そして、抽出されたSQLについて、選択されたデータをインメモリデータベース1220に配置しない場合に処理コストが最小になるアクセスパスの処理コストと、当該データをインメモリデータベース1220に配置する場合に処理コストが最小になるアクセスパスの処理コストとの差を算出する(S4013)。ここで算出された処理コストの差が抽出されたSQLにおける処理コストの削減効果となる。
さらに、プロセッサ1100は、各SQLの重要度(実行頻度)、各SQLにおけるコストの削減効果、及び選択されたデータのメモリ使用量に基づいて、システム全体に対する効果を算出する(S4015)。例えば、処理コストの削減量は、SQLの実行頻度(重要度)と処理コストの削減量との積とすることができる。さらに、選択されたデータのメモリ使用量が少なければ、より多くのデータをインメモリデータベースに配置することが可能となるため、より効果が高いと判定することができる。
以上のように、プロセッサ1100は、S4012からS4015の処理を実行することによって、インメモリデータベース1220への配置効果をデータごとに算出する。
図16は、本発明の第1の実施の形態のデータ配置プラン決定処理におけるインデクス選択処理を示すフローチャートである。
データベース管理装置1000のプロセッサ1100は、処理対象の表に定義されたインデクス(マージしたインデクスも含む)を、インメモリデータベース1220に配置する効果が高い順に選択し、S4060からS4100までの処理を実行する(S4050、S4110)。
プロセッサ1100は、処理対象のインデクスをマージしたインデクスが、インメモリデータベース1220に配置するデータとして選択済みか否かを判定する(S4060)。処理対象のインデクスをマージしたインデクスが選択済みの場合には(S4060の結果が「YES」)、次のインデクスを処理対象のインデクスとする。
一方、プロセッサ1100は、処理対象のインデクスをマージしたインデクスが選択済みでない場合には(S4060の結果が「NO」)、処理対象のインデクスをインメモリデータベース1220に配置可能か否かを判定する(S4070)。すなわち、インメモリデータベース1220に配置するデータとして選択されたデータの容量と、処理対象のインデクスの容量との合計がメモリ使用量上限値6030以下であるか否かを判定する。プロセッサ1100は、処理対象のインデクスをインメモリデータベース1220に配置可能でない場合には(S4070の結果が「NO」)、次のインデクスを処理対象のインデクスとする。
プロセッサ1100は、処理対象のインデクスをインメモリデータベース1220に配置可能な場合には(S4070の結果が「YES」)、処理対象のインデクスをインメモリデータベース1220に配置する効果と、未選択、かつ、インメモリデータベース1220に配置可能な表をインメモリデータベース1220に配置する効果とを比較する(S4080)。未選択、かつ、インメモリデータベース1220に配置可能な表とは、インデクス選択処理実行時の処理対象の表よりも優先度の低い表であって、インメモリデータベース1220に配置してもメモリ使用量が上限値を超えない表である。
プロセッサ1100は、処理対象のインデクスよりもインメモリデータベース1220に配置する効果の高い未選択の表が存在するか否かを判定する(S4090)。処理対象のインデクスよりもインメモリデータベース1220に配置する効果の高い未選択の表が存在する場合には(S4090の結果が「YES」)、次のインデクスを処理対象のインデクスとする。
一方、プロセッサ1100は、処理対象のインデクスよりもインメモリデータベース1220に配置する効果の高い未選択の表が存在しない場合には(S4090の結果が「NO」)、処理対象のインデクスをインメモリデータベース1220に配置するデータとして選択する(S4100)。
本発明の第1の実施の形態では、ユーザが端末装置2000からメモリ配置優先度6020及びメモリ使用量上限値6030を入力し、データベース管理装置1000にデータ配置プラン決定ユーティリティ実行要求を送信する。データベース管理装置1000は、データ配置プラン決定ユーティリティ処理部1213によって決定されたデータ配置プランを端末装置2000に表示する。このとき、実際にデータ配置は変更されていないため、端末装置2000に表示された決定データ配置プラン6040をユーザが確認し、ユーザがデータベース管理装置1000にデータ配置の実行を指示する。データベース管理装置1000は、データ配置の変更の指示を受け付けると、データ配置実行部1215によって、指示された内容で表及びインデクスを配置する。
なお、決定データ配置プラン6040が生成されると、ユーザに確認せずにデータ配置を実行するように指示するようにしてもよい。例えば、データ配置プラン決定ユーティリティ実行要求に、データ配置の実行を指示する項目を含めるようにすればよい。
図17は、本発明の第1の実施の形態のデータ配置プラン決定ユーティリティの出力画面7000の一例を示す図である。
画面7000の上段には、ユーザによって指定された表の優先度7001が表示される。また、画面7000の下段には、決定データ配置プラン6040の内容であるデータ配置7002が表示される。
データ配置7002には、配置されるオブジェクト(データ、表及びインデクス)に対し、推奨配置先、メモリ使用量、現在のデータ配置定義及び優先度が表示される。
また、各オブジェクトは、インメモリデータベース1220に配置することが決定した順序で表示され、ディスク型データベース4010に配置されるオブジェクトはその後に表示される。オブジェクトをインメモリデータベース1220に配置するか否かは優先度の高い順に決定されるため、通常、優先度の高い順に表示される。優先度が高いにもかかわらず、オブジェクトがディスク型データベース4010に配置された場合には、優先度に"*"を付加して表示する。
推奨配置先及び現在のデータ配置定義には、インメモリデータベース1220(MEMORY)に配置するか、ディスク型データベース4010(DISK)に配置するかが表示される。
また、優先度は、ユーザが指定した優先度に対応する値が表示される。なお、インデクスの優先度は、当該インデクスが定義された表の優先度が表示される。
なお、表がインメモリデータベース1220に配置され、インデクスがディスク型データベース4010に配置されている場合には、インデクスを利用しないと判断することができる。
データ配置7002の下方には、データ配置変更後の合計メモリ使用量と、データ配置変更後の合計コストが表示される。合計メモリ使用量には、ユーザが指定したメモリ使用量上限値6030を併記してもよい。メモリ使用量上限値6030が自動的に決定された場合についても同様に併記してもよい。また、合計コストについては、現在のデータ配置における合計コストを併記するようにしてもよい。
本発明の第1の実施の形態では、端末装置2000からデータ配置プラン決定処理実行要求が送信されると、決定されたデータ配置プランを利用者に提示していたが、決定されたデータ配置プランに基づいて、そのままデータ配置を変更するようにしてもよい。また、複数のデータ配置プランを提示して、利用者に選択させるようにしてもよい。
本発明の第1の実施の形態によれば、インメモリデータベースとディスク型データベースとが混在する構成において、使用可能なメモリを最大限に活用しながら、インメモリデータベースの特性を考慮して処理性能を向上させることができる。したがって、メモリ容量の追加など、ハードウェアに対する追加投資を行うことなく現有のハードウェア構成で可能な限り性能を向上させることができる。
また、本発明の第1の実施の形態によれば、インメモリデータベースとディスク型データベースとが混在する構成において、表及びインデクスをインメモリデータベースに配置するか、ディスク型データベースに配置するかを自動的に決定することができるため、データベースを設計するために必要なコストを削減することができる。
(第2の実施の形態)
本発明の第1の実施の形態では、データベース全体における表及びインデクスの配置を決定していたが、第2の実施の形態では、現在のデータ配置において、ユーザが指定したデータ配置が適正であるか否かをチェックする。
本発明の第1の実施の形態では、データベース全体における表及びインデクスの配置を決定していたが、第2の実施の形態では、現在のデータ配置において、ユーザが指定したデータ配置が適正であるか否かをチェックする。
なお、第2の実施の形態では、第1の実施の形態と共通する構成及び処理については、同一の符号を付与して説明を省略する。
図18は、本発明の第2の実施の形態のデータベースシステムの構成を示す機能ブロック図である。
第1の実施の形態では、メモリ配置優先度6020及びメモリ使用量上限値6030を指定して、すべての表及びインデクスのデータ配置プランを決定していたが、第2の実施の形態では、端末装置2000からユーザが指定した表を含むデータ配置定義実行要求が送信される。
また、外部記憶装置4000には、現在稼働しているデータベースのデータ配置の定義情報を格納するデータ配置定義情報4040が含まれる。
データベース管理装置1000は、データ配置定義要求を受信すると、図20にて後述するデータ配置定義処理を実行することによって新たにデータ配置を決定する。このとき、データ配置定義実行要求で指定された表をインメモリデータベース1220に配置されている表に続く優先度を設定する。そして、新たに決定されたデータ配置プランにおいて、指定された表がインメモリデータベース1220に配置されているか否かを判定し、判定結果を含むデータ配置定義実行結果を端末装置2000に応答する。
図19は、本発明の第2の実施の形態のデータベース管理システム1210の構成を示すブロック図である。
第2の実施の形態では、データ配置プラン決定ユーティリティ処理部1213の代わりにデータ配置定義処理部1214がデータベース管理システム1210に含まれる。その他の構成については、第1の実施の形態と同じである。
また、データ配置定義処理部1214には、データ配置プラン決定ユーティリティ処理部1213と同様に、配置対象データ情報生成部1216、アクセスパス生成部1217、アクセスパス実行コスト算出部1218、及びデータ配置プラン決定部1219が含まれる。各部の構成については第1の実施の形態と同じである。
図20は、本発明の第2の実施の形態のデータ配置定義処理部1214による処理手順の概要を示すフローチャートである。
データ配置定義処理部1214は、データベース管理システム1210に含まれるプログラムであり、データベース管理装置1000のプロセッサ1100によって実行される。
データベース管理装置1000のプロセッサ1100は、端末装置2000からデータ配置定義実行要求を受信すると、データ配置定義処理部1214を実行する。
データ配置定義処理部1214による処理が開始されると、プロセッサ1100は、データ配置定義実行要求に含まれるデータ配置定義文を解析する(S1001)。データ配置定義文には、ユーザが指定したデータ配置をチェックするか否かを指定する項目が含まれる。
プロセッサ1100は、データ配置定義文に指定したデータ配置をチェックする指定が含まれているか否かを判定する(S1002)。プロセッサ1100は、データ配置定義をチェックする指定がない場合には(S1002の結果が「NO」)、S1005以降の処理を実行する。
一方、データ配置定義をチェックする指定がある場合には(S1002の結果が「YES」)、プロセッサ1100は、インメモリデータベース1220に配置されている表、データ配置定義文で指定された表、その他の表の順で優先度を設定する(S1003)。
プロセッサ1100は、設定された優先度に基づいてデータ配置プランを決定するために、配置対象データ情報生成処理(S100)、アクセスパス生成処理(S200)、アクセスパス実行コスト算出処理(S300)、データ配置プラン決定処理(S400)を順に実行する。なお、配置対象データ情報生成処理(S100)、アクセスパス生成処理(S200)、アクセスパス実行コスト算出処理(S300)、データ配置プラン決定処理(S400)は、第1の実施の形態と同様である。
決定データ配置プラン6040が生成されると、プロセッサ1100は、決定データ配置プラン6040と、指定されたデータ配置とが一致するか否かを判定する(S1004)。
プロセッサ1100は、決定データ配置プラン6040と、指定されたデータ配置とが一致する場合には(S1004の結果が「YES」)、決定データ配置プラン6040をデータ配置定義情報4040に格納する(S1005)。このとき、決定データ配置プラン6040が稼働中のデータベースにおけるデータ配置と相違する場合には、データ配置実行部1215によってデータ配置を実行してもよい。プロセッサ1100は、指定されたデータ配置定義が正常に実行されたことを示すメッセージを端末装置2000に送信する(S1006)。
一方、決定データ配置プラン6040と、指定されたデータ配置とが一致しない場合には(S1004の結果が「NO」)、プロセッサ1100は、指定されたデータ配置定義が推奨できないデータ配置である旨のメッセージを端末装置2000に送信する(S1007)。
なお、インメモリデータベース1220に配置するすべての表をデータ配置定義に指定する必要はなく、指定された表が新たに決定されたデータ配置定義にすべて含まれていれば、指定されたデータ配置を推奨できると判定してもよい。
また、指定されたデータ配置が推奨されるデータ配置ではないと判定された場合には、推奨するデータ配置との処理コストの差を表示するようにしてもよい。さらに、指定されたデータ配置と推奨されるデータ配置を比較可能に表示し、指定するデータ配置を再定義して再チェックできるように構成してもよい。
本発明の第2の実施の形態によれば、ユーザが指定したデータ配置が推奨されるデータ配置であるか否かをチェックすることが可能となるため、性能の劣化を抑えながら、データ配置の自由度を高くすることができる。
以上、本発明を添付の図面を参照して詳細に説明したが、本発明はこのような具体的構成に限定されるものではなく、添付した請求の範囲の趣旨内における様々な変更及び同等の構成を含むものである。
本発明は、ストレージ装置に格納されたデータベースの一部をメモリに記憶して稼働可能なデータベースシステムに利用可能である。
Claims (14)
- データベースシステムにおいて、データを格納する表及び当該データの格納位置を示すインデクスを含むデータベースを管理する方法であって、
前記データベースシステムは、
前記データベースを管理するデータベース管理装置と、
前記データベースを格納する記憶装置と、を有し、
前記データベース管理装置は、
前記データベースを管理するデータベース管理部と、
前記記憶装置に格納されたデータベースの一部を記憶するメモリと、を備え、
前記データベース管理部は、前記記憶装置に格納されたデータベースに含まれる表及びインデクスごとのアクセス時間を含む統計情報を管理し、
前記方法は、
前記データベースに含まれる表を選択する第1のステップと、
前記選択された表に定義可能なインデクスを特定する第2のステップと、
前記選択された表及び前記特定されたインデクスを前記メモリに記憶した場合に、前記特定されたインデクスの一部又は全部を使用して前記選択された表にアクセスするための処理コストと、前記特定されたインデクスを使用せずに前記選択された表にアクセスするための処理コストとを、前記統計情報に基づいて算出する第3のステップと、
前記選択された表を前記メモリに配置可能か否かを、前記選択された表のメモリ使用量に基づいて判定する第4のステップと、
前記選択された表を前記メモリに配置可能な場合に、前記算出された処理コスト及び前記特定されたインデクスのメモリ使用量に基づいて、前記特定されたインデクスを前記メモリに配置するか否かを決定する第5のステップと、を含むデータベース管理方法。 - 請求項1に記載の方法であって、
前記第2のステップは、
前記選択された表に定義されたインデクスを抽出するステップと、
前記抽出されたインデクスが複数存在する場合に、当該複数のインデクスを併合することによって、新たなインデクスを生成するステップと、を含み、
前記特定されたインデクスは、前記定義されたインデクスと、前記生成されたインデクスとを含むデータベース管理方法。 - 請求項2に記載の方法であって、
前記第3のステップは、
前記選択された表にアクセスするためのSQLを抽出するステップと、
前記抽出されたSQLを処理する場合に使用するインデクスを前記特定されたインデクスから選択し、前記選択された表及び前記使用するインデクスにアクセスする順序を定義したアクセスパスを生成するステップと、
前記アクセスパスごとに前記処理コストを算出する第6のステップと、を含むデータベース管理方法。 - 請求項3に記載の方法であって、
前記統計情報は、前記抽出されたSQLを処理するための第1の総所要時間をさらに含み、
前記第6のステップは、
前記第1の総所要時間と、前記アクセスパスに含まれる表及びインデクスの各アクセス時間とに基づいて、前記抽出されたSQLを前記メモリに格納された表及びインデクスにアクセスして処理するための第2の総所要時間を算出するステップと、
前記第2の総所要時間に基づいて、前記アクセスパスごとの処理コストを算出するステップと、を含むデータベース管理方法。 - 請求項4に記載の方法であって、
前記表には、前記メモリに配置する優先度が設定され、
前記第1のステップは、前記優先度に基づいて前記表を選択するデータベース管理方法。 - 請求項5に記載の方法であって、
前記第5のステップは、
前記特定されたインデクスの少なくとも1つを使用し、かつ、前記処理コストが最小となるアクセスパスを選択するステップと、
前記選択されたアクセスパスの処理コストと、前記特定されたインデクスを使用せずに前記選択された表のみを含むアクセスパスの処理コストとの差を、第1の効果として算出するステップと、
前記優先度に基づいて前記選択された表よりも後に選択される表を、前記メモリに記憶した場合の処理コストと、前記メモリに記憶しなかった場合の処理コストとの差を、第2の効果として算出するステップと、
前記第1の効果が前記第2の効果よりも大きい場合に、前記選択されたアクセスパスに含まれるインデクスを前記メモリに配置するステップと、を含むデータベース管理方法。 - 請求項5に記載の方法であって、
前記第1のステップは、前記優先度の指定を受け付けるステップを含むデータベース管理方法。 - 請求項5に記載の方法であって、
前記優先度は、前記表のデータ量に基づいて設定されるデータベース管理方法。 - 請求項5に記載の方法であって、
前記統計情報は、前記表に対するアクセス頻度を含み、
前記優先度は、前記アクセス頻度に基づいて設定されるデータベース管理方法。 - 請求項9に記載の方法であって、
前記アクセス頻度は、前記表に格納されたデータを参照する頻度である参照アクセス頻度と、前記表に格納されたデータを更新する頻度である更新アクセス頻度と、を含み、
前記優先度は、前記参照アクセス頻度及び前記更新アクセス頻度に基づいて設定されるデータベース管理方法。 - 請求項1に記載の方法であって、
前記データベースに含まれる表の指定を受け付ける第7のステップと、
前記指定された表を前記メモリに配置するか否かを示す情報を出力する第8のステップと、をさらに含むデータベース管理方法。 - 請求項1に記載の方法であって、
前記データベースに含まれる各表及びインデクスについて、前記メモリに配置するか否かを判定する第9のステップと、
前記メモリに配置すると判定された表及びインデクスを前記メモリに配置する第10のステップと、をさらに含むデータベース管理方法。 - データを格納する表及び当該データの格納位置を示すインデクスを含むデータベースを格納する記憶装置に接続され、前記データベースに格納された表及びインデクスの一部を記憶可能なメモリを備えるデータベース管理装置であって、
前記データベースを管理するデータベース管理部と、
前記記憶装置に格納されたデータベースの一部を記憶するメモリと、を備え、
前記データベース管理部は、
前記メモリに配置する対象となる表及びインデクスを抽出する配置対象データ情報生成部と、
前記抽出された表及びインデクスを前記メモリ配置した場合の処理コストを算出する処理コスト算出部と、
前記算出された処理コストに基づいて、前記メモリに配置する表及びインデクスを示すデータ配置プランを決定するデータ配置プラン決定部と、を有し、
前記記憶装置に格納されたデータベースに含まれる表及びインデクスごとのアクセス時間を含む統計情報を管理し、
前記配置対象データ情報生成部は、
前記データベースに含まれる表を選択し、
前記選択された表に定義可能なインデクスを特定し、
前記処理コスト算出部は、前記選択された表及び前記特定されたインデクスを前記メモリに記憶した場合に、前記特定されたインデクスの一部又は全部を使用して前記選択された表にアクセスするための処理コストと、前記特定されたインデクスを使用せずに前記選択された表にアクセスするための処理コストとを、前記統計情報に基づいて算出し、
前記データ配置プラン決定部は、
前記選択された表を前記メモリに配置可能な否かを、前記選択された表のメモリ使用量に基づいて判定し、
前記選択された表を前記メモリに配置可能な場合に、前記算出された処理コスト及び前記特定されたインデクスのメモリ使用量に基づいて、前記特定されたインデクスを前記メモリに配置するか否かを決定するデータベース管理装置。 - データを格納する表及び当該データの格納位置を示すインデクスを含むデータベースを格納する記憶装置に接続され、前記データベースに格納された表及びインデクスの一部を記憶可能なメモリを備えるデータベース管理装置で実行されるプログラムであって、
前記データベース管理装置は、前記記憶装置に格納されたデータベースに含まれる表及びインデクスごとのアクセス時間を含む統計情報を管理し、
前記プログラムは、
前記データベースに含まれる表を選択する手順と、
前記選択された表に定義可能なインデクスを特定する手順と、
前記選択された表及び前記特定されたインデクスを前記メモリに記憶した場合に、前記特定されたインデクスの一部又は全部を使用して前記選択された表にアクセスするための処理コストと、前記特定されたインデクスを使用せずに前記選択された表にアクセスするための処理コストとを、前記統計情報に基づいて算出する手順と、
前記選択された表を前記メモリに配置可能な否かを、前記選択された表のメモリ使用量に基づいて判定する手順と、
前記選択された表を前記メモリに配置可能な場合に、前記算出された処理コスト及び前記特定されたインデクスのメモリ使用量に基づいて、前記特定されたインデクスを前記メモリに配置するか否かを決定する手順と、を含むデータベース管理プログラム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2010/063209 WO2012017529A1 (ja) | 2010-08-04 | 2010-08-04 | データベース管理方法、データベース管理装置及びデータベース管理プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2012017529A1 JPWO2012017529A1 (ja) | 2013-09-19 |
JP5304950B2 true JP5304950B2 (ja) | 2013-10-02 |
Family
ID=45559060
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012527500A Expired - Fee Related JP5304950B2 (ja) | 2010-08-04 | 2010-08-04 | データベース管理方法、データベース管理装置及びデータベース管理プログラム |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP5304950B2 (ja) |
WO (1) | WO2012017529A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11372560B2 (en) | 2020-02-27 | 2022-06-28 | Kioxia Corporation | Utilization-efficient resource allocation |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6046523B2 (ja) * | 2013-03-06 | 2016-12-14 | Kddi株式会社 | インメモリ型分散データベース、データ分散方法及びプログラム |
AU2014228252B9 (en) | 2013-03-15 | 2017-06-29 | BeulahWorks, LLC | Knowledge capture and discovery system |
JP2016184272A (ja) * | 2015-03-26 | 2016-10-20 | 日本電気株式会社 | データベース管理システム、そのバッファリング方法およびコンピュータ・プログラム |
US11803547B2 (en) * | 2017-05-19 | 2023-10-31 | Oracle International Corporation | System and method for query resource caching |
JP6654654B2 (ja) * | 2018-01-19 | 2020-02-26 | 株式会社日立製作所 | クエリ生成支援方法及びクエリ生成支援装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01194028A (ja) * | 1988-01-29 | 1989-08-04 | Hitachi Ltd | データベース処理方法および装置 |
JPH07334402A (ja) * | 1994-06-13 | 1995-12-22 | Hitachi Ltd | メインメモリ化データベース |
JP2008225575A (ja) * | 2007-03-08 | 2008-09-25 | Nec Corp | 計算機負荷見積システム、計算機負荷見積方法 |
-
2010
- 2010-08-04 JP JP2012527500A patent/JP5304950B2/ja not_active Expired - Fee Related
- 2010-08-04 WO PCT/JP2010/063209 patent/WO2012017529A1/ja active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01194028A (ja) * | 1988-01-29 | 1989-08-04 | Hitachi Ltd | データベース処理方法および装置 |
JPH07334402A (ja) * | 1994-06-13 | 1995-12-22 | Hitachi Ltd | メインメモリ化データベース |
JP2008225575A (ja) * | 2007-03-08 | 2008-09-25 | Nec Corp | 計算機負荷見積システム、計算機負荷見積方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11372560B2 (en) | 2020-02-27 | 2022-06-28 | Kioxia Corporation | Utilization-efficient resource allocation |
Also Published As
Publication number | Publication date |
---|---|
WO2012017529A1 (ja) | 2012-02-09 |
JPWO2012017529A1 (ja) | 2013-09-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5304950B2 (ja) | データベース管理方法、データベース管理装置及びデータベース管理プログラム | |
US7886028B2 (en) | Method and system for system migration | |
US8352516B2 (en) | Multi-application object mapping tool | |
US20150081964A1 (en) | Management apparatus and management method of computing system | |
JP6695437B2 (ja) | 管理計算機及びテスト環境決定方法 | |
CN103177059A (zh) | 用于数据库计算引擎的分离处理路径 | |
WO2011111532A1 (ja) | データベースシステム | |
US20130346992A1 (en) | Computing system, method for controlling thereof, and computer-readable recording medium having computer program for controlling thereof | |
CN115129782A (zh) | 一种分布式数据库的分区级连接方法和装置 | |
JP2018194875A (ja) | 並列処理装置、ジョブ管理方法、およびジョブ管理プログラム | |
JP5697195B2 (ja) | アクセス予測に基づいてテーブルのミラーリングを制御する管理システム、プログラムおよび方法 | |
JP5773493B2 (ja) | 情報処理装置 | |
US20140297983A1 (en) | Method of arranging data, information processing apparatus, and recording medium | |
JP4719137B2 (ja) | 複数プログラムの制御管理方法および制御管理装置 | |
US10394615B2 (en) | Information processing apparatus and job management method | |
JP2008225686A (ja) | 分散型データ処理プラットフォームにおけるデータ配置管理装置と方法、システム及びプログラム | |
JPWO2009157062A1 (ja) | 構成管理装置、構成管理プログラム、構成管理方法 | |
JP6130645B2 (ja) | 生産計画生成装置、生産計画生成方法、プログラム、及び記録媒体 | |
JP2013088920A (ja) | 計算機システム及びデータ管理方法 | |
JP2009157441A (ja) | 情報処理装置、ファイル再配置方法およびプログラム | |
KR101975998B1 (ko) | Sql 구문 기반의 데이터 이관 장치 및 방법 | |
JP5963313B2 (ja) | 情報処理装置、方法、及び、プログラム | |
JP7284687B2 (ja) | マッピングシステム及びマッピング方法 | |
WO2022202676A1 (ja) | 情報資源割当支援装置、情報資源割当支援方法、及び、情報資源割当支援プログラムが格納された記録媒体 | |
CN112000447B (zh) | 双芯智能电表中的硬件设备管理方法、装置和计算机设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20130528 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130610 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5304950 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |