JP5055059B2 - データベース処理方法、その実施システム及びプログラム - Google Patents

データベース処理方法、その実施システム及びプログラム Download PDF

Info

Publication number
JP5055059B2
JP5055059B2 JP2007203272A JP2007203272A JP5055059B2 JP 5055059 B2 JP5055059 B2 JP 5055059B2 JP 2007203272 A JP2007203272 A JP 2007203272A JP 2007203272 A JP2007203272 A JP 2007203272A JP 5055059 B2 JP5055059 B2 JP 5055059B2
Authority
JP
Japan
Prior art keywords
lock
program
database
time
average
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
Application number
JP2007203272A
Other languages
English (en)
Other versions
JP2009037544A (ja
Inventor
元晴 渡辺
孝明 永井
清彦 奈良崎
篤司 指野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2007203272A priority Critical patent/JP5055059B2/ja
Publication of JP2009037544A publication Critical patent/JP2009037544A/ja
Application granted granted Critical
Publication of JP5055059B2 publication Critical patent/JP5055059B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明はデータベースに対するロック形式の選択やリクエストのキュー制御を行うデータベース処理技術に関するものである。
従来技術では、アプリケーションがJDBC(Java Database Connectivity)等のAPI(Application Programming Interface)を直接使用しデータベースを操作する場合は、SQL文をユーザが直接ソースコードに記述する方法が主であり、そのためSQL文が各ソースに散在してしまい、管理が煩雑になる。また、データベースに対するロック形式もユーザが手動でテーブル毎に設定する必要がある。
一方、登場したObject/Relationalマッピング(以下、O/Rマッピング)は、オブジェクトとリレーショナルデータベースのテーブルのレコードのマッピングを行うフレームワークであり、レコード単位の排他制御はO/Rマッピングフレームワーク若しくはDataBase Management System(以下、DBMS)が管理する。一般的に排他制御を行う方式には、Pessimistic方式とOptimistic方式の2つがあり、ユーザはオブジェクト毎にどちらの方式かを指定する。
Pessimistic方式は、最初にデータを読み取る時からロックをかけるため、更新処理は必ず成功する。その代わり、ロックの取得時間が長いため、同じレコードにアクセスするトランザクションが存在する場合、ロックの競合が発生して、同時実行性が低下する可能性がある。
共有ロックを取得するOptimisticの特徴は、排他の範囲が狭いため、ロックの競合が発生する可能性が低く、同時実行性に優れている。但し、同じデータを変更する複数のトランザクションが存在する場合は、更新に失敗する可能性が高くなる。
リレーショナルデータベースのレコードとオブジェクトをマッピングするO/Rマッピングは、レコードをオブジェクトとして扱い、データベースのレコードを意識することなく扱える様にする。ユーザがデータベースのレコードを操作するには、O/Rマッピングフレームワークが提供するAPIを使用してオブジェクトを操作することでデータベースのレコードを操作する。
特開2006−92358号公報
ユーザはアプリケーションの特徴やシステム構成、性能要件に応じて、O/Rマッピングフレームワークに対して手動でロック方式を設定しなければならないため、手間がかかる。
本発明の目的は、適切なロック形式を導き出して、動的に適切なロック形式をO/Rマッピングフレームワークに対して設定することであり、状況(アクセスの傾向、負荷)に応じてロック形式を動的に選択することである。
また、動的に適切なロック方式を選択したとしても、同一データに対するアクセスが多く、ロックの衝突率が改善されない場合は、ロックを取得できない他のトランザクションによるロック待ちが頻繁に発生すると、リソースを有効に使えず、システム全体のパフォーマンスが低下する。
本発明の目的では、ロック方式の変更だけでなく、同一データにアクセスするリクエストの流動制御(同時実行数の変更)を行うことにより、システム全体のパフォーマンスを向上させることが可能である。
本発明は、データベースに対するロック形式を選択してデータベース処理を管理する計算機システムにおいて、トレースログとマッピングテーブルを解析してオブジェクトのロック形式を判定しロック形式の設定を行うものである。
上記目的を達成する為に、本発明の計算機システムでは、障害解析で用いるトレースログとマッピングテーブルを解析することによってオペレーション対応テーブル及びオブジェクト管理テーブルを作成する。そして、そのトレースログとマッピングテーブルの解析結果であるオペレーション対応テーブル及びオブジェクト管理テーブルから随時適切なロック形式を判定し、動的にロック形式の変更を行う。更に本発明の管理サーバは、オペレーション対応テーブル及びオブジェクト管理テーブルからキューの同時実行数の制御を行い、スケジューラが効率的にリクエストをキューに割り振ることにより、ロックの競合率を抑える処理を行う。
本発明では、主に障害解析で用いているトレースを分析することによって、データベースに対する排他制御の適切なロック形式を自動的に判定することができる。
また、管理サーバが自動的に適切なロック形式をデータベースに対して設定することにより、ユーザはデータベースに対する設定作業を軽減することができる。
更に、ロック形式を変更するだけでなく、同一データにアクセスするリクエストの流動制御を行うことで、アプリケーションサーバに効率的にリクエストを割り振り、システム全体のパフォーマンスを向上させることができる。
以下にデータベースに対するロック形式を選択してデータベース処理を管理する一実施形態の計算機システムについて説明する。
図1は本実施形態の複数のプログラム実行装置(アプリケーションサーバ)を管理する計算機システムの構成を示す図である。図1の基本構成の概略図に示す様に、ロードバランサ101は、リクエストを受信するとロードバランサの規則に従い受信したリクエストをスケジューラ102に割り振る。リクエストがロードバランサ101によりスケジューラ102に割り振られた場合、スケジューラ102は、リクエストをどのキューに割り当てるか判定するため、キューテーブル104を参照して、リクエストをキュー103に格納する。
キュー103に格納されているリクエストが存在する場合、コンテナ126はリクエストをキュー103から取り出して処理を開始する。コンテナ126は、リクエストの処理に応じてトレースを取得するタイミングになった場合、トレーサ114を使用してトレースログ115を取得する。そしてコンテナ126は、リクエストをアプリケーション106に渡す。
アプリケーション106はユーザオブジェクト107を操作し、ユーザオブジェクト107は、アプリケーション106からユーザオブジェクト107に対して行われた操作をO/Rマッピングフレームワーク108に通知する。
O/Rマッピングフレームワーク108は、マッピングテーブル111を参照して操作されたユーザオブジェクト107のロック形式を取得する。そしてO/Rマッピングフレームワーク108は、ロック形式に従った操作を参照部109、更新部110に対して行う。
すなわち、データベースサーバ113のデータを参照する場合、O/Rマッピングフレームワーク108の参照部109は、データベースアクセス部112に対してデータを参照する命令を出す。データベースアクセス部112では、実際にデータベースサーバ113のテーブル124の操作を行う為に、データベースサーバ113に対して、データベース用の命令を送信する。データベースサーバ113は、受信した命令をDBMS125が解釈して、テーブル124に対して処理を行い、結果を返す。
また、データベースサーバ113のデータを更新する場合には、O/Rマッピングフレームワーク108の更新部110が、データベースアクセス部112に対してデータを更新する命令を出す。データベースアクセス部112はデータベースサーバ113のテーブル124を更新する。
O/Rマッピングフレームワーク108は、データベースの参照後若しくは更新後、結果をユーザオブジェクト107に対して設定する。更新処理を実行した場合、O/Rマッピングフレームワーク108はユーザオブジェクト107を更新する。
そしてアプリケーション106はユーザオブジェクト107の結果を参照し、アプリケーション106はコンテナ126に結果を返す。またコンテナ126は、結果をリクエストの送信元に返す。
管理装置である管理サーバ100の解析部116は、マッピングテーブル111とトレースログ115を解析して、オペレーション対応テーブル123、オブジェクト管理テーブル122を作成する。
また管理サーバ100の判定部117は、ロック判定部118とキュー判定部119から構成される。ロック判定部118では、オペレーション対応テーブル123、オブジェクト管理テーブル122から、ユーザオブジェクト107に対して設定する適切なロック形式を判定する。キュー判定部119では、オペレーション対応テーブル123、オブジェクト管理テーブル122から、キューの同時実行数の設定を判定する。
管理サーバ100の設定部120は、サーバテーブル121を参照して、設定を行うスケジューラ102を決定して、ロック判定部118が判定した適切なロック形式をO/Rマッピングフレームワーク108に対して設定し、また、キュー判定部119が判定した適切な同時実行数をスケジューラ102に対して設定する。
またスケジューラ152は、スケジューラ102と同等の機能を有する。キュー153は、キュー103と同等の機能を有する。キューテーブル154は、キューテーブル104と同等の機能を有する。コンテナ176は、コンテナ126と同等の機能を有する。アプリケーション156は、アプリケーション106と同等の機能を有する。ユーザオブジェクト157は、ユーザオブジェクト107と同等の機能を有する。マッピングテーブル161は、マッピングテーブル111と同等の機能を有する。O/Rマッピングフレームワーク158は、O/Rマッピングフレームワーク108と同等の機能を有し、参照部159と更新部160から構成され、それぞれは参照部109と更新部110と同等の機能を有する。トレーサ164は、トレーサ114と同等の機能を有し、トレースログ165はトレーサ164により出力されるログである。
以下に、図1における各部の説明を行う。
図5は本実施形態のPessimistic/Optimisticのリクエストの処理の流れを示す図である。本実施形態のPessimistic/Optimisticのリクエストの処理の流れをシーケンスを用いて説明する。
AP層1120は、図1のコンテナ126及びアプリケーション106を指す。OR層1121は、図1のユーザオブジェクト107、O/Rマッピングフレームワーク108を指す。DB層1122は、図1のデータベースサーバ113及びDBMS125、テーブル124を指す。
AP層1120がリクエスト1100を受け取ると、AP層1120は、リクエスト1100の処理を開始することを示すリクエスト開始ポイント1101のトレースログを出力する。
リクエスト1100がAP層からOR層1121に渡され、OR層からDB層にデータの参照を行う場合、OR層はDB層の参照を開始することを示す参照開始ポイント1102のトレースログを出力する。また、OR層はDB層の参照が完了すると、参照を完了したことを示す参照完了ポイント1103のトレースログを出力する。
OR層からDB層にデータの更新を行う場合、OR層はDB層の更新を開始することを示す更新開始ポイント1104のトレースログを出力する。また、OR層はDB層の更新が完了すると、更新を完了したことを示す更新完了ポイント1105のトレースログを出力する。リクエスト1100の処理が完了するとAP層は、処理が完了したことを示すリクエスト完了ポイント1106のトレースログを出力する。
OR層1121がDB層1122を参照している時間つまり参照時間1107は、参照開始ポイント1102が取得された時間から参照完了ポイント1103が取得された時間の差分と定義する。OR層1121の参照が完了して次の更新を行うまでの時間つまり中間時間1108を参照完了ポイント1103が取得された時間から更新開始ポイントが取得された時間の差分と定義する。OR層1121がDB層1122を更新している時間つまり更新時間1109は、更新開始ポイント1104で取得された時間から更新完了ポイント1105が取得された時間の差分と定義する。待ち時間1111は、参照時間1107と中間時間1108と更新時間1109の和と定義する。処理時間1110は、AP層でのリクエスト開始ポイント1101を取得した時間とリクエスト完了ポイント1106を取得した時間の差分と定義する。処理時間1110の構成要素には、参照時間1107、中間時間1108、更新時間1109が含まれる。
図6は本実施形態のPessimisticロック形式の動作例を示す図である。リクエストA1200、リクエストB1210、リクエストC1220は、それぞれ同時期に同一のデータにアクセスが発生した例を示しており、処理の実行順序は、リクエストA1200、リクエストB1210、リクエストC1220の順とする。
Pessimisticのロック形式の特徴は、リクエストのデータベースの操作開始から完了までロックを取得することである。つまり、リクエストA1200において、データベースアクセス時には、参照開始ポイント1202から更新完了ポイント1205までの間、ロックを取得する。この時、リクエストB1210では、同時期に参照開始ポイント1212で、ロックを取得しようとしているが、リクエストB1210より先にリクエストA1200がロックを取得したため、実際に参照が完了する時点つまり参照完了ポイント1213までの間に、リクエストA1200のロック時間1230つまり参照開始ポイント1202から更新完了ポイント1205までの時間分、ロックの取得を待たされる。
また、リクエストC1220については、リクエストA1200、リクエストB1210のロックが解除されるまで、つまりリクエストAのロック時間1230とリクエストB1210のロック時間の和の時間分、ロックの取得を待たされる。以降のリクエストについても、同様にロックが競合した場合、ロックの取得を待たされる。
ロック時間1230は、データベースにアクセスを開始した参照開始ポイント1202から更新が完了する更新完了ポイント1205の差分となる。ロックの衝突が発生した場合、ここではリクエストBにおいて、ロック時間とは、参照開始ポイント1212と更新完了ポイント1215の差分からリクエストAのロック時間1230の差分となる。ロック待ち時間1240は、ロックの競合が発生して、他のリクエストによってロックの取得を待たされる時間とする。リクエストBにおいて、ロックの待ち時間は、リクエストAのロック時間に相当する。リクエストCにおいて、ロックの待ち時間は、リクエストAのロック時間とリクエストBのロック時間の和に相当する。
図7は本実施形態のOptimisticロック形式の動作例を示す図である。リクエストA1300、リクエストB1310は、それぞれ同時期に同一のデータにアクセスが発生した場合を示しており、処理の実行順序は、リクエストA1300、リクエストB1310の順とする。
Optimisticのロック形式の特徴は、データ参照時に共有ロックを取得して、実際にデータ更新時に、他のリクエストが共有ロックを取得していないか判断して、他のリクエストが共有ロックを取得している場合は、データの更新に失敗することである。失敗したリクエストにおいて、処理をデータ参照時から再びリトライさせる。
リクエストA1300は参照開始ポイント1302で、リクエストB1310より先に共有ロックを取得する。リクエストB1310は、その後に、参照開始ポイント1312で共有ロックを取得する。リクエストA1300は、ほかのリクエストBが共有ロックを取得しているため、データの更新に失敗し、共有ロックを解放する。この時、AP層は更新エラーポイント1304をトレースログに出力して、再度データ参照からつまり共有ロックの取得からリトライする。
リクエストA1300が共有ロックを解放すると、リクエストB1310は他のリクエストで共有ロックを保持しているリクエストが存在しないため、実際にデータの更新を行い、処理を完了する。再度データ参照からリトライしているリクエストA1300は、リクエストBがロックを解放する更新完了ポイント1315の後に、共有ロックを取得でき、処理を完了することができる。
この時、リクエストA1300の更新エラーポイント1304から更新が成功する時に取得した共有ロック取得時間つまり参照開始ポイント1305の差分の時間が、最長リトライ時間と定義する。リトライなし時間は、リトライ処理を行わずにリクエストの処理を完了した処理時間と定義する。つまり、リトライなし時間の定義は、処理時間1316と浪費時間1317の差分とする。浪費時間1317の定義は、共有ロックを取得してからロックの衝突が発生して、ロックの再取得を含めて、ロックの取得が無駄になった時間とする。
図8は本実施形態の解析部116/判定部117/設定部120の処理概要のフロー例を示す図である。図8に示す様に管理サーバ100は、サーバテーブル121を参照して、全てのアプリケーションサーバについて、次の解析部116、判定部117、設定部120の処理を実行する(1400)。
まず解析部116は、トレースログ115とマッピングテーブル111を解析して、オペレーション対応テーブル123とオブジェクト管理テーブル122を作成する(1401)。
判定部117を構成するロック判定部118は、オペレーション対応テーブル123とオブジェクト管理テーブル122を参照してオブジェクトの適切なロック形式を判定する(1402)。
判定部117を構成するキュー判定部119は、オペレーション対応テーブル123とオブジェクト管理テーブル122とキューテーブル104を参照して、キューのリクエスト処理の同時実行数の増減を判定する(1403)。
そして設定部120は、ロック判定部118が判定したロック形式をO/Rマッピングフレームワーク108に対して設定し、キュー判定部119が判定したキューのリクエスト処理の同時実行数の増減についてスケジューラ102に対して設定する(1404)。その後、解析部116の処理1401に戻る。
ロック判定部118の詳細なフローは図9、キュー判定部の詳細なフローは図10を用いて説明する。
図9は本実施形態のロック判定部118のフロー例を示す図である。図9に示す様にロック判定部118は、オブジェクトのロック形式がPessimisticかどうか判定する(302)。
オブジェクトのロック形式がPessimisticの場合は、(平均処理時間−平均待ち時間)×(1−衝突率)+(平均処理時間−平均待ち時間+平均参照時間+平均中間時間+リトライ待ち時間)×衝突率で求められる値とPessimisticの平均処理時間の値を比較する(303)。
この式の考え方は、ロック形式がPessimisticの場合、Optimisticでの処理時間を予測することである。ロックの衝突が発生しない場合のOptimisticの処理時間は、待ち時間は発生しないため、(平均処理時間−平均待ち時間)と予測する。また、ロックの衝突が発生した場合のOptimisticの処理時間は、待ち時間は発生せず、ロックの衝突により無駄になった処理及びロック再取得処理があるため、(平均処理時間−平均待ち時間+平均参照時間+平均中間時間+リトライ待ち時間)と予測する。
前記比較の結果、Pessimisticの平均処理時間が大きい場合、ロック判定部118はオブジェクトのロック形式をOptimisticに変更する様にO/Rマッピングフレームワークに命令することをメモリに保持しておく(304)。またPessimisticの平均処理時間が等しいか小さい場合は、判定処理を終了する。
一方、オブジェクトのロック形式がPessimisticではない場合、リトライなし平均処理時間+(平均参照時間+平均中間時間+平均更新時間)×衝突率+リトライなし平均処理時間×(1−衝突率)よりOptimisticの平均処理時間が大きいか判定する(306)。
Optimisticの平均処理時間が大きい場合、ロック判定部118は、オブジェクトのロック形式をPessimisticに変更する様に、O/Rマッピングフレームワークに命令することをメモリに保持しておく(307)。またOptimisticの平均処理時間が等しいか小さい場合、判定処理を終了する。
この処理では、ロック形式がOptimisticの場合、Pessimisticでの処理時間を予測している。すなわち、ロックの衝突が発生しない場合のPessimisticの処理時間は、ロックによる待ち時間が発生しないため、リトライなし平均処理時間と予測し、ロックの衝突が発生した場合の処理時間は、ロックによる待ち時間を(平均参照時間+平均中間時間+平均更新時間)と想定して、リトライなし平均処理時間+(平均参照時間+平均中間時間+平均更新時間)と予測する。
図10は本実施形態のキュー判定部119のフロー例を示す図である。図10に示す様にキュー判定部119は、まずユーザがスケジューラのキューテーブルに対して設定した閾値を読み込む(401)。そして、オブジェクトのロック形式がPessimisticかどうかの判定する(402)。
オブジェクトのロック形式がPessimisticの場合、平均処理時間より閾値が大きいかを判定する(403)。平均処理時間より閾値が大きい場合、キュー判定部119は、スケジューラに対してキューの同時実行数を増やす命令を出すことをメモリに保持しておく(404)。
また、平均処理時間より閾値が同じか小さい場合、閾値がリトライなし平均処理時間より大きく、かつ平均処理時間より小さいか判定する(406)。判定の理由は、キューを絞ることで、ロックの衝突が減少して、平均処理時間が短縮され、リトライなし時間に近づけることができると予測するためである。
閾値がリトライなし平均処理時間より大きく、かつ平均処理時間より小さい場合、キュー判定部119は、スケジューラに対してキューの同時実行数を減らす命令を出すことをメモリに保持しておく(407)。そして、閾値がリトライなし平均処理時間以下、または平均処理時間以上の場合、判定処理を終了する。
一方、オブジェクトのロック形式がPessimisticでない場合、平均処理時間より閾値が大きいか判定する(408)。平均処理時間より閾値が大きい場合、キュー判定部119は、スケジューラに対してキューの同時実行数を増やす命令を出すことをメモリに保持しておく(409)。
また、平均処理時間より閾値が等しいか小さい場合、閾値が、平均処理時間−平均待ち時間より大きくかつ平均処理時間より小さいかどうか判定する(410)。判定の理由は、キューを絞ることで、ロックの衝突が減少して、平均処理時間が短縮され、待ち時間なしの平均処理時間に近づけることができると予測するためである。
閾値が、平均処理時間−平均待ち時間より大きくかつ平均処理時間より小さい場合、キュー判定部119は、スケジューラに対してキューの同時実行数を減らす命令を出すことをメモリに保持しておく(411)。そして、閾値が、平均処理時間−平均待ち時間より大きくかつ平均処理時間より小さいことを満たさない場合、判定処理を終了する。
図11は本実施形態のリクエストフローの例を示す図である。図11に示す様にロードバランサ101がリクエストを受信すると(501)、ロードバランサ101は、ロードバランサ自身のルールに従い、リクエストをスケジューラに割り振る(502)。
スケジューラは、リクエストに操作するユーザオブジェクトを特定できる情報がある場合、キューテーブルを参照して、リクエストのオペレーションに対応するキューにリクエストをキューイングし、そうでない場合はキューイングルールに従いキューにリクエストをキューイングする(503)。
キューにリクエストをキューイングしたとき、キューの最大同時実行数が現在の同時実行数より小さいか判定する(504)。キューの現在の同時実行数が最大同時実行数以上の場合、スケジューラは、キューが同時に実行しているリクエストのいずれか1つが完了するまで新しいリクエストの処理を待機させる(505)。キューの現在の同時実行数が最大同時実行数より小さい場合、スケジューラは、キューにリクエストをキューイングして、キューの現在の同時実行数の値を1つ増やす(506)。
コンテナは、キューからリクエストを取り出し(507)、コンテナは、トレーサを使用して、リクエストの開始処理を示すトレースログを取得する(508)。そしてコンテナは、取り出したリクエストの処理をアプリケーションに渡す(509)。
アプリケーションは、ユーザオブジェクトに対してメソッド呼び出しを行う(510)。O/Rマッピングフレームワークは、マッピングテーブルを参照して、ユーザオブジェクトにマッピングされているデータベースサーバのテーブルを知る(511)。
コンテナは、トレースを利用してテーブル参照開始を示すトレースログを取得する(512)。O/Rマッピングフレームワークは、参照部を使用して、データベースアクセス部を介して、データベースサーバのテーブルを参照する(513)。コンテナは、トレースを利用して、テーブル参照完了を示すトレースログを取得する(515)。
コンテナは、トレースを利用してテーブル更新開始を示すトレースログを取得する(515)。O/Rマッピングフレームワークは、更新部を利用して、データベースアクセス部を介して、データベースサーバのテーブルを更新する(516)。コンテナは、トレースを利用してテーブル更新完了を示すトレースログを取得する(517)。O/Rマッピングフレームワークは、結果をユーザオブジェクトに対して設定する(518)。
ユーザオブジェクトは結果をアプリケーションに返す(519)。アプリケーションは結果をコンテナに返す(520)。コンテナは、トレースを利用して、リクエストの完了を示すトレースログを取得する(521)。コンテナは、結果をリクエストの送信元に返す(522)。スケジューラは、キューの現在の同時実行数の値を1つ減らす(523)。
図12は本実施形態のマッピングテーブル111の構成を示す図である。図12に示す様にマッピングテーブル111は、オブジェクト601、ロック形式602から構成される。O/Rマッピングフレームワーク108は、データベースサーバ113にアクセスする時のユーザオブジェクト107のロック形式602を、オブジェクト601をキーにして取得する。また、解析部116が、オブジェクト管理テーブル122を作成する上で、ユーザオブジェクト107の現在のロック形式602を取得する為に参照される。
図13は本実施形態のトレースログ115の構成を示す図である。図13に示す様にトレースログ115は、トレースポイント701、時刻702、リクエスト通番703、オペレーション704、オブジェクト705、オブジェクトID706から構成される。
トレースポイント701には、アプリケーションサーバでの処理の開始を示す開始ポイントTRC00001、処理の完了を示す完了ポイントTRC00006、O/Rマッピングフレームワークにおいて、データベースに対してデータの参照の開始を示すポイントTRC00002、参照の完了を示すポイントTRC00003、データの更新の開始を示すポイントTRC00004、更新の完了を示すポイントTRC00005が存在する。
時刻702は、トレースポイント701を取得した時点の現在時刻とする。なお、本システムを構成するサーバ間の時刻合わせは行われていることを前提とする。リクエスト通番703は、一つのリクエストに対して一意の通番がトレーサによって割り振られる。リクエスト通番でフィルタリングを行うことにより、リクエストの処理の流れが確認できる。
オペレーション704は、リクエストに含まれている情報である。例えば、URL等を指す。トレースポイントTRC00001及びTRC00006のみで取得可能である。オブジェクト705は、リクエストの処理で実際に操作されるデータベースのデータにマッピングされているオブジェクトである。オブジェクトID706は、オブジェクト705を示す一意のIDである。オブジェクト705、オブジェクトIDはトレースポイントTRC00002、TRC00003、TRC00004、TRC00005で取得可能である。
図14は本実施形態のキューテーブル104の構成を示す図である。図14に示す様にキューテーブル104は、キュー名801、オペレーション802、閾値803から構成される。
キュー名801は、スケジューラが管理するキューの名前を指す。オペレーション802は、キューにキューイングされたリクエストに含まれている情報である。閾値803は、キュー判定部で使用され、ユーザにより入力される情報である。
図15は本実施形態のオペレーション対応テーブル123の構成を示す図である。図15に示す様にオペレーション対応テーブル123は、オペレーション901、オブジェクト902から構成される。
オペレーション901は、リクエストに含まれる情報である。オブジェクト902は、リクエストの処理で実際に操作されるデータベースのデータにマッピングされているオブジェクトである。1つのオペレーションに対して、複数のオブジェクトを操作することもある。
図16は本実施形態のオブジェクト管理テーブル122の構成を示す図である。図16に示す様にオブジェクト管理テーブル122は、オブジェクト1001、ロック形式1002、平均処理時間1003、平均参照時間1004、平均中間時間1005、平均更新時間1006、平均待ち時間1007、ロック衝突率1008から構成される。
オブジェクト1001は、リクエストの処理で実際に操作されるデータベースのデータにマッピングされているオブジェクトである。ロック形式1002は、オブジェクト1001をキーに、キューテーブルから取得したロック形式602である。
平均処理時間1003は、同一のオブジェクトにおける現在までの処理時間の平均値である。平均参照時間1004は、同一のオブジェクトにおける現在までの参照時間の平均値である。平均中間時間1005は、同一のオブジェクトにおける現在までの中間時間の平均値である。平均更新時間1006は、同一のオブジェクトにおける現在までの更新時間の平均値である。
平均待ち時間1007は、同一のオブジェクトにおける現在までの待ち時間の平均値である。ロック衝突率1008は、同一のオブジェクトに対するロックの衝突率である。リトライなし平均処理時間1009は、同一オブジェクトにおいて、ロック形式Optsmisticである場合、ロックの衝突が起きずに、リクエストが処理された平均時間であり、ロックの衝突が発生した場合にリトライされる時間を含まない時間である。
図17は本実施形態のサーバテーブル121の構成を示す図である。図17に示す様にサーバテーブル1703は、サーバ名1701、スケジューラ1702から構成される。サーバ名1701は、管理サーバ100が管理しているサーバ群を指す。設定部120がロック形式またはキューの同時実行数の設定を行う場合に、サーバ名1701をキーに、設定対象となるスケジューラ102を取得する。
本実施形態の情報処理装置は、図2のアプリケーションサーバ105、図3の管理サーバ100、データベースサーバ113から構成される。
図2は本実施形態のアプリケーションサーバ105のハードウェア構成を示す図である。図2において、アプリケーションサーバ105は、メモリ202、CPU201、記憶装置203、通信インターフェイス204から構成される。メモリ202には、コンテナ126、キューテーブル104、スケジューラ102、キュー103、アプリケーション106、マッピングテーブル111、ユーザオブジェクト107、データベースアクセス部112、トレーサ114、O/Rマッピングフレームワーク108、参照部109、更新部110が格納されており、各々CPU201によって実行される。記憶装置203には、トレースログ115が格納されおり、必要に応じてメモリ202にロードされる。
図3は本実施形態の管理サーバ100のハードウェア構成を示す図である。図3において、管理サーバ100は、メモリ233、CPU242、通信インターフェイス231から構成される。メモリ233には、判定部117、ロック判定部118、キュー判定部119、解析部116、設定部120、オペレーション対応テーブル123、オブジェクト管理テーブル122、サーバテーブル121が格納されており、各々CPU242によって実行される。
本実施形態において、解析部116等の各処理部としてコンピュータを機能させる為のプログラムは、CD−ROM等の記録媒体に記録され磁気ディスク等に格納された後、メモリにロードされて実行されるものとする。なお前記プログラムを記録する記録媒体はCD−ROM以外の他の記録媒体でも良い。また前記プログラムを当該記録媒体からコンピュータにインストールして使用しても良いし、ネットワークを通じて当該記録媒体にアクセスして前記プログラムを使用するものとしても良い。
図4は本実施形態のデータベースサーバ113のハードウェア構成を示す図である。図4において、データベースサーバ113は、メモリ263、CPU261、記憶装置264、通信インターフェイス262から構成される。メモリ263には、DBMS125が格納されており、CPU261によって実行される。記憶装置264には、データベースのテーブル124が格納されており、必要に応じてメモリ263にロードされる。
従来技術では、アプリケーションの特徴やシステム構成、性能要件に応じて、手動でO/Rマッピングフレームワークに対してロック形式を手動で設定しており、ロック形式はO/Rマッピングフレームワークの定義ファイルに記載する等、ユーザが手動で設定を記述する必要があった。
本実施形態では、管理サーバが自動で適切なロック形式を判定して、設定するため、ユーザが手動で定義ファイルを記述する必要がなくなり、O/Rマッピングフレームワークの設定作業を軽減できる。
以上説明した様に本実施形態のデータベース処理装置によれば、トレースログとマッピングテーブルを解析してオブジェクトのロック形式を判定しロック形式の設定を行うので、データベース処理における適切なロック形式を導き出して、動的に適切なロック形式をO/Rマッピングフレームワークに対して設定することが可能である。
また本実施形態のデータベース処理装置によれば、トレースログとマッピングテーブルを解析してキューのリクエスト処理の同時実行数の増減を判定し同時実行数の設定を行うので、データベース処理におけるシステム全体のパフォーマンスを向上させることが可能である。
本実施形態の複数のアプリケーションサーバを管理するシステムの構成を示す図である。 本実施形態のアプリケーションサーバ105のハードウェア構成を示す図である。 本実施形態の管理サーバ100のハードウェア構成を示す図である。 本実施形態のデータベースサーバ113のハードウェア構成を示す図である。 本実施形態のPessimistic/Optimisticのリクエストの処理の流れを示す図である。 本実施形態のPessimisticロック形式の動作例を示す図である。 本実施形態のOptimisticロック形式の動作例を示す図である。 本実施形態の解析部116/判定部117/設定部120の処理概要のフロー例を示す図である。 本実施形態のロック判定部118のフロー例を示す図である。 本実施形態のキュー判定部119のフロー例を示す図である。 本実施形態のリクエストフローの例を示す図である。 本実施形態のマッピングテーブル111の構成を示す図である。 本実施形態のトレースログ115の構成を示す図である。 本実施形態のキューテーブル104の構成を示す図である。 本実施形態のオペレーション対応テーブル123の構成を示す図である。 本実施形態のオブジェクト管理テーブル122の構成を示す図である。 本実施形態のサーバテーブル121の構成を示す図である。
符号の説明
100…管理サーバ、101…ロードバランサ、102…スケジューラ、103…キュー、104…キューテーブル、105…アプリケーションサーバ、106…アプリケーション、107…ユーザオブジェクト、108…O/Rマッピングフレームワーク、109…参照部、110…更新部、111…マッピングテーブル、112…データベースアクセス部、113…データベースサーバ、114…トレーサ、115…トレースログ、116…解析部、117…判定部、118…ロック判定部、119…キュー判定部、120…設定部、121…サーバテーブル、122…オブジェクト管理テーブル、123…オペレーション対応テーブル、124…テーブル、125…DBMS、126…コンテナ、152…スケジューラ、153…キュー、154…キューテーブル、156…アプリケーション、157…ユーザオブジェクト、158…O/Rマッピングフレームワーク、159…参照部、160…更新部、161…マッピングテーブル、162…データベースアクセス部、164…トレーサ、165…トレースログ、176…コンテナ、201…CPU、202…メモリ、203…記憶装置、204…通信インターフェイス、231…通信インターフェイス、233…メモリ、242…CPU、261…CPU、262…通信インターフェイス、263…メモリ、264…記憶装置、1100…リクエスト、1101…リクエスト開始ポイント、1102…参照開始ポイント、1103…参照完了ポイント、1104…更新開始ポイント、1105…更新完了ポイント、1106…リクエスト完了ポイント、1107…参照時間、1108…中間時間、1109…更新時間、1110…処理時間、1111…待ち時間、1120…AP層、1121…OR層、1122…DB層、1200…リクエストA、1202…参照開始ポイント、1205…更新完了ポイント、1210…リクエストB、1212…参照開始ポイント、1213…参照完了ポイント、1215…更新完了ポイント、1220…リクエストC、1230…ロック時間、1240…ロック待ち時間、1300…リクエストA、1302…参照開始ポイント、1304…更新エラーポイント、1305…参照開始ポイント、1310…リクエストB、1312…参照開始ポイント、1315…更新完了ポイント、1316…処理時間、1317…浪費時間、601…オブジェクト、602…ロック形式、701…トレースポイント、702…時刻、703…リクエスト通番、704…オペレーション、705…オブジェクト、706…オブジェクトID、801…キュー名、802…オペレーション、803…閾値、901…オペレーション、902…オブジェクト、1001…オブジェクト、1002…ロック形式、1003…平均処理時間、1004…平均参照時間、1005…平均中間時間、1006…平均更新時間、1007…平均待ち時間、1008…ロック衝突率、1009…リトライなし平均処理時間、1701…サーバ名、1702…スケジューラ、1703…サーバテーブル。

Claims (10)

  1. データベース装置は、データベースを管理し、
    複数のプログラム実行装置(アプリケーションサーバ)は、第1の記憶装置を有し、受け付けたオペレーションに基づいたプログラムの実行により該データベース装置へアクセスするとともにサービスを実現し、
    管理装置は、第2の記憶装置を有し、前記複数のプログラム実行装置を管理し、
    前記プログラム実行装置は、前記オペレーションを含む前記プログラムのトレースログと、前記プログラムが利用する前記データベースへのアクセス時に用いるロック形式を記憶したマッピングテーブルとを前記第1の記憶装置に格納し、
    前記管理装置は、前記第1の記憶装置から前記トレースログと前記マッピングテーブルとを参照して解析し、前記オペレーションとその該オペレーションに基づいて実行されたプログラムと該プログラムのトレースログとを対応付けて前記第2の記憶装置に格納し、該格納した前記オペレーションとその該オペレーションに基づいて実行されたプログラムと該プログラムのトレースログを参照し、前記ロック形式毎に前記オペレーションに対する前記トレースログを評価して前記プログラム実行装置で用いる前記ロック形式を決定し、該決定したロック形式の前記複数のプログラム実行装置への設定を行うことを特徴とするデータベース処理方法。
  2. 前記管理装置はオブジェクトのロック形式として設定されている第1のロック形式における平均処理時間とオブジェクトのロック形式として設定されていない第2のロック形式における平均処理時間とを比較して前記オブジェクトのロック形式の判定を行うことを特徴とする請求項1に記載されたデータベース処理方法。
  3. 前記管理装置はオブジェクトのロック形式として設定されていない第2のロック形式における平均処理時間を所定の式に従って算出して平均処理時間の比較を行うことを特徴とする請求項2に記載されたデータベース処理方法。
  4. 前記管理装置が前記判定を行うロック形式はPessimisticロック形式とOptimisticロック形式であることを特徴とする請求項2または請求項3のいずれかに記載されたデータベース処理方法。
  5. 前記管理装置は、オブジェクトのロック形式として設定されている第1のロック形式がPessimisticロック形式である場合に、オブジェクトのロック形式として設定されていない第2のロック形式であるOptimisticロック形式における平均処理時間を、(平均処理時間−平均待ち時間)×(1−衝突率)+(平均処理時間−平均待ち時間+平均参照時間+平均中間時間+リトライ待ち時間)×衝突率の式に従って算出して平均処理時間の比較を行うことを特徴とする請求項4に記載されたデータベース処理方法。
  6. 前記管理装置は、オブジェクトのロック形式として設定されている第1のロック形式がOptimisticロック形式である場合に、オブジェクトのロック形式として設定されていない第2のロック形式であるPessimisticロック形式における平均処理時間を、リトライなし平均処理時間+(平均参照時間+平均中間時間+平均更新時間)×衝突率+リトライなし平均処理時間×(1−衝突率)の式に従って算出して平均処理時間の比較を行うことを特徴とする請求項4に記載されたデータベース処理方法。
  7. 前記管理装置が前記オペレーション対応テーブルとオブジェクト管理テーブルとキューテーブルを記憶装置から読み出してキューのリクエスト処理の同時実行数の増減を判定し、前記管理装置が前記判定したキューのリクエスト処理の同時実行数の増減についてアプリケーションサーバへ通信装置により送信してリクエスト処理の同時実行数の設定を行うことを特徴とする請求項1乃至請求項6のいずれか1項に記載されたデータベース処理方法。
  8. 前記管理装置は設定されているロック形式における平均処理時間と所定の閾値とを比較してリクエスト処理の同時実行数の増減を判定することを特徴とする請求項7に記載されたデータベース処理方法。
  9. データベース装置は、データベースを管理し、
    複数のプログラム実行装置(アプリケーションサーバ)は、第1の記憶装置を有し、受け付けたオペレーションに基づいたプログラムの実行により該データベース装置へアクセスするとともにサービスを実現し、
    管理装置は、第2の記憶装置を有し、前記複数のプログラム実行装置を管理し、
    前記プログラム実行装置は、前記オペレーションを含む前記プログラムのトレースログと、前記プログラムが利用する前記データベースへのアクセス時に用いるロック形式を記憶したマッピングテーブルとを前記第1の記憶装置に格納し、
    前記管理装置は、前記第1の記憶装置から前記トレースログと前記マッピングテーブルとを参照して解析し、前記オペレーションとその該オペレーションに基づいて実行されたプログラムと該プログラムのトレースログとを対応付けて前記第2の記憶装置に格納し、該格納した前記オペレーションとその該オペレーションに基づいて実行されたプログラムと該プログラムのトレースログを参照し、前記ロック形式毎に前記オペレーションに対する前記トレースログを評価して前記プログラム実行装置で用いる前記ロック形式を決定し、該決定したロック形式の前記複数のプログラム実行装置への設定を行うことを特徴とする計算機システム。
  10. データベース装置は、データベースを管理し、
    複数のプログラム実行装置(アプリケーションサーバ)は、第1の記憶装置を有し、受け付けたオペレーションに基づいたプログラムの実行により該データベース装置へアクセスするとともにサービスを実現し、
    管理装置は、第2の記憶装置を有し、前記複数のプログラム実行装置を管理し、
    前記プログラム実行装置は、前記オペレーションを含む前記プログラムのトレースログと、前記プログラムが利用する前記データベースへのアクセス時に用いるロック形式を記憶したマッピングテーブルとを前記第1の記憶装置に格納し、
    前記管理装置は、前記第1の記憶装置から前記トレースログと前記マッピングテーブルとを参照して解析し、前記オペレーションとその該オペレーションに基づいて実行されたプログラムと該プログラムのトレースログとを対応付けて前記第2の記憶装置に格納し、該格納した前記オペレーションとその該オペレーションに基づいて実行されたプログラムと該プログラムのトレースログを参照し、前記ロック形式毎に前記オペレーションに対する前記トレースログを評価して前記プログラム実行装置で用いる前記ロック形式を決定し、該決定したロック形式の前記複数のプログラム実行装置への設定を行うデータベース処理方法をコンピュータに実行させることを特徴とするプログラム。
JP2007203272A 2007-08-03 2007-08-03 データベース処理方法、その実施システム及びプログラム Expired - Fee Related JP5055059B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007203272A JP5055059B2 (ja) 2007-08-03 2007-08-03 データベース処理方法、その実施システム及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007203272A JP5055059B2 (ja) 2007-08-03 2007-08-03 データベース処理方法、その実施システム及びプログラム

Publications (2)

Publication Number Publication Date
JP2009037544A JP2009037544A (ja) 2009-02-19
JP5055059B2 true JP5055059B2 (ja) 2012-10-24

Family

ID=40439367

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007203272A Expired - Fee Related JP5055059B2 (ja) 2007-08-03 2007-08-03 データベース処理方法、その実施システム及びプログラム

Country Status (1)

Country Link
JP (1) JP5055059B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5614300B2 (ja) * 2011-01-20 2014-10-29 日本電気株式会社 処理時間予測装置、処理時間予測方法および処理時間予測プログラム
JP5939561B2 (ja) 2011-12-02 2016-06-22 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 資源のロックを獲得する装置及び方法
JP6318065B2 (ja) * 2014-09-26 2018-04-25 株式会社野村総合研究所 データベースのロック制御システム及び方法
JP6442996B2 (ja) * 2014-11-13 2018-12-26 日本電気株式会社 トランザクション処理装置、トラザクション処理方法、及びプログラム

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3603671B2 (ja) * 1999-06-11 2004-12-22 日本電気株式会社 データ共有管理装置およびデータ共有管理方法
US6704687B2 (en) * 2001-01-31 2004-03-09 Hewlett-Packard Development Company, L.P. Historical results based method for automatically improving computer system performance

Also Published As

Publication number Publication date
JP2009037544A (ja) 2009-02-19

Similar Documents

Publication Publication Date Title
US20200409768A1 (en) Autoscaling using file access or cache usage for cluster machines
US7092971B2 (en) Prefetch appliance server
US9959313B2 (en) Database management system and method capable of dynamically issuing inputs/outputs and executing operations in parallel
US7107267B2 (en) Method, system, program, and data structure for implementing a locking mechanism for a shared resource
JP4778035B2 (ja) 外部資源を排他使用しながら実行される命令の実行時間の遅延を防ぐためのコンピュータ・システム、並びにその方法及びコンピュータ・プログラム
US11899648B2 (en) Concurrency control for transactions in database systems
US8176076B2 (en) Method and system for controlling accesses to a database
US11449241B2 (en) Customizable lock management for distributed resources
US11809916B2 (en) Deadlock detection in distributed databases
US11709818B2 (en) Managing concurrent transactions in database systems
JP4961931B2 (ja) ジョブ実行のスケジューリングプログラム、ジョブ実行のスケジューリング方法、ジョブ実行のスケジューリング装置
JP5055059B2 (ja) データベース処理方法、その実施システム及びプログラム
KR100899527B1 (ko) 웹 서비스의 멀티쓰레드 운용 시스템 및 방법
US6807540B2 (en) System and method for deadlock management in database systems with demultiplexed connections
US10599472B2 (en) Information processing apparatus, stage-out processing method and recording medium recording job management program
JP2008544371A (ja) ロック関連の一貫性欠如を処理する方法
CN112328408A (zh) 数据处理方法、装置、***、设备及存储介质
US7721287B2 (en) Organizing transmission of repository data
JP2005107632A (ja) Eaiサーバおよびeaiサーバのプログラム
US11704305B1 (en) Optimizations for long-lived statements in a database system
US12007990B1 (en) Deferred constraints support in distributed database systems
US20240176775A1 (en) Datastore workload isolation
US20230325409A1 (en) Scalable compaction for a distributed database
US20230195719A1 (en) Optimizations to read and write transactions for large values in distributed databases
JP2005107824A (ja) Eaiサーバおよびeaiサーバのプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100114

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120620

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: 20120703

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120730

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150803

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees