IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特表2023-551830アクティブ-アクティブアーキテクチャにおけるバッチジョブのパフォーマンス改善
<>
  • 特表-アクティブ-アクティブアーキテクチャにおけるバッチジョブのパフォーマンス改善 図1
  • 特表-アクティブ-アクティブアーキテクチャにおけるバッチジョブのパフォーマンス改善 図2
  • 特表-アクティブ-アクティブアーキテクチャにおけるバッチジョブのパフォーマンス改善 図3
  • 特表-アクティブ-アクティブアーキテクチャにおけるバッチジョブのパフォーマンス改善 図4
  • 特表-アクティブ-アクティブアーキテクチャにおけるバッチジョブのパフォーマンス改善 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-12-13
(54)【発明の名称】アクティブ-アクティブアーキテクチャにおけるバッチジョブのパフォーマンス改善
(51)【国際特許分類】
   G06F 16/182 20190101AFI20231206BHJP
【FI】
G06F16/182
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023532252
(86)(22)【出願日】2021-11-17
(85)【翻訳文提出日】2023-05-25
(86)【国際出願番号】 CN2021131196
(87)【国際公開番号】W WO2022116828
(87)【国際公開日】2022-06-09
(31)【優先権主張番号】17/110,523
(32)【優先日】2020-12-03
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【弁理士】
【氏名又は名称】片岡 忠彦
(74)【復代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】リ、シュオ
(72)【発明者】
【氏名】ワン、シャオボ
(72)【発明者】
【氏名】ゾン、ジアティアン
(72)【発明者】
【氏名】スン、シェンヤン
(57)【要約】
アクティブ-アクティブアーキテクチャにおいてデータベースサーバ上で実行されるバッチジョブのパフォーマンスを改善するためのアプローチ。プロセッサは、ソースデータベースサーバ上でバッチジョブが実行される準備が整うことに応答して、同期化開始点を有する第1通信をターゲットデータベースサーバに送信する。バッチジョブの実行中、プロセッサはプリロック機能、プリロード機能、及びロック回避機能を用いてロック競合を防止する。プロセッサは、ソースデータベースサーバ又はターゲットデータベースサーバのいずれかがCOMMIT文に遭遇することに応答して、それぞれのデータベースサーバを一時停止し、他方のそれぞれのデータベースサーバがCOMMIT文を完了する準備が整っているかどうかを尋ねるために、第2通信を送信する。プロセッサは、他方のそれぞれのデータベースサーバが、他方のそれぞれのデータベースサーバがCOMMIT文を完了する準備が整っていることを確認することに応答して、ソースデータベースサーバ上及びターゲットデータベースサーバ上の両方でCOMMIT文を完了する。
【特許請求の範囲】
【請求項1】
アクティブ-アクティブ環境において、ソースデータベースサーバ上でバッチジョブが実行される準備が整うことに応答して、1つ又は複数のプロセッサが、前記ソースデータベースサーバ及びターゲットデータベースサーバの間で、前記ソースデータベースサーバ上及び前記ターゲットデータベースサーバ上の両方で前記バッチジョブの実行を開始する時点の同期化開始点を有する第1通信を送信する段階;
前記1つ又は複数のプロセッサが、前記ソースデータベースサーバ上及び前記ターゲットデータベースサーバ上の両方で、前記同期化開始点で開始する前記バッチジョブを実行する段階;
前記ソースデータベースサーバ又は前記ターゲットデータベースサーバのいずれかが、前記バッチジョブのユニットに対するCOMMIT文に遭遇することに応答して、前記1つ又は複数のプロセッサが、前記COMMIT文に遭遇したそれぞれのデータベースサーバを一時停止する段階;
前記1つ又は複数のプロセッサが、他方のそれぞれのデータベースサーバが前記COMMIT文を完了する準備が整っているかどうかを尋ねるために、前記ソースデータベースサーバ及び前記ターゲットデータベースサーバの間で第2通信を送信する段階;及び
前記他方のそれぞれのデータベースサーバが、前記他方のそれぞれのデータベースサーバが前記COMMIT文を完了する準備が整っていることを確認することに応答して、前記1つ又は複数のプロセッサが、前記ソースデータベースサーバ上及び前記ターゲットデータベースサーバ上の両方で前記COMMIT文を完了する段階
を備える、コンピュータ実装方法。
【請求項2】
前記ソースデータベースサーバ上又は前記ターゲットデータベースサーバ上のいずれかでロック競合に遭遇することに応答して、前記1つ又は複数のプロセッサが、前記ロック競合に遭遇しなかった前記他方のそれぞれのデータベースサーバに、操作を一時停止するよう通信を送信する段階を更に備える、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記ソースデータベースサーバ上又は前記ターゲットデータベースサーバ上のいずれかでSQLエラーに遭遇することに応答して、前記1つ又は複数のプロセッサが、前記SQLエラーに遭遇しなかった前記他方のそれぞれのデータベースサーバに通信を送信し、操作を一時停止する段階を更に備える、請求項1に記載のコンピュータ実装方法。
【請求項4】
前記1つ又は複数のプロセッサが、前記ソースデータベースサーバ及び前記ターゲットデータベースサーバにまたがって非同期的に、表スキャンアクセス方法を用いて、前記バッチジョブにおける各UPDATE文及び各DELETE文に対してプリロック機能を実行する段階、ここで、前記表スキャンアクセス方法を用いた前記プリロック機能は:
第1ページ上で操作によって修正される行をロックする前記操作のメインタスクと並行して、前記1つ又は複数のプロセッサが、前記操作によって修正される前記行に対して前記第1ページより後の各ページをスキャンする段階;
前記1つ又は複数のプロセッサが、前記第1ページより後の各ページ上で修正される前記行をロックする段階;及び
1つのページ内でロックされる行の数が所定の閾値を超過すると判定することに応答して、前記1つ又は複数のプロセッサが、前記ページに対するページロックを取得する段階
を有する
を更に備える、請求項1に記載のコンピュータ実装方法。
【請求項5】
前記1つ又は複数のプロセッサが、前記ソースデータベースサーバ及び前記ターゲットデータベースサーバにまたがって非同期的に、索引専用アクセス方法を用いて、前記バッチジョブにおける各UPDATE文及び各DELETE文に対してプリロック機能を実行する段階、ここで、前記索引専用アクセス方法を用いた前記プリロック機能は:
索引を用いて第1ページ上で操作によって修正される行をロックする前記操作のメインタスクと並行して、前記1つ又は複数のプロセッサが、索引エントリ内の情報を用いて、前記第1ページより後の各ページ上で前記操作によって修正される前記行を見つける段階、ここで、各索引エントリは、キー値及び行識別子(ID)を含み、前記行IDは、パーティション番号、データページ番号、及びスロット番号を含み、前記データページ番号は、各ページ上で修正される行の数を特定及び判定するために使用される;
前記1つ又は複数のプロセッサが、前記第1ページより後の各ページ上で修正される前記行をロックする段階;及び
1つのページ内でロックされる行の数が、前記ページに対するデータページ番号エントリの数に基づき、所定の閾値を超過すると判定することに応答して、前記1つ又は複数のプロセッサが、前記ページに対するページロックを取得する段階
を有する
を更に備える、請求項1に記載のコンピュータ実装方法。
【請求項6】
前記1つ又は複数のプロセッサが、前記ソースデータベースサーバ及び前記ターゲットデータベースサーバにまたがって非同期的に、通常の索引アクセス方法を用いて、前記バッチジョブにおける各UPDATE文及び各DELETE文に対してプリロック機能を実行する段階、ここで、前記通常の索引アクセス方法を用いた前記プリロック機能は:
索引を用いて第1ページ上で操作によって修正される行をロックする前記操作のメインタスクと並行して、前記1つ又は複数のプロセッサが、索引エントリ内の情報に基づき、前記第1ページより後の各ページ上で前記操作によって修正される前記行を見つける段階、及び、次に、前記操作に含まれる追加の述語を適用して、どの行ロック又はページロックを取得するかを判定する段階、ここで、各索引エントリは、キー値及び行識別子(ID)を含み、前記行IDは、パーティション番号、データページ番号、及びスロット番号を含み、前記データページ番号は、各ページ上で修正される行の数を特定及び判定するために使用される;
前記1つ又は複数のプロセッサが、修正される前記行を有する前記第1ページより後の各ページに対してページレベルロックを取得する段階;及び
1つのページ内でロックされる行の数が、各索引エントリ内の前記データページ番号に基づき、所定の閾値を超過しないと判定することに応答して、前記1つ又は複数のプロセッサが、前記ページレベルロックを行レベルロックにダウングレードする段階
を有する
を更に備える、請求項1に記載のコンピュータ実装方法。
【請求項7】
前記1つ又は複数のプロセッサが、前記ソースデータベースサーバ及び前記ターゲットデータベースサーバにまたがって非同期的に、前記バッチジョブにおける各INSERT文に対してプリロード機能を実行する段階、ここで、前記プリロード機能は:
行の第1セットをフェッチする操作のメインタスクと並行して、前記1つ又は複数のプロセッサが、索引を用いて行の第2セットを保存するために使用されるリーフページのセットの位置を特定することにより、行の前記第2セットをプリロードする段階、ここで、前記リーフページは、前記操作によって挿入される表の上で定義される
を有する
を更に備える、請求項1に記載のコンピュータ実装方法。
【請求項8】
前記バッチジョブにおいてSELECT文に遭遇することに応答して、前記1つ又は複数のプロセッサが、前記ソースデータベースサーバ及び前記ターゲットデータベースサーバにまたがって非同期的に、ロック回避機能を実行する段階、ここで、前記ロック回避機能は:
前記1つ又は複数のプロセッサが、前記バッチジョブのアクティブユニットリカバリ(UR)識別情報(ID)のイメージを構築する段階、ここで、前記イメージは、前記アクティブUR IDの下限及び上限を含む;
前記イメージの前記下限及び前記上限内でUR IDを有する行を読み取ることに応答して、前記1つ又は複数のプロセッサが、前記下限を下回るそれぞれのUR IDを有する前記行のバージョンが見つかるまで、前記行のログ記録をトレースバックする段階;及び
前記1つ又は複数のプロセッサが、前記下限を下回る前記それぞれのUR IDを有する前記行の前記バージョンを用いて、ロックを伴うことなく前記SELECT文を実行する段階
を有する
を更に備える、請求項1に記載のコンピュータ実装方法。
【請求項9】
アクティブ-アクティブ環境において、ソースデータベースサーバ上でバッチジョブが実行される準備が整うことに応答して、1つ又は複数のプロセッサが、前記ソースデータベースサーバ及びターゲットデータベースサーバの間で、前記ソースデータベースサーバ上及び前記ターゲットデータベースサーバ上の両方で前記バッチジョブの実行を開始する時点の同期化開始点を有する第1通信を送信する段階;
前記1つ又は複数のプロセッサが、前記ソースデータベースサーバ上及び前記ターゲットデータベースサーバ上の両方で、前記同期化開始点で開始する前記バッチジョブを実行する段階;
前記1つ又は複数のプロセッサが、前記ソースデータベースサーバ及び前記ターゲットデータベースサーバにまたがって非同期的に、表スキャンアクセス方法を用いて、前記バッチジョブにおける各UPDATE文及び各DELETE文に対してプリロック機能を実行する段階;
前記ソースデータベースサーバ又は前記ターゲットデータベースサーバのいずれかが、前記バッチジョブのユニットに対するCOMMIT文に遭遇することに応答して、前記1つ又は複数のプロセッサが、前記COMMIT文に遭遇したそれぞれのデータベースサーバを一時停止する段階;
前記1つ又は複数のプロセッサが、他方のそれぞれのデータベースサーバが前記COMMIT文を完了する準備が整っているかどうかを尋ねるために、前記ソースデータベースサーバ及び前記ターゲットデータベースサーバの間で第2通信を送信する段階;及び
前記他方のそれぞれのデータベースサーバが、前記他方のそれぞれのデータベースサーバが前記COMMIT文を完了する準備が整っていることを確認することに応答して、前記1つ又は複数のプロセッサが、前記ソースデータベースサーバ上及び前記ターゲットデータベースサーバ上の両方で前記COMMIT文を完了する段階
を備える、コンピュータ実装方法。
【請求項10】
前記ソースデータベースサーバ上又は前記ターゲットデータベースサーバ上のいずれかでロック競合に遭遇することに応答して、前記1つ又は複数のプロセッサが、前記ロック競合に遭遇しなかった前記他方のそれぞれのデータベースサーバに、操作を一時停止するよう通信を送信する段階を更に備える、請求項9に記載のコンピュータ実装方法。
【請求項11】
前記ソースデータベースサーバ上又は前記ターゲットデータベースサーバ上のいずれかでSQLエラーに遭遇することに応答して、前記1つ又は複数のプロセッサが、前記SQLエラーに遭遇しなかった前記他方のそれぞれのデータベースサーバに通信を送信し、操作を一時停止する段階を更に備える、請求項9に記載のコンピュータ実装方法。
【請求項12】
前記表スキャンアクセス方法を用いた前記プリロック機能は:
第1ページ上で操作によって修正される行をロックする前記操作のメインタスクと並行して、前記1つ又は複数のプロセッサが、前記操作によって修正される前記行に対して前記第1ページより後の各ページをスキャンする段階;
前記1つ又は複数のプロセッサが、前記第1ページより後の各ページ上で修正される前記行をロックする段階;及び
1つのページ内でロックされる行の数が所定の閾値を超過すると判定することに応答して、前記1つ又は複数のプロセッサが、前記ページに対するページロックを取得する段階
を備える、請求項9に記載のコンピュータ実装方法。
【請求項13】
前記1つ又は複数のプロセッサが、前記ソースデータベースサーバ及び前記ターゲットデータベースサーバにまたがって非同期的に、前記バッチジョブにおける各INSERT文に対してプリロード機能を実行する段階、ここで、前記プリロード機能は:
行の第1セットをフェッチする操作のメインタスクと並行して、前記1つ又は複数のプロセッサが、索引を用いて行の第2セットを保存するために使用されるリーフページのセットの位置を特定することにより、行の前記第2セットをプリロードする段階、ここで、前記リーフページは、前記操作によって挿入される表の上で定義される
を有する
を更に備える、請求項9に記載のコンピュータ実装方法。
【請求項14】
前記バッチジョブにおいてSELECT文に遭遇することに応答して、前記1つ又は複数のプロセッサが、前記ソースデータベースサーバ及び前記ターゲットデータベースサーバにまたがって非同期的に、ロック回避機能を実行する段階、ここで、前記ロック回避機能は:
前記1つ又は複数のプロセッサが、前記バッチジョブのアクティブユニットリカバリ(UR)識別情報(ID)のイメージを構築する段階、ここで、前記イメージは、前記アクティブUR IDの下限及び上限を含む;
前記イメージの前記下限及び前記上限内でUR IDを有する行を読み取ることに応答して、前記1つ又は複数のプロセッサが、前記下限を下回るそれぞれのUR IDを有する前記行のバージョンが見つかるまで、前記行のログ記録をトレースバックする段階;及び
前記1つ又は複数のプロセッサが、前記下限を下回る前記それぞれのUR IDを有する前記行の前記バージョンを用いて、ロックを伴うことなく前記SELECT文を実行する段階
を有する
を更に備える、請求項9に記載のコンピュータ実装方法。
【請求項15】
アクティブ-アクティブ環境において、ソースデータベースサーバ上でバッチジョブが実行される準備が整うことに応答して、1つ又は複数のプロセッサが、前記ソースデータベースサーバ及びターゲットデータベースサーバの間で、前記ソースデータベースサーバ上及び前記ターゲットデータベースサーバ上の両方で前記バッチジョブの実行を開始する時点の同期化開始点を有する第1通信を送信する段階;
前記1つ又は複数のプロセッサが、前記ソースデータベースサーバ上及び前記ターゲットデータベースサーバ上の両方で、前記同期化開始点で開始する前記バッチジョブを実行する段階;
前記1つ又は複数のプロセッサが、前記ソースデータベースサーバ及び前記ターゲットデータベースサーバにまたがって非同期的に、索引専用アクセス方法を用いて、前記バッチジョブにおける各UPDATE文及び各DELETE文に対してプリロック機能を実行する段階;
前記ソースデータベースサーバ又は前記ターゲットデータベースサーバのいずれかが、前記バッチジョブのユニットに対するCOMMIT文に遭遇することに応答して、前記1つ又は複数のプロセッサが、前記COMMIT文に遭遇したそれぞれのデータベースサーバを一時停止する段階;
前記1つ又は複数のプロセッサが、他方のそれぞれのデータベースサーバが前記COMMIT文を完了する準備が整っているかどうかを尋ねるために、前記ソースデータベースサーバ及び前記ターゲットデータベースサーバの間で第2通信を送信する段階;及び
前記他方のそれぞれのデータベースサーバが、前記他方のそれぞれのデータベースサーバが前記COMMIT文を完了する準備が整っていることを確認することに応答して、前記1つ又は複数のプロセッサが、前記ソースデータベースサーバ上及び前記ターゲットデータベースサーバ上の両方で前記COMMIT文を完了する段階
を備える、コンピュータ実装方法。
【請求項16】
前記ソースデータベースサーバ上又は前記ターゲットデータベースサーバ上のいずれかでロック競合に遭遇することに応答して、前記1つ又は複数のプロセッサが、前記ロック競合に遭遇しなかった前記他方のそれぞれのデータベースサーバに、操作を一時停止するよう通信を送信する段階を更に備える、請求項15に記載のコンピュータ実装方法。
【請求項17】
前記ソースデータベースサーバ上又は前記ターゲットデータベースサーバ上のいずれかでSQLエラーに遭遇することに応答して、前記1つ又は複数のプロセッサが、前記SQLエラーに遭遇しなかった前記他方のそれぞれのデータベースサーバに通信を送信し、操作を一時停止する段階を更に備える、請求項15に記載のコンピュータ実装方法。
【請求項18】
前記索引専用アクセス方法を用いた前記プリロック機能は:
索引を用いて第1ページ上で操作によって修正される行をロックする前記操作のメインタスクと並行して、前記1つ又は複数のプロセッサが、索引エントリ内の情報を用いて、前記第1ページより後の各ページ上で前記操作によって修正される前記行を見つける段階、ここで、各索引エントリは、キー値及び行識別子(ID)を含み、前記行IDは、パーティション番号、データページ番号、及びスロット番号を含み、前記データページ番号は、各ページ上で修正される行の数を特定及び判定するために使用される;
前記1つ又は複数のプロセッサが、前記第1ページより後の各ページ上で修正される前記行をロックする段階;及び
1つのページ内でロックされる行の数が、前記ページに対するデータページ番号エントリの数に基づき、所定の閾値を超過すると判定することに応答して、前記1つ又は複数のプロセッサが、前記ページに対するページロックを取得する段階
を備える、請求項15に記載のコンピュータ実装方法。
【請求項19】
前記1つ又は複数のプロセッサが、前記ソースデータベースサーバ及び前記ターゲットデータベースサーバにまたがって非同期的に、前記バッチジョブにおける各INSERT文に対してプリロード機能を実行する段階、ここで、前記プリロード機能は:
行の第1セットをフェッチする操作のメインタスクと並行して、前記1つ又は複数のプロセッサが、索引を用いて行の第2セットを保存するために使用されるリーフページのセットの位置を特定することにより、行の前記第2セットをプリロードする段階、ここで、前記リーフページは、前記操作によって挿入される表の上で定義される
を有する
を更に備える、請求項15に記載のコンピュータ実装方法。
【請求項20】
前記バッチジョブにおいてSELECT文に遭遇することに応答して、前記1つ又は複数のプロセッサが、前記ソースデータベースサーバ及び前記ターゲットデータベースサーバにまたがって非同期的に、ロック回避機能を実行する段階、ここで、前記ロック回避機能は:
前記1つ又は複数のプロセッサが、前記バッチジョブのアクティブユニットリカバリ(UR)識別情報(ID)のイメージを構築する段階、ここで、前記イメージは、前記アクティブUR IDの下限及び上限を含む;
前記イメージの前記下限及び前記上限内でUR IDを有する行を読み取ることに応答して、前記1つ又は複数のプロセッサが、前記下限を下回るそれぞれのUR IDを有する前記行のバージョンが見つかるまで、前記行のログ記録をトレースバックする段階;及び
前記1つ又は複数のプロセッサが、前記下限を下回る前記それぞれのUR IDを有する前記行の前記バージョンを用いて、ロックを伴うことなく前記SELECT文を実行する段階
を有する
を更に備える、請求項15に記載のコンピュータ実装方法。
【請求項21】
1つ又は複数のコンピュータ可読記憶媒体、及び前記1つ又は複数のコンピュータ可読記憶媒体上で集合的に記憶されたプログラム命令、前記記憶されたプログラム命令は:
アクティブ-アクティブ環境において、ソースデータベースサーバ上でバッチジョブが実行される準備が整うことに応答して、前記ソースデータベースサーバ及びターゲットデータベースサーバの間で、前記ソースデータベースサーバ上及び前記ターゲットデータベースサーバ上の両方で前記バッチジョブの実行を開始する時点の同期化開始点を有する第1通信を送信するためのプログラム命令;
前記ソースデータベースサーバ上及び前記ターゲットデータベースサーバ上の両方で、前記同期化開始点で開始する前記バッチジョブを実行するためのプログラム命令;
前記ソースデータベースサーバ又は前記ターゲットデータベースサーバのいずれかが、前記バッチジョブのユニットに対するCOMMIT文に遭遇することに応答して、前記COMMIT文に遭遇したそれぞれのデータベースサーバを一時停止するためのプログラム命令;
他方のそれぞれのデータベースサーバが前記COMMIT文を完了する準備が整っているかどうかを尋ねるために、前記ソースデータベースサーバ及び前記ターゲットデータベースサーバの間で第2通信を送信するためのプログラム命令;及び
前記他方のそれぞれのデータベースサーバが、前記他方のそれぞれのデータベースサーバが前記COMMIT文を完了する準備が整っていることを確認することに応答して、前記ソースデータベースサーバ上及び前記ターゲットデータベースサーバ上の両方で前記COMMIT文を完了するためのプログラム命令
を有する
を備える、コンピュータプログラム製品。
【請求項22】
前記ソースデータベースサーバ上又は前記ターゲットデータベースサーバ上のいずれかでロック競合に遭遇することに応答して、前記ロック競合に遭遇しなかった前記他方のそれぞれのデータベースサーバに、操作を一時停止するよう通信を送信するためのプログラム命令を更に備える、請求項21に記載のコンピュータプログラム製品。
【請求項23】
1つ又は複数のコンピュータプロセッサ;
1つ又は複数のコンピュータ可読記憶媒体;
前記1つ又は複数のコンピュータプロセッサのうちの少なくとも1つによる実行のために、前記1つ又は複数のコンピュータ可読記憶媒体上で集合的に記憶されたプログラム命令、前記記憶されたプログラム命令は:
アクティブ-アクティブ環境において、ソースデータベースサーバ上でバッチジョブが実行される準備が整うことに応答して、前記ソースデータベースサーバ及びターゲットデータベースサーバの間で、前記ソースデータベースサーバ上及び前記ターゲットデータベースサーバ上の両方で前記バッチジョブの実行を開始する時点の同期化開始点を有する第1通信を送信するためのプログラム命令;
前記ソースデータベースサーバ上及び前記ターゲットデータベースサーバ上の両方で、前記同期化開始点で開始する前記バッチジョブを実行するためのプログラム命令;
前記ソースデータベースサーバ又は前記ターゲットデータベースサーバのいずれかが、前記バッチジョブのユニットに対するCOMMIT文に遭遇することに応答して、前記COMMIT文に遭遇したそれぞれのデータベースサーバを一時停止するためのプログラム命令;
他方のそれぞれのデータベースサーバが前記COMMIT文を完了する準備が整っているかどうかを尋ねるために、前記ソースデータベースサーバ及び前記ターゲットデータベースサーバの間で第2通信を送信するためのプログラム命令;及び
前記他方のそれぞれのデータベースサーバが、前記他方のそれぞれのデータベースサーバが前記COMMIT文を完了する準備が整っていることを確認することに応答して、前記ソースデータベースサーバ上及び前記ターゲットデータベースサーバ上の両方で前記COMMIT文を完了するためのプログラム命令
を有する
を備える、コンピュータシステム。
【請求項24】
前記ソースデータベースサーバ上又は前記ターゲットデータベースサーバ上のいずれかでロック競合に遭遇することに応答して、前記ロック競合に遭遇しなかった前記他方のそれぞれのデータベースサーバに、操作を一時停止するよう通信を送信するためのプログラム命令を更に備える、請求項23に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概してデータベースサーバ上におけるデータ同期化の分野に関し、より具体的には、アクティブ-アクティブアーキテクチャにおけるデータベースサーバ上で実行されるバッチジョブのパフォーマンスの改善に関する。
【背景技術】
【0002】
アクティブ-アクティブアーキテクチャは、複数のデータベースサーバを使用する分散リレーショナルデータベースサービス(Distribute Relational Database Service)において一般的である。アクティブ-アクティブアーキテクチャは、一対のデータベースサーバ、すなわち、ソースサーバ及びターゲットサーバを使用し、ターゲットサーバはソースサーバのバックアップである。データの読み取り及び/又は書き込みは、両サーバから/両サーバに対してなされ得る。アクティブ-アクティブアーキテクチャは、1つのサーバがダウンした場合に、データアクセスの高度な可用性を保証する。
【0003】
バッチジョブは、バッチモードにおいて処理されるコンピュータプログラム又はプログラムのセットである。これは、オペレーティングシステムにより実行されるコマンドのシーケンス、すなわち、複数の構造化照会言語(Structured Query Language:SQL)文がファイル(多くの場合、バッチファイル、コマンドファイル、ジョブスクリプト、又はシェルスクリプトと称される)にリストされ、単一のユニットとして実行するためにサブミットされることを意味する。
【発明の概要】
【0004】
本発明の一実施形態の態様は、アクティブ-アクティブアーキテクチャにおいてデータベースサーバ上で実行されるバッチジョブのパフォーマンスを改善するための方法、コンピュータプログラム製品、及びコンピュータシステムについて開示する。
【0005】
プロセッサは、アクティブ-アクティブ環境において、ソースデータベースサーバ上でバッチジョブが実行される準備が整うことに応答して、ソースデータベースサーバ及びターゲットデータベースサーバの間で、ソースデータベースサーバ上及びターゲットデータベースサーバ上の両方でバッチジョブの実行を開始する時点の同期化開始点を有する第1通信を送信する。プロセッサは、ソースデータベースサーバ上及びターゲットデータベースサーバ上の両方で、同期化開始点で開始するバッチジョブを実行する。プロセッサは、ソースデータベースサーバ又はターゲットデータベースサーバのいずれかが、バッチジョブのユニットに対するCOMMIT文に遭遇することに応答して、COMMIT文に遭遇したそれぞれのデータベースサーバを一時停止する。プロセッサは、他方のそれぞれのデータベースサーバが、COMMIT文を完了する準備が整っているかどうかを尋ねるために、ソースデータベースサーバ及びターゲットデータベースサーバの間で第2通信を送信する。プロセッサは、他方のそれぞれのデータベースサーバが、他方のそれぞれのデータベースサーバがCOMMIT文を完了する準備が整っていることを確認することに応答して、ソースデータベースサーバ上及びターゲットデータベースサーバ上の両方でCOMMIT文を完了する。
【0006】
本発明の一実施形態のいくつかの態様において、プロセッサは、ソースデータベースサーバ上又はターゲットデータベースサーバ上のいずれかでロック競合に遭遇することに応答して、ロック競合に遭遇しなかった他方のそれぞれのデータベースサーバに通信を送信し、操作を一時停止する。
【0007】
本発明の一実施形態のいくつかの態様において、プロセッサは、ソースデータベースサーバ上又はターゲットデータベースサーバ上のいずれかでSQLエラーに遭遇することに応答して、SQLエラーに遭遇しなかった他方のそれぞれのデータベースサーバに通信を送信し、操作を一時停止する。
【0008】
本発明の一実施形態のいくつかの態様において、プロセッサは、ソースデータベースサーバ及びターゲットデータベースサーバにまたがって非同期的に、表スキャンアクセス方法を用いて、バッチジョブにおける各UPDATE文及び各DELETE文に対してプリロック機能を実行する。表スキャンアクセス方法を用いたプリロック機能は、第1ページ上で操作によって修正される行をロックする操作のメインタスクと並行して、操作によって修正される行に対して第1ページより後の各ページをスキャンする段階;第1ページより後の各ページ上で修正される行をロックする段階;及び1つのページ内でロックされる行の数が所定の閾値を超過すると判定することに応答して、当該ページに対するページロックを取得する段階を含む。
【0009】
本発明の一実施形態のいくつかの態様において、プロセッサは、ソースデータベースサーバ及びターゲットデータベースサーバにまたがって非同期的に、索引専用アクセス方法を用いて、バッチジョブにおける各UPDATE文及び各DELETE文に対してプリロック機能を実行する。索引専用アクセス方法を用いたプリロック機能は、索引を用いて第1ページ上で操作によって修正される行をロックする操作のメインタスクと並行して、索引エントリ内の情報を用いて、第1ページより後の各ページ上で操作によって修正される行を見つける段階、ここで、各索引エントリは、キー値及び行識別子(ID)を含み、行IDは、パーティション番号、データページ番号、及びスロット番号を含み、データページ番号は、各ページ上で修正される行の数を特定及び判定するために使用される;第1ページより後の各ページ上で修正される行をロックする段階;及び、1つのページ内でロックされる行の数が、当該ページに対するデータページ番号エントリの数に基づき、所定の閾値を超過すると判定することに応答して、当該ページに対するページロックを取得する段階を含む。
【0010】
本発明の一実施形態のいくつかの態様において、プロセッサは、ソースデータベースサーバ及びターゲットデータベースサーバにまたがって非同期的に、通常の索引アクセス方法を用いて、バッチジョブにおける各UPDATE文及び各DELETE文に対してプリロック機能を実行する。通常の索引アクセス方法を用いたプリロック機能は、索引を用いて第1ページ上で操作によって修正される行をロックする操作のメインタスクと並行して、索引エントリ内の情報に基づき、第1ページより後の各ページ上で操作によって修正される行を見つける段階、及び、次に、操作に含まれる追加の述語を適用して、どの行ロック又はページロックを取得するかを判定する段階、ここで、各索引エントリは、キー値及び行識別子(ID)を含み、行IDは、パーティション番号、データページ番号、及びスロット番号を含み、データページ番号は、各ページ上で修正される行の数を特定及び判定するために使用される;修正される行を有する第1ページより後の各ページに対してページレベルロックを取得する段階;及び、1つのページ内でロックされる行の数が、各索引エントリ内のデータページ番号に基づき、所定の閾値を超過しないと判定することに応答して、ページレベルロックを行レベルロックにダウングレードする段階を含む。
【0011】
本発明の一実施形態のいくつかの態様において、プロセッサは、ソースデータベースサーバ及びターゲットデータベースサーバにまたがって非同期的に、バッチジョブにおける各INSERT文に対してプリロード機能を実行する。プリロード機能は、行の第1セットをフェッチする操作のメインタスクと並行して、索引を用いて行の第2セットを保存するために使用されるリーフページのセットの位置を特定することにより、行の第2セットをプリロードする段階を含み、ここで、リーフページは、操作によって挿入される表の上で定義される。
【0012】
本発明の一実施形態のいくつかの態様において、プロセッサは、バッチジョブにおいてSELECT文に遭遇することに応答して、ソースデータベースサーバ及びターゲットデータベースサーバにまたがって非同期的に、ロック回避機能を実行する。ロック回避機能は、バッチジョブのアクティブユニットリカバリ(UR)識別情報(ID)のイメージを構築する段階、ここで、イメージは、アクティブUR IDの下限(low boundary)及び上限(high boundary)を含む;イメージの下限及び上限内でUR IDを有する行を読み取ることに応答して、下限を下回るそれぞれのUR IDを有する行のバージョンが見つかるまで、行のログ記録をトレースバックする段階;及び、下限を下回るそれぞれのUR IDを有する行のバージョンを用いて、ロックを伴うことなくSELECT文を実行する段階、を備える。
【図面の簡単な説明】
【0013】
図1】先行技術に係る、アクティブ-アクティブアーキテクチャにおけるデータベースサーバ間でSQL文が実行される方法を示す機能フロー図である。
【0014】
図2】本発明の一実施形態に係る、分散データ処理環境を示す機能ブロック図である。
【0015】
図3】本発明の一実施形態に係る、ホストプログラムのユニットを示すブロック図である。
【0016】
図4】本発明の一実施形態に係る、アクティブ-アクティブアーキテクチャにおいてデータベースサーバ上で実行されるバッチジョブのパフォーマンスを改善するための、データ同期化方法の操作ステップを示すフローチャートである。
【0017】
図5】本発明の一実施形態に係る、図2の分散データ処理環境のサーバのコンポーネントのブロック図を示す。
【発明を実施するための形態】
【0018】
本発明の実施形態は、アクティブ-アクティブアーキテクチャがデータベース領域において幅広く用いられているが、ソースサーバ及びターゲットサーバの間で生じる必要があるデータ同期化に起因して、データパフォーマンスが犠牲になっていることを認識している。バッチジョブが実行される場合、データパフォーマンスは更に悪化する。SELECT、INSERT、UPDATE、又はDELETE操作などの操作によって修正又は読み取りが行われているが、コミットされておらず不可視である、すなわち、使用のためにアクセス不能であるデータは、データがコミットされるまでの時間が長くなるほど、データが不可視且つアクセス不能となる時間が長くなる。
【0019】
図1は、先行技術に係る、アクティブ-アクティブアーキテクチャにおけるデータベースサーバ間でジョブが実行される方法を示す機能フロー図100である。単一のデータ行を修正するために単一のコミットを達成するには、ソース及びターゲットの間の3つの矢印によって示されている通り、ソースサーバ105及びターゲットサーバ110の間で発生する必要がある3つの通信115が存在し、これが「待機」期間中におけるパフォーマンスの低下をもたらし、システムのリソースを浪費する。
【0020】
複数のデータ行の修正を必要とするバッチジョブのための1つの現在のソリューションは、「ブロック」修正操作を実行するために同じ3つの通信が発生することを必要とし、これは、図1に示す同じ4つのステップ(1-4)を実行するが、バッチジョブに関わる「行のブロック」に対して各ステップを実行することを伴う。ソースサーバ及びターゲットサーバの間には依然として同じ3つの通信が存在するが、バッチジョブのためのこの現在のソリューションには、(1)ソースサーバ及びターゲットサーバの間で「行のブロック」が修正され、コミットされることを可能にするために、3つの通信の間の待機時間が延長される;(2)ロック競合が発生する可能性が高まる;及び(3)この連続操作に起因して、システムリソースの利点を十分に活用することができない、という3つの欠点がある。そのため、本発明の実施形態は、データパフォーマンスを改善するために、アクティブ-アクティブアーキテクチャにおけるデータベースサーバに対するこのデータ同期化プロセス中の待機時間を削減する必要性を認識している。
【0021】
本発明の実施形態は、ソースサーバ上及びターゲットサーバ上の両方でバッチデータ修正操作を同時に実行し、ソースサーバ及びターゲットサーバの間で必要な通信を最小限にすることにより、アクティブ-アクティブアーキテクチャにおいてデータベースサーバ上で実行されるバッチジョブのためのデータパフォーマンスを改善するためのシステム及び方法を提供する。本発明の実施形態は更に、ロック競合を防止するために今後の修正操作に関わるデータをプリロック及び/又はプリロードすることにより、アクティブ-アクティブアーキテクチャにおけるデータベースサーバのためのデータパフォーマンスを改善するためのシステム及び方法を提供し、これはひいては、ロック競合に起因するダウンタイム(すなわち、一時停止時間)を削減し、ロック競合に起因してロールバックが必要となる可能性を低下させる。本発明の実施形態は更に、読み取り、すなわちSELECT操作に対するロック要件を回避することにより、アクティブ-アクティブアーキテクチャにおけるデータベースサーバのためのデータパフォーマンスを改善するためのシステム及び方法を提供する。
【0022】
本発明の実施形態の実装は、様々な形態を取ってよく、例示的な実装の詳細は、図2図5を参照して後に論述される。
【0023】
図2は、本発明の一実施形態に係る、全体的に200と指定される分散データ処理環境を示す機能ブロック図を示す。本明細書において使用される「分散」という用語は、単一のコンピュータシステムとして共に動作する複数の物理的に異なるデバイスを含むコンピュータシステムについて説明している。図2は、1つの実装の例示を提供しているに過ぎず、異なる実施形態が実装され得る環境に関して何らかの限定を示唆するものではない。図示された環境に対する多くの修正が、請求項に記載された本発明の範囲から逸脱することなく、当業者により行われ得る。
【0024】
分散データ処理環境200は、ネットワーク205を通じて相互接続されたソースサーバ210、ターゲットサーバ220、及びサーバ230を含む。ネットワーク205は、例えば、遠隔通信ネットワーク、ローカルエリアネットワーク(LAN)、インターネットなどのワイドエリアネットワーク(WAN)、又はこれら3つの組み合わせであり得、有線、無線、又は光ファイバ接続を含み得る。ネットワーク205は、音声、データ及び映像情報を含むマルチメディア信号を含む、データ、音声、及び/又は映像信号を受信及び送信する能力を有する1つ又は複数の有線及び/又は無線ネットワークを含み得る。概して、ネットワーク205は、ソースサーバ210、ターゲットサーバ220、サーバ230及び分散データ処理環境200内の他のコンピューティングデバイス(図示せず)の間の通信をサポートする接続及びプロトコルの任意の組み合わせであり得る。
【0025】
ソースサーバ210及びターゲットサーバ220は、アクティブ-アクティブアーキテクチャにおけるデータベースサーバとして動作し、ターゲットサーバ220はソースサーバ210のバックアップである。一実施形態において、ソースサーバ210及びターゲットサーバ220はそれぞれ、スタンドアロンコンピューティングデバイス、管理サーバ、ウェブサーバ、又はデータを受信、送信及び処理する能力を有する任意の他の電子デバイス又はコンピューティングシステムであり得る。一実施形態において、ソースサーバ210及びターゲットサーバ220は、分散データ処理環境200内でアクセスされた場合にシームレスなリソースの単一のプールとして機能するクラスタ化されたコンピュータ及びコンポーネント(例えば、データベースサーバコンピュータ、アプリケーションサーバコンピュータ等)を用いたコンピューティングシステムを表す。ソースサーバ210及びターゲットサーバ220は、図5に関して更に詳細に示され説明されている通り、内部及び外部ハードウェアコンポーネントを含み得る。
【0026】
サーバ230は、スタンドアロンコンピューティングデバイス、管理サーバ、ウェブサーバ、モバイルコンピューティングデバイス、又はデータを受信、送信及び処理する能力を有する任意の他の電子デバイス又はコンピューティングシステムであり得る。他の実施形態において、サーバ230は、クラウドコンピューティング環境においてなど、サーバシステムとして複数のコンピュータを用いるサーバコンピューティングシステムを表し得る。別の実施形態において、サーバ230は、ネットワーク205を介して分散データ処理環境200内のソースサーバ210、ターゲットサーバ220、及び他のコンピューティングデバイス(図示せず)と通信する能力を有するラップトップコンピュータ、タブレットコンピュータ、ネットブックコンピュータ、パーソナルコンピュータ(PC)、デスクトップコンピュータ、パーソナルデジタルアシスタント(PDA(登録商標))、スマートフォン、又は任意のプログラマブル電子デバイスであり得る。別の実施形態において、サーバ230は、分散データ処理環境200内でアクセスされた場合にシームレスなリソースの単一のプールとして機能するクラスタ化されたコンピュータ及びコンポーネント(例えば、データベースサーバコンピュータ、アプリケーションサーバコンピュータ等)を用いたコンピューティングシステムを表す。示された実施形態において、サーバ230は、バッチジョブ232を含む。サーバ230は、図5に関して更に詳細に示され説明されている通り、内部及び外部ハードウェアコンポーネントを含み得る。
【0027】
バッチジョブ232は、バッチモードにおいて処理されたコンピュータプログラム又はプログラムのセット(すなわち、ホストプログラム234)である。バッチジョブ232は、単一のユニットとしてデータベースサーバ上で実行するためにサブミットされる、ホストプログラム234に埋め込まれたコマンドのシーケンス、すなわち、複数の構造化照会言語(SQL)文から成る。ホストプログラム234は、ユニットリカバリ識別情報#n(UR ID#n)として指定されたn個のユニットを含むホスト言語コードロジックであり、nは、1及びホストプログラム234内に存在するユニットの任意の数の間の正の整数を表す。ユニットは、SQL文(例えば、SELECT、UPDATE、DELETE、INSERT等)を含み、データがコミットされたことを示すCOMMITコマンドで終了するコードロジックのセクションを表す。例えば、ホストプログラム234は、図3に示す通り、UR ID#1、UR ID#2、・・・及びUR ID#nとして指定されたn個のユニットを有するホスト言語コードロジックを含み得る。
【0028】
図4は、本発明の一実施形態に係る、アクティブ-アクティブアーキテクチャにおいてソースサーバ上及びターゲットサーバ上で実行されるバッチジョブのパフォーマンスを改善するための、データ同期化方法の操作ステップを示すフローチャート400である。一実施形態において、データ修正操作は、ロック競合を回避するために必要に応じてプリロック機能、プリロード機能及びロック回避機能を用いつつ、ソースサーバ上及びターゲットサーバ上の両方で同時に実行される。図4に示されたプロセスは、データ同期化方法の1つの起こり得る反復を示しており、当該反復は、ソースサーバによって受信された各バッチジョブに対して繰り返され得ることを理解されたい。
【0029】
ステップ410において、ソースサーバ上でバッチジョブが実行される準備が整うことに応答して、ソースサーバがターゲットサーバに通信を送信し、ソースサーバ上及びターゲットサーバ上の両方でバッチジョブ開始点を同期化する。一実施形態において、ソースサーバは、ターゲットサーバがバッチジョブを実行する準備が整っているかどうかを尋ねるために、ターゲットサーバに第1通信を送信し、ターゲットサーバがバッチジョブを実行する準備が整っていることをターゲットサーバが確認するまで待機する。一実施形態において、ソースサーバは、ソースサーバ上及びターゲットサーバ上の両方でバッチジョブの実行を開始する時点の同期化開始点を第1通信において送信する。
【0030】
ステップ420において、ソースサーバ及びターゲットサーバは、同期化された開始点で、バッチジョブの実行を開始する。一実施形態において、ソースサーバ及びターゲットサーバは、バッチジョブのユニットごとにデータ修正操作に関わる行又はページをロックすることにより、バッチジョブを実行する。ソースサーバ上又はターゲットサーバ上のいずれかでロック競合が発生した場合、ロック競合を有するサーバは、当該サーバが必要なロックを取得できるまでの間、一時停止する。ロック競合を有するサーバは、ロックを取得できるまでの間、一時停止するよう、他方のサーバにメッセージを送信する。他方のサーバは、一時停止を確認するメッセージを送信する。ロックが時間内に取得されなかった場合、ロック競合を有するサーバはロールバックを実行し、他方のサーバに同じロールバックを実行するようメッセージを送信する。他方のサーバは、ロールバックを確認するメッセージを送信する。SQLコードエラーがソースサーバ上又はターゲットサーバ上のいずれかで発生した場合、SQLコードエラーを有するサーバはロールバックを実行し、他方のサーバに同じロールバックを実行するようメッセージを送信する。他方のサーバは、ロールバックを確認するメッセージを送信する。
【0031】
バッチジョブの実行中に、ロック競合が発生するのを回避するのを助けるべく、本方法は、必要に応じて、ソースサーバ及びターゲットサーバにまたがって非同期的に、プリロック機能及び/又はプリロード機能を用いる。プリロック機能は、データ行が既に存在するため類似しているUPDATE又はDELETE操作に遭遇した場合に展開される。プリロード機能は、修正されている行がまだ存在しないINSERT操作に遭遇した場合に展開される。
【0032】
プリロック機能に関し、操作によって修正されている行に対して、行及び/又はページを1つずつチェックするための2つの考え得るアクセス方法がある。第1アクセス方法は表スキャン、そして第2アクセス方法は索引スキャンである。表スキャン方法を用い、サーバは、混合ロック機構を用いる操作によって修正される行に対してプリロック機能を非同期的に実行し、これは、パフォーマンスの改善を助ける。操作のメインタスクが第1ページで開始し、修正される行のロックを開始する一方、サブタスクは表スキャンを用い、操作によって修正される行の第1ページより後の全てのページをスキャンして、修正される行をロックする。同じページ内でロックされる行の数が所定の閾値、例えば同じページ上の行の50%又はそれ以上を超過すると、サブタスクは、複数行ロックをページロックへとエスカレートさせる。オーバーフラッシュを回避するため、バッファプール内に特別なプリロック領域が構築される。
【0033】
索引スキャン方法を用いる場合、使用され得る2つのタイプ、すなわち、(1)索引専用アクセス及び(2)通常の索引アクセスが存在する。索引専用アクセスに関し、サーバは、キー範囲及び行IDに応じて、行レベルロック又はページレベルロックで修正される行に対してプリロック機能を非同期的に実行する。ここで再び、操作のメインタスクが第1ページで開始し、第1ページ上で必要な行を見つけるために索引(すなわち、二分索引木)を用いて修正される行のロックを開始する一方、サブタスクは第1ページより後の全てのページ上で操作によって修正される行を見つけるために索引を用いて修正される行をロックする、又は、行の所定の閾値がページ上で修正される場合はページをロックする。索引専用アクセスは、ページにアクセスすることなく、索引エントリ内の位置情報を探すことにより、行が修正され、かつロックを要求するかどうかを決定する。索引エントリフォーマットは、キー値及び行IDから成り、行IDはパーティション番号、データページ番号、及びスロット番号を含み、データページ番号は、修正される行の数を特定及び判定するために使用される。ページロックは、特定のページに対するデータページ番号エントリの数が所定の閾値の数を上回る場合に用いられる。
【0034】
通常の索引アクセスに関し、サーバは、キー範囲及び行IDに応じて、開始時にページレベルロックで修正される行に対してプリロック機能を非同期的に実行し、次に、同じページ内で修正されている行の数が所定の閾値を下回る場合、行レベルロックに適宜ダウングレードする。このアクセス方法は、操作において追加の述語が含まれる場合に用いられる。ここで再び、操作のメインタスクが第1ページで開始し、第1ページ上で必要な行を見つけるために索引(すなわち、二分索引木)を用いて修正される行のロックを開始する一方、サブタスクは第1ページより後の全てのページ上で操作によって修正される行を見つけるために索引を使用する。行が適格であるかを判定するために、サブタスクは索引を用い、次に、追加の述語を適用して、どの行ロック又はページロックを取得するかを判定する。通常の索引アクセスは、ページにアクセスすることなく、索引エントリ内の位置情報を探すことにより、行が修正され、かつロックを要求するかどうかを決定する。索引エントリフォーマットは、キー値及び行IDから成り、行IDはパーティション番号、データページ番号、及びスロット番号を含み、データページ番号は、修正される行の数を特定及び判定するために使用される。
【0035】
遭遇したINSERT操作に対して展開されるプリロード機能に関し、サーバは、INSERT操作によって挿入される表の上で定義される索引のリーフページに対して非同期的にプリロード機能を実行し、挿入キーの位置(すなわち、スロット)を計算する。メインタスクが位置を特定して行の第1セット(例えば、10行)を挿入するために索引を用いて当該行をフェッチする一方、メインタスクと並行して実行されるサブタスクは、行の第2セット(例えば、10行)をプリロード(すなわち、フェッチ)する。サブタスクは、行を保存するためにどの索引リーフページが使用されるかを特定し、ページロード操作を実行する。サブタスクは、メインタスクが直接使用できるように、リーフページをプリロードする。
【0036】
バッチジョブの実行中に、SELECT操作(すなわち、読み取り操作)に対するロック要件を完全に回避するために、本方法は、必要に応じて、ソースサーバ及びターゲットサーバにまたがって非同期的に、ロック回避機能を用いる。SELECT操作に遭遇した場合、ロック回避機能は、アクティブUR IDにより構成されるイメージを構築し、当該アクティブUR IDは、まだコミットされておらず、従って読み取ることができない。イメージは、どのUR IDが既にコミットされたか、アクティブであるか、及びまだ開始されていないかを示す、UR IDのタイムラインである。イメージは、アクティブUR IDの下限及び上限を含む。ロック回避機能は、行の値に加えて、UR ID及びログバッファポインタをも含む行の記録のために、新たなフォーマットを用いる。行が読み取られる場合、現在の行のUR IDがアクティブUR IDの限度(boundary)内にあるかどうかを確認するために、アクティブUR IDのイメージが用いられる。現在の行のUR IDが下限を下回る場合、行の値はSELECT文において可視である。
【0037】
現在の行のUR IDがアクティブUR IDの限度内にある場合、ロック回避機能は、もはやアクティブでない適切なUR IDが見つかるまで、現在の行に対してログ記録を1つずつトレースバックする。例えば、行の値が#3であり、現在の行のUR IDが18であり、イメージが、UR ID10-20がアクティブであることを示す場合、ロック回避機能は、ログバッファポインタを用いて、14のUR IDを有する行の前のバージョン(行の値#2)を見つけるためにトレースバックし、次に、その行のバージョンのログバッファポインタを用いて、7のUR IDを有し、アクティブ範囲外にあるその行の2つ前のバージョン(行の値#1)にトレースバックし、これにより、その行の2つ前のバージョンが読み取られ得る。
【0038】
現在の行のUR IDがアクティブUR IDの限度内にあるものの、イメージ内でUR IDを見つけられない場合、これは、現在の行が、UR IDのイメージの構築前にコミットされ、現在の読み取り操作において依然として可視であることを意味する。これは、URが、短時間でコミットされた短いユニットである場合に生じ得る。ロック回避機能は、SELECT文に遭遇した場合に共有ロックを取得する必要性を回避することにより、パフォーマンスを改善する。
【0039】
ステップ430において、ソースサーバがバッチジョブのユニットに対する「COMMIT」文に遭遇することに応答して、ソースサーバは、ターゲットサーバがCOMMIT文を完了する準備が整っているかどうかを確認するために、ターゲットサーバと通信し、ターゲットサーバがコミットする準備が整っていることをターゲットサーバが確認するまで一時停止する。ターゲットサーバがソースサーバに通信を返し、ターゲットサーバがコミットする準備が整っていることを確認すると、ソースサーバ及びターゲットサーバの両方がコミットを完了する。他の実施形態において、ターゲットサーバがバッチジョブのユニットに対する「COMMIT」文に遭遇することに応答して、ターゲットサーバは、ソースサーバがCOMMIT文を完了する準備が整っているかどうかを確認するために、ソースサーバと通信し、ソースサーバがコミットする準備が整っていることをソースサーバが確認するまで一時停止する。ソースサーバがターゲットサーバに通信を返し、ソースサーバがコミットする準備が整っていることを確認すると、ソースサーバ及びターゲットサーバの両方がコミットを完了する。
【0040】
本発明の実施形態は、このデータ同期化方法を用い、アクティブ-アクティブアーキテクチャにおいてソースサーバ上及びターゲットサーバ上で実行されるバッチジョブのパフォーマンスを改善する。シングルサーバアーキテクチャと対比してアクティブ-アクティブアーキテクチャにおいてバッチジョブを実行するための現在のロジックと、シングルサーバアーキテクチャと対比してアクティブ-アクティブアーキテクチャにおいてバッチジョブを実行するためのデータ同期化方法の新たなロジックを比較するためのパフォーマンステストが行われた。現在のロジックに対するパフォーマンステストは、51.43%のパフォーマンス向上を示し、一方、新たなロジックに対するパフォーマンステストは、89.62%のパフォーマンス向上を示した。
【0041】
図5は、本発明の一実施形態に係る、図2の分散データ処理環境200内のサーバ230に好適なコンピューティングデバイス500のコンポーネントのブロック図を示す。図5は、1つの実装の例示を提供しているに過ぎず、異なる実施形態が実装され得る環境に関して何らかの限定を示唆するものではないことを理解されたい。図示された環境に対して多くの修正を行うことができる。
【0042】
コンピューティングデバイス500は、通信ファブリック502を備え、通信ファブリック502は、キャッシュ516、メモリ506、永続ストレージ508、通信ユニット510、及び入力/出力(I/O)インタフェース512の間の通信を提供する。通信ファブリック502は、プロセッサ(例えば、マイクロプロセッサ、通信及びネットワークプロセッサ等など)、システムメモリ、周辺デバイス、及びシステム内の任意の他のハードウェアコンポーネントの間でデータ及び/又は制御情報を伝えるよう設計された任意のアーキテクチャを用いて実装され得る。例えば、通信ファブリック502は、1つ又は複数のバス又はクロスバースイッチを用いて実装することができる。
【0043】
メモリ506及び永続ストレージ508は、コンピュータ可読記憶媒体である。この実施形態では、メモリ506は、ランダムアクセスメモリ(RAM)を含む。概して、メモリ506は、任意の好適な揮発性又は不揮発性のコンピュータ可読記憶媒体を含み得る。キャッシュ516は、メモリ506からの、最近アクセスされたデータ、及びアクセスされたデータ付近のデータを保持することによってコンピュータプロセッサ504のパフォーマンスを高める高速メモリである。
【0044】
プログラムは、キャッシュ516を介して、それぞれのコンピュータプロセッサ504のうちの1つ又は複数による実行及び/又はアクセスのために、永続ストレージ508及びメモリ506に記憶され得る。一実施形態において、永続ストレージ508は、磁気ハードディスクドライブを含む。磁気ハードディスクドライブの代わりに、又はこれに加えて、永続ストレージ508は、ソリッドステートハードドライブ、半導体記憶デバイス、リードオンリメモリ(ROM)、消去可能プログラマブルリードオンリメモリ(EPROM)、フラッシュメモリ、又はプログラム命令又はデジタル情報を記憶する能力を有する任意の他のコンピュータ可読記憶媒体を含み得る。
【0045】
永続ストレージ508によって使用される媒体はまた、リムーバブルであってもよい。例えば、リムーバブルハードドライブが永続ストレージ508に使用され得る。他の例は、光ディスク及び磁気ディスク、サムドライブ、及び、永続ストレージ508の一部でもある別のコンピュータ可読記憶媒体に転送されるためにドライブに挿入されるスマートカードを含む。
【0046】
通信ユニット510は、これらの例において、他のデータ処理システム又はデバイスとの通信を提供する。これらの例において、通信ユニット510は、1つ又は複数のネットワークインタフェースカードを含む。通信ユニット510は、物理的通信リンク及び無線通信リンクのいずれか又は両方の使用を介して通信を提供し得る。プログラムは、通信ユニット510を介して永続ストレージ508にダウンロードされ得る。
【0047】
I/Oインタフェース512は、サーバ230に接続され得る他のデバイスに対するデータの入力及び出力を可能にする。例えば、I/Oインタフェース512は、キーボード、キーパッド、タッチスクリーン及び/又は何らかの他の好適な入力デバイスといった外部デバイス518への接続を提供し得る。外部デバイス518は、例えば、サムドライブ、ポータブル式の光ディスク又は磁気ディスク及びメモリカードなど、ポータブルコンピュータ可読記憶媒体も含み得る。本発明の実施形態を実施するために用いられるソフトウェア及びデータは、そのようなポータブルコンピュータ可読記憶媒体に記憶でき、I/Oインタフェース512を介して永続ストレージ508にロードできる。I/Oインタフェース512はまた、ディスプレイ520に接続する。
【0048】
ディスプレイ520は、データをユーザに対して表示する機構を提供し、例えば、コンピュータモニタであり得る。
【0049】
本明細書において説明されるプログラムは、それが本発明の特定の実施形態において実装されるアプリケーションに基づいて識別される。しかしながら、本明細書における任意の特定のプログラム用語は、単に便宜上使用されるものであり、従って、本発明は、そのような用語により識別及び/又は示唆される任意の特定のアプリケーションにおいてのみ使用されるように限定されるべきではないことを理解されたい。
【0050】
本発明は、システム、方法、及び/又はコンピュータプログラム製品であってよい。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体(又は複数のコンピュータ可読記憶媒体)を含み得る。
【0051】
コンピュータ可読記憶媒体は、命令実行デバイスにより使用される命令を保持及び記憶可能な有形デバイスであり得る。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、又は、これらの任意の好適な組み合わせであり得るが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非包括的なリストは、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、消去可能プログラマブルリードオンリメモリ(EPROM又はフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM)、ポータブルコンパクトディスクリードオンリメモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリスティック、フロッピディスク、パンチカード又は命令が記録されている溝内の隆起構造などの機械的に符号化されたデバイス、及び、これらの任意の好適な組み合わせを含む。本明細書において使用されるコンピュータ可読記憶媒体は、電波又は自由伝搬する他の電磁波、導波路又は他の伝送媒体を介して伝搬する電磁波(例えば、光ファイバケーブルを通過する光パルス)、又は、ワイヤを介して送信される電気信号などの一時的な信号それ自体とみなされるべきものではない。
【0052】
本明細書において説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスにダウンロードされてもよく、又は、ネットワーク、例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、及び/又は無線ネットワークを介して、外部コンピュータ又は外部記憶デバイスにダウンロードされてもよい。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ、及び/又はエッジサーバを備え得る。各コンピューティング/処理デバイスにおけるネットワークアダプタカード又はネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶するためにコンピュータ可読プログラム命令を転送する。
【0053】
本発明の操作を実行するコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、又はSmalltalk(登録商標)、C++などのオブジェクト指向プログラミング言語、及び「C」プログラミング言語又は類似のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つ又は複数のプログラミング言語の任意の組み合わせで記述された、ソースコード又はオブジェクトコードであってもよい。コンピュータ可読プログラム命令は、スタンドアロンのソフトウェアパッケージとして、ユーザのコンピュータ上で全体を実行すること、ユーザのコンピュータ上で一部分を実行することができ、ユーザのコンピュータ上で一部分を、遠隔のコンピュータ上で一部分を実行すること、又は、遠隔のコンピュータ又はサーバ上で全体を実行することができる。後者のシナリオでは、遠隔のコンピュータは、ローカルエリアネットワーク(LAN)又はワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、又は、その接続は、外部コンピュータに対して(例えば、インターネットサービスプロバイダを使用してインターネットを介して)行われてもよい。いくつかの実施形態では、例えば、プログラマブルロジック回路、フィールドプログラマブルゲートアレイ(FPGA)、又は、プログラマブルロジックアレイ(PLA)を含む電子回路が、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用することによりコンピュータ可読プログラム命令を実行して、電子回路をパーソナライズ化することができる。
【0054】
本発明の態様は、本明細書において、本発明の実施形態による方法、装置(システム)、及び、コンピュータプログラム製品のフローチャート図及び/又はブロック図を参照して説明されている。フローチャート図及び/又はブロック図の各ブロック、及び、フローチャート図及び/又はブロック図におけるブロックの組み合わせは、コンピュータ可読プログラム命令によって実装可能であることが理解されるであろう。
【0055】
これらのコンピュータ可読プログラム命令は、機械を生成するのに、汎用コンピュータ、専用コンピュータ、又は他のプログラマブルデータ処理装置のプロセッサに提供されてもよく、それにより、コンピュータ又は他のプログラマブルデータ処理装置のプロセッサを介して実行される命令は、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実装する手段を作成する。これらのコンピュータ可読プログラム命令はまた、コンピュータ、プログラマブルデータ処理装置、及び/又は他のデバイスに特定の方法で機能するように指示することができるコンピュータ可読記憶媒体に記憶されてもよく、それにより、命令が記憶されているコンピュータ可読記憶媒体は、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作の態様を実装するための命令を含む製造物品を備える方法。
【0056】
また、コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブルデータ処理装置、又は、他のデバイスにロードして、コンピュータ、他のプログラマブル装置、又は、他のデバイス上で一連の操作ステップを実行させることでコンピュータ実装プロセスを作成することもでき、それにより、コンピュータ、他のプログラマブル装置、又は、他のデバイス上で実行される命令は、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実装する。
【0057】
図面におけるフローチャート及びブロック図は、本発明の様々な実施形態に係るシステム、方法、及びコンピュータプログラム製品の考えられる実装のアーキテクチャ、機能、及び動作を示している。これに関して、フローチャート又はブロック図における各ブロックは、指定された論理機能を実装するための1つ又は複数の実行可能命令を含む命令のモジュール、セグメント、又は、一部分を表し得る。いくつかの代替実装では、ブロックに記されている機能は、図面に記されている順序とは異なる順序で行われ得る。例えば、連続して示されている2つのブロックが、実際には、実質的に同時に実行されてもよく、又は、こうしたブロックは、場合によっては、関係する機能次第で逆の順序で実行されてもよい。ブロック図及び/又はフローチャート図の各ブロック、及び、ブロック図及び/又はフローチャート図におけるブロックの組み合わせが、指定された機能又は動作を実行する、又は特定用途向けハードウェア及びコンピュータ命令の組み合わせを実行する、特定用途向けのハードウェアベースのシステムによって実装され得ることにも留意されたい。
【0058】
本発明の様々な実施形態の説明は、例示目的で提示されるが、包括的になること、又は、開示された実施形態に限定されることが意図されるものではない。本発明の範囲から逸脱することなく、多くの修正及び変更が当業者には明らかであろう。本明細書において使用される用語は、実施形態の原理、実際の適用、又は、業界で見られる技術に対する技術的改善点を最も適切に説明するために、又は、他の当業者が本明細書に開示された実施形態を理解することを可能とするために選択されたものである。
図1
図2
図3
図4
図5
【手続補正書】
【提出日】2023-06-09
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
アクティブ-アクティブ環境において、ソースデータベースサーバ上でバッチジョブが実行される準備が整うことに応答して、1つ又は複数のプロセッサが、前記ソースデータベースサーバ及びターゲットデータベースサーバの間で、前記ソースデータベースサーバ上及び前記ターゲットデータベースサーバ上の両方で前記バッチジョブの実行を開始する時点の同期化開始点を有する第1通信を送信する段階;
前記1つ又は複数のプロセッサが、前記ソースデータベースサーバ上及び前記ターゲットデータベースサーバ上の両方で、前記同期化開始点で開始する前記バッチジョブを実行する段階;
前記ソースデータベースサーバ又は前記ターゲットデータベースサーバのいずれかが、前記バッチジョブのユニットに対するCOMMIT文に遭遇することに応答して、前記1つ又は複数のプロセッサが、前記COMMIT文に遭遇したそれぞれのデータベースサーバを一時停止する段階;
前記1つ又は複数のプロセッサが、他方のそれぞれのデータベースサーバが前記COMMIT文を完了する準備が整っているかどうかを尋ねるために、前記ソースデータベースサーバ及び前記ターゲットデータベースサーバの間で第2通信を送信する段階;及び
前記他方のそれぞれのデータベースサーバが、前記他方のそれぞれのデータベースサーバが前記COMMIT文を完了する準備が整っていることを確認することに応答して、前記1つ又は複数のプロセッサが、前記ソースデータベースサーバ上及び前記ターゲットデータベースサーバ上の両方で前記COMMIT文を完了する段階
を備える、コンピュータ実装方法。
【請求項2】
前記ソースデータベースサーバ上又は前記ターゲットデータベースサーバ上のいずれかでロック競合に遭遇することに応答して、前記1つ又は複数のプロセッサが、前記ロック競合に遭遇しなかった前記他方のそれぞれのデータベースサーバに、操作を一時停止するよう通信を送信する段階を更に備える、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記ソースデータベースサーバ上又は前記ターゲットデータベースサーバ上のいずれかでSQLエラーに遭遇することに応答して、前記1つ又は複数のプロセッサが、前記SQLエラーに遭遇しなかった前記他方のそれぞれのデータベースサーバに通信を送信し、操作を一時停止する段階を更に備える、請求項1又は2に記載のコンピュータ実装方法。
【請求項4】
前記1つ又は複数のプロセッサが、前記ソースデータベースサーバ及び前記ターゲットデータベースサーバにまたがって非同期的に、表スキャンアクセス方法を用いて、前記バッチジョブにおける各UPDATE文及び各DELETE文に対してプリロック機能を実行する段階、ここで、前記表スキャンアクセス方法を用いた前記プリロック機能は:
第1ページ上で操作によって修正される行をロックする前記操作のメインタスクと並行して、前記1つ又は複数のプロセッサが、前記操作によって修正される前記行に対して前記第1ページより後の各ページをスキャンする段階;
前記1つ又は複数のプロセッサが、前記第1ページより後の各ページ上で修正される前記行をロックする段階;及び
1つのページ内でロックされる行の数が所定の閾値を超過すると判定することに応答して、前記1つ又は複数のプロセッサが、前記ページに対するページロックを取得する段階
を有する
を更に備える、請求項1から3のいずれか一項に記載のコンピュータ実装方法。
【請求項5】
前記1つ又は複数のプロセッサが、前記ソースデータベースサーバ及び前記ターゲットデータベースサーバにまたがって非同期的に、索引専用アクセス方法を用いて、前記バッチジョブにおける各UPDATE文及び各DELETE文に対してプリロック機能を実行する段階、ここで、前記索引専用アクセス方法を用いた前記プリロック機能は:
索引を用いて第1ページ上で操作によって修正される行をロックする前記操作のメインタスクと並行して、前記1つ又は複数のプロセッサが、索引エントリ内の情報を用いて、前記第1ページより後の各ページ上で前記操作によって修正される前記行を見つける段階、ここで、各索引エントリは、キー値及び行識別子(ID)を含み、前記行IDは、パーティション番号、データページ番号、及びスロット番号を含み、前記データページ番号は、各ページ上で修正される行の数を特定及び判定するために使用される;
前記1つ又は複数のプロセッサが、前記第1ページより後の各ページ上で修正される前記行をロックする段階;及び
1つのページ内でロックされる行の数が、前記ページに対するデータページ番号エントリの数に基づき、所定の閾値を超過すると判定することに応答して、前記1つ又は複数のプロセッサが、前記ページに対するページロックを取得する段階
を有する
を更に備える、請求項1から4のいずれか一項に記載のコンピュータ実装方法。
【請求項6】
前記1つ又は複数のプロセッサが、前記ソースデータベースサーバ及び前記ターゲットデータベースサーバにまたがって非同期的に、通常の索引アクセス方法を用いて、前記バッチジョブにおける各UPDATE文及び各DELETE文に対してプリロック機能を実行する段階、ここで、前記通常の索引アクセス方法を用いた前記プリロック機能は:
索引を用いて第1ページ上で操作によって修正される行をロックする前記操作のメインタスクと並行して、前記1つ又は複数のプロセッサが、索引エントリ内の情報に基づき、前記第1ページより後の各ページ上で前記操作によって修正される前記行を見つける段階、及び、次に、前記操作に含まれる追加の述語を適用して、どの行ロック又はページロックを取得するかを判定する段階、ここで、各索引エントリは、キー値及び行識別子(ID)を含み、前記行IDは、パーティション番号、データページ番号、及びスロット番号を含み、前記データページ番号は、各ページ上で修正される行の数を特定及び判定するために使用される;
前記1つ又は複数のプロセッサが、修正される前記行を有する前記第1ページより後の各ページに対してページレベルロックを取得する段階;及び
1つのページ内でロックされる行の数が、各索引エントリ内の前記データページ番号に基づき、所定の閾値を超過しないと判定することに応答して、前記1つ又は複数のプロセッサが、前記ページレベルロックを行レベルロックにダウングレードする段階
を有する
を更に備える、請求項1から5のいずれか一項に記載のコンピュータ実装方法。
【請求項7】
前記1つ又は複数のプロセッサが、前記ソースデータベースサーバ及び前記ターゲットデータベースサーバにまたがって非同期的に、前記バッチジョブにおける各INSERT文に対してプリロード機能を実行する段階、ここで、前記プリロード機能は:
行の第1セットをフェッチする操作のメインタスクと並行して、前記1つ又は複数のプロセッサが、索引を用いて行の第2セットを保存するために使用されるリーフページのセットの位置を特定することにより、行の前記第2セットをプリロードする段階、ここで、前記リーフページは、前記操作によって挿入される表の上で定義される
を有する
を更に備える、請求項1から6のいずれか一項に記載のコンピュータ実装方法。
【請求項8】
前記バッチジョブにおいてSELECT文に遭遇することに応答して、前記1つ又は複数のプロセッサが、前記ソースデータベースサーバ及び前記ターゲットデータベースサーバにまたがって非同期的に、ロック回避機能を実行する段階、ここで、前記ロック回避機能は:
前記1つ又は複数のプロセッサが、前記バッチジョブのアクティブユニットリカバリ(UR)識別情報(ID)のイメージを構築する段階、ここで、前記イメージは、前記アクティブUR IDの下限及び上限を含む;
前記イメージの前記下限及び前記上限内でUR IDを有する行を読み取ることに応答して、前記1つ又は複数のプロセッサが、前記下限を下回るそれぞれのUR IDを有する前記行のバージョンが見つかるまで、前記行のログ記録をトレースバックする段階;及び
前記1つ又は複数のプロセッサが、前記下限を下回る前記それぞれのUR IDを有する前記行の前記バージョンを用いて、ロックを伴うことなく前記SELECT文を実行する段階
を有する
を更に備える、請求項1から7のいずれか一項に記載のコンピュータ実装方法。
【請求項9】
アクティブ-アクティブ環境において、ソースデータベースサーバ上でバッチジョブが実行される準備が整うことに応答して、1つ又は複数のプロセッサが、前記ソースデータベースサーバ及びターゲットデータベースサーバの間で、前記ソースデータベースサーバ上及び前記ターゲットデータベースサーバ上の両方で前記バッチジョブの実行を開始する時点の同期化開始点を有する第1通信を送信する段階;
前記1つ又は複数のプロセッサが、前記ソースデータベースサーバ上及び前記ターゲットデータベースサーバ上の両方で、前記同期化開始点で開始する前記バッチジョブを実行する段階;
前記1つ又は複数のプロセッサが、前記ソースデータベースサーバ及び前記ターゲットデータベースサーバにまたがって非同期的に、表スキャンアクセス方法を用いて、前記バッチジョブにおける各UPDATE文及び各DELETE文に対してプリロック機能を実行する段階;
前記ソースデータベースサーバ又は前記ターゲットデータベースサーバのいずれかが、前記バッチジョブのユニットに対するCOMMIT文に遭遇することに応答して、前記1つ又は複数のプロセッサが、前記COMMIT文に遭遇したそれぞれのデータベースサーバを一時停止する段階;
前記1つ又は複数のプロセッサが、他方のそれぞれのデータベースサーバが前記COMMIT文を完了する準備が整っているかどうかを尋ねるために、前記ソースデータベースサーバ及び前記ターゲットデータベースサーバの間で第2通信を送信する段階;及び
前記他方のそれぞれのデータベースサーバが、前記他方のそれぞれのデータベースサーバが前記COMMIT文を完了する準備が整っていることを確認することに応答して、前記1つ又は複数のプロセッサが、前記ソースデータベースサーバ上及び前記ターゲットデータベースサーバ上の両方で前記COMMIT文を完了する段階
を備える、コンピュータ実装方法。
【請求項10】
前記ソースデータベースサーバ上又は前記ターゲットデータベースサーバ上のいずれかでロック競合に遭遇することに応答して、前記1つ又は複数のプロセッサが、前記ロック競合に遭遇しなかった前記他方のそれぞれのデータベースサーバに、操作を一時停止するよう通信を送信する段階を更に備える、請求項9に記載のコンピュータ実装方法。
【請求項11】
前記ソースデータベースサーバ上又は前記ターゲットデータベースサーバ上のいずれかでSQLエラーに遭遇することに応答して、前記1つ又は複数のプロセッサが、前記SQLエラーに遭遇しなかった前記他方のそれぞれのデータベースサーバに通信を送信し、操作を一時停止する段階を更に備える、請求項9又は10に記載のコンピュータ実装方法。
【請求項12】
前記表スキャンアクセス方法を用いた前記プリロック機能は:
第1ページ上で操作によって修正される行をロックする前記操作のメインタスクと並行して、前記1つ又は複数のプロセッサが、前記操作によって修正される前記行に対して前記第1ページより後の各ページをスキャンする段階;
前記1つ又は複数のプロセッサが、前記第1ページより後の各ページ上で修正される前記行をロックする段階;及び
1つのページ内でロックされる行の数が所定の閾値を超過すると判定することに応答して、前記1つ又は複数のプロセッサが、前記ページに対するページロックを取得する段階
を備える、請求項9から11のいずれか一項に記載のコンピュータ実装方法。
【請求項13】
前記1つ又は複数のプロセッサが、前記ソースデータベースサーバ及び前記ターゲットデータベースサーバにまたがって非同期的に、前記バッチジョブにおける各INSERT文に対してプリロード機能を実行する段階、ここで、前記プリロード機能は:
行の第1セットをフェッチする操作のメインタスクと並行して、前記1つ又は複数のプロセッサが、索引を用いて行の第2セットを保存するために使用されるリーフページのセットの位置を特定することにより、行の前記第2セットをプリロードする段階、ここで、前記リーフページは、前記操作によって挿入される表の上で定義される
を有する
を更に備える、請求項9から12のいずれか一項に記載のコンピュータ実装方法。
【請求項14】
前記バッチジョブにおいてSELECT文に遭遇することに応答して、前記1つ又は複数のプロセッサが、前記ソースデータベースサーバ及び前記ターゲットデータベースサーバにまたがって非同期的に、ロック回避機能を実行する段階、ここで、前記ロック回避機能は:
前記1つ又は複数のプロセッサが、前記バッチジョブのアクティブユニットリカバリ(UR)識別情報(ID)のイメージを構築する段階、ここで、前記イメージは、前記アクティブUR IDの下限及び上限を含む;
前記イメージの前記下限及び前記上限内でUR IDを有する行を読み取ることに応答して、前記1つ又は複数のプロセッサが、前記下限を下回るそれぞれのUR IDを有する前記行のバージョンが見つかるまで、前記行のログ記録をトレースバックする段階;及び
前記1つ又は複数のプロセッサが、前記下限を下回る前記それぞれのUR IDを有する前記行の前記バージョンを用いて、ロックを伴うことなく前記SELECT文を実行する段階
を有する
を更に備える、請求項9から13のいずれか一項に記載のコンピュータ実装方法。
【請求項15】
アクティブ-アクティブ環境において、ソースデータベースサーバ上でバッチジョブが実行される準備が整うことに応答して、1つ又は複数のプロセッサが、前記ソースデータベースサーバ及びターゲットデータベースサーバの間で、前記ソースデータベースサーバ上及び前記ターゲットデータベースサーバ上の両方で前記バッチジョブの実行を開始する時点の同期化開始点を有する第1通信を送信する段階;
前記1つ又は複数のプロセッサが、前記ソースデータベースサーバ上及び前記ターゲットデータベースサーバ上の両方で、前記同期化開始点で開始する前記バッチジョブを実行する段階;
前記1つ又は複数のプロセッサが、前記ソースデータベースサーバ及び前記ターゲットデータベースサーバにまたがって非同期的に、索引専用アクセス方法を用いて、前記バッチジョブにおける各UPDATE文及び各DELETE文に対してプリロック機能を実行する段階;
前記ソースデータベースサーバ又は前記ターゲットデータベースサーバのいずれかが、前記バッチジョブのユニットに対するCOMMIT文に遭遇することに応答して、前記1つ又は複数のプロセッサが、前記COMMIT文に遭遇したそれぞれのデータベースサーバを一時停止する段階;
前記1つ又は複数のプロセッサが、他方のそれぞれのデータベースサーバが前記COMMIT文を完了する準備が整っているかどうかを尋ねるために、前記ソースデータベースサーバ及び前記ターゲットデータベースサーバの間で第2通信を送信する段階;及び
前記他方のそれぞれのデータベースサーバが、前記他方のそれぞれのデータベースサーバが前記COMMIT文を完了する準備が整っていることを確認することに応答して、前記1つ又は複数のプロセッサが、前記ソースデータベースサーバ上及び前記ターゲットデータベースサーバ上の両方で前記COMMIT文を完了する段階
を備える、コンピュータ実装方法。
【請求項16】
前記ソースデータベースサーバ上又は前記ターゲットデータベースサーバ上のいずれかでロック競合に遭遇することに応答して、前記1つ又は複数のプロセッサが、前記ロック競合に遭遇しなかった前記他方のそれぞれのデータベースサーバに、操作を一時停止するよう通信を送信する段階を更に備える、請求項15に記載のコンピュータ実装方法。
【請求項17】
前記ソースデータベースサーバ上又は前記ターゲットデータベースサーバ上のいずれかでSQLエラーに遭遇することに応答して、前記1つ又は複数のプロセッサが、前記SQLエラーに遭遇しなかった前記他方のそれぞれのデータベースサーバに通信を送信し、操作を一時停止する段階を更に備える、請求項15又は16に記載のコンピュータ実装方法。
【請求項18】
前記索引専用アクセス方法を用いた前記プリロック機能は:
索引を用いて第1ページ上で操作によって修正される行をロックする前記操作のメインタスクと並行して、前記1つ又は複数のプロセッサが、索引エントリ内の情報を用いて、前記第1ページより後の各ページ上で前記操作によって修正される前記行を見つける段階、ここで、各索引エントリは、キー値及び行識別子(ID)を含み、前記行IDは、パーティション番号、データページ番号、及びスロット番号を含み、前記データページ番号は、各ページ上で修正される行の数を特定及び判定するために使用される;
前記1つ又は複数のプロセッサが、前記第1ページより後の各ページ上で修正される前記行をロックする段階;及び
1つのページ内でロックされる行の数が、前記ページに対するデータページ番号エントリの数に基づき、所定の閾値を超過すると判定することに応答して、前記1つ又は複数のプロセッサが、前記ページに対するページロックを取得する段階
を備える、請求項15から17のいずれか一項に記載のコンピュータ実装方法。
【請求項19】
前記1つ又は複数のプロセッサが、前記ソースデータベースサーバ及び前記ターゲットデータベースサーバにまたがって非同期的に、前記バッチジョブにおける各INSERT文に対してプリロード機能を実行する段階、ここで、前記プリロード機能は:
行の第1セットをフェッチする操作のメインタスクと並行して、前記1つ又は複数のプロセッサが、索引を用いて行の第2セットを保存するために使用されるリーフページのセットの位置を特定することにより、行の前記第2セットをプリロードする段階、ここで、前記リーフページは、前記操作によって挿入される表の上で定義される
を有する
を更に備える、請求項15から18のいずれか一項に記載のコンピュータ実装方法。
【請求項20】
前記バッチジョブにおいてSELECT文に遭遇することに応答して、前記1つ又は複数のプロセッサが、前記ソースデータベースサーバ及び前記ターゲットデータベースサーバにまたがって非同期的に、ロック回避機能を実行する段階、ここで、前記ロック回避機能は:
前記1つ又は複数のプロセッサが、前記バッチジョブのアクティブユニットリカバリ(UR)識別情報(ID)のイメージを構築する段階、ここで、前記イメージは、前記アクティブUR IDの下限及び上限を含む;
前記イメージの前記下限及び前記上限内でUR IDを有する行を読み取ることに応答して、前記1つ又は複数のプロセッサが、前記下限を下回るそれぞれのUR IDを有する前記行のバージョンが見つかるまで、前記行のログ記録をトレースバックする段階;及び
前記1つ又は複数のプロセッサが、前記下限を下回る前記それぞれのUR IDを有する前記行の前記バージョンを用いて、ロックを伴うことなく前記SELECT文を実行する段階
を有する
を更に備える、請求項15から19のいずれか一項に記載のコンピュータ実装方法。
【請求項21】
コンピュータシステムに:
アクティブ-アクティブ環境において、ソースデータベースサーバ上でバッチジョブが実行される準備が整うことに応答して、前記ソースデータベースサーバ及びターゲットデータベースサーバの間で、前記ソースデータベースサーバ上及び前記ターゲットデータベースサーバ上の両方で前記バッチジョブの実行を開始する時点の同期化開始点を有する第1通信を送信する手順;
前記ソースデータベースサーバ上及び前記ターゲットデータベースサーバ上の両方で、前記同期化開始点で開始する前記バッチジョブを実行する手順;
前記ソースデータベースサーバ又は前記ターゲットデータベースサーバのいずれかが、前記バッチジョブのユニットに対するCOMMIT文に遭遇することに応答して、前記COMMIT文に遭遇したそれぞれのデータベースサーバを一時停止する手順;
他方のそれぞれのデータベースサーバが前記COMMIT文を完了する準備が整っているかどうかを尋ねるために、前記ソースデータベースサーバ及び前記ターゲットデータベースサーバの間で第2通信を送信する手順;及び
前記他方のそれぞれのデータベースサーバが、前記他方のそれぞれのデータベースサーバが前記COMMIT文を完了する準備が整っていることを確認することに応答して、前記ソースデータベースサーバ上及び前記ターゲットデータベースサーバ上の両方で前記COMMIT文を完了する手順を実行させるためのコンピュータプログラム。
【請求項22】
前記コンピュータシステムに、
記ソースデータベースサーバ上又は前記ターゲットデータベースサーバ上のいずれかでロック競合に遭遇することに応答して、前記ロック競合に遭遇しなかった前記他方のそれぞれのデータベースサーバに、操作を一時停止するよう通信を送信する手順をに実行させる、請求項21に記載のコンピュータプログラム。
【請求項23】
1つ又は複数のコンピュータプロセッサ;
1つ又は複数のコンピュータ可読記憶媒体;
前記1つ又は複数のコンピュータプロセッサのうちの少なくとも1つによる実行のために、前記1つ又は複数のコンピュータ可読記憶媒体上で集合的に記憶されたプログラム命令、前記記憶されたプログラム命令は:
アクティブ-アクティブ環境において、ソースデータベースサーバ上でバッチジョブが実行される準備が整うことに応答して、前記ソースデータベースサーバ及びターゲットデータベースサーバの間で、前記ソースデータベースサーバ上及び前記ターゲットデータベースサーバ上の両方で前記バッチジョブの実行を開始する時点の同期化開始点を有する第1通信を送信するためのプログラム命令;
前記ソースデータベースサーバ上及び前記ターゲットデータベースサーバ上の両方で、前記同期化開始点で開始する前記バッチジョブを実行するためのプログラム命令;
前記ソースデータベースサーバ又は前記ターゲットデータベースサーバのいずれかが、前記バッチジョブのユニットに対するCOMMIT文に遭遇することに応答して、前記COMMIT文に遭遇したそれぞれのデータベースサーバを一時停止するためのプログラム命令;
他方のそれぞれのデータベースサーバが前記COMMIT文を完了する準備が整っているかどうかを尋ねるために、前記ソースデータベースサーバ及び前記ターゲットデータベースサーバの間で第2通信を送信するためのプログラム命令;及び
前記他方のそれぞれのデータベースサーバが、前記他方のそれぞれのデータベースサーバが前記COMMIT文を完了する準備が整っていることを確認することに応答して、前記ソースデータベースサーバ上及び前記ターゲットデータベースサーバ上の両方で前記COMMIT文を完了するためのプログラム命令
を有する
を備える、コンピュータシステム。
【請求項24】
前記ソースデータベースサーバ上又は前記ターゲットデータベースサーバ上のいずれかでロック競合に遭遇することに応答して、前記ロック競合に遭遇しなかった前記他方のそれぞれのデータベースサーバに、操作を一時停止するよう通信を送信するためのプログラム命令を更に備える、請求項23に記載のコンピュータシステム。
【国際調査報告】