JP2017054207A - データベース制御プログラム、データベース制御方法及びデータベース制御装置 - Google Patents
データベース制御プログラム、データベース制御方法及びデータベース制御装置 Download PDFInfo
- Publication number
- JP2017054207A JP2017054207A JP2015176111A JP2015176111A JP2017054207A JP 2017054207 A JP2017054207 A JP 2017054207A JP 2015176111 A JP2015176111 A JP 2015176111A JP 2015176111 A JP2015176111 A JP 2015176111A JP 2017054207 A JP2017054207 A JP 2017054207A
- Authority
- JP
- Japan
- Prior art keywords
- record
- update process
- value
- transaction
- updated
- 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.)
- Granted
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/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2336—Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
Abstract
【解決手段】コンピュータに、データベースに記憶されたレコードに含まれる、データ項目の項目値に対する更新処理が発生した場合に、前記項目値が前記更新処理により更新された場合の数値を項目値とするレコードと、前記項目値が前記更新処理により更新されない場合の数値を項目値とするレコードと、を生成し、前記更新処理が発生したレコードに対して新たな更新処理が発生した場合に、前記更新された場合の数値を項目値とするレコードと前記更新されない場合の数値を項目値とするレコードとのそれぞれに対して、前記新たな更新処理を行う、ことを実行させるデータベース制御プログラムが提供される。
【選択図】図5
Description
データベースへの更新処理を、オンライン処理とバッチ処理とに分け、昼間はオンライン処理、夜間はバッチ処理というように時間を分けて実行する方法がある。しかし、24時間サービス化、グローバル化、スピード化に伴い、オンライン処理とバッチ処理とを並列で実行する必要性が出てきている。そこで、オンライン処理とバッチ処理とを並列に実行することができる技術としてMVCCが知られている。
MVCC(Multi-Version Concurrency Control:多版式同時実行制御)について、図1を参照しながら簡単に説明する。図1は、データベースに記憶されるレコードの一例を示す。MVCCでは、更新前のレコードをデータベース上に記憶しつつ、更新後のレコードを新しいレコードとして同じデータベース上に追記する。
以上に示したMVCCではデータベースに新旧バージョンのレコードが記憶される。しかしながら、一のデータについての最新のレコードはあくまで一つである。よって、複数のトランザクションがいずれも最新のレコードを更新しようとすると、それらの更新処理を同時に行うことはできず、排他制御が発生する。
まず、本発明の一実施形態に係るデータベースサーバ20の機能構成の一例について、図3を参照しながら説明する。本実施形態に係るデータベースサーバ20は、利用者端末10とネットワークを介して接続されており、データベース27に記憶されたデータの検索、更新、削除などの処理を実行するトランザクションを受け付ける。データベースサーバ20は、データベース制御装置の一例である。
次に、本実施形態に係るデータベース制御処理中の更新処理について図4のフローチャートを参照して説明する。トランザクション実行部21は、利用者端末10からデータベース27のデータ検索等を行うトランザクションを受け付けると、所定のデータを検索する。トランザクション実行部21の更新処理部22は、トランザクション中で実行されるデータの更新処理を実行する。
先行トランザクション:入荷処理(バッチ処理)
後続トランザクション:出荷処理(オンライン処理)
・後続トランザクションが先行トランザクションよりも先にコミット(確定)する場合
(1)先行トランザクションを実行し、50個を入荷
(2)後続トランザクションを実行し、30個を出荷
(3)後続トランザクションの出荷処理がコミット(確定)
(4)先行トランザクションの入荷処理がコミット(確定)
図4のステップS10において(1)先行トランザクションの更新処理が発生したとする。この場合、ステップS12では、この時点で考えられる更新処理のすべてのレコードが生成される。ここで、(1)の入荷処理が成功した場合と、失敗した場合との2つの更新処理がこの時点で考えられる更新処理のすべてである。よって、(1)先行トランザクションの実行後、データベース27には入荷処理が成功した場合の150個を記憶したレコードと、入荷処理が失敗した場合の100個を記憶したレコードとが記憶される。
・(1)入荷処理が成功し、(2)出荷処理が成功した場合の120個を記憶したレコード
・(1)入荷処理が成功し、(2)出荷処理が失敗した場合の150個を記憶したレコード
・(1)入荷処理が失敗し、(2)出荷処理が成功した場合の70個を記憶したレコード
・(1)入荷処理が失敗し、(2)出荷処理が失敗した場合の100個を記憶したレコード
つまり、図6(a)の(2)に示すように、(2)の後続トランザクションTx12の実行後、レコード番号271「No.3」のレコード(レコード3)と「No.4」のレコード(レコード4)とがデータベース27に追記される。レコード3の各データ項目には、品目272「たまねぎ」、個数273「70」、トランザクションID274「Tx12」、状態275「未コミット」が記憶される。レコード4の各データ項目には、品目272「たまねぎ」、個数273「120」、トランザクションID274「Tx12」、状態275「未コミット」が記憶される。
<パターン1−2>
<パターン1−2>では以下の手順でトランザクションが処理される。
(1)先行トランザクションを実行し、50個を入荷
(2)後続トランザクションを実行し、30個を出荷
(3)先行トランザクションの入荷処理がコミット
(4)後続トランザクションの出荷処理がコミット
この場合、図4の本実施形態にかかる更新処理を実行すると、(3)の先行トランザクションの処理がコミットされた場合、図7の(3−2)に示す入荷されていない場合の「70」のレコードは、取り得る可能性がない更新後レコードであるため、削除される。
以下では、<パターン2−1>の後続トランザクションがコミット後に先行トランザクションがロールバック(取消)される場合について、図8を参照して説明する。<パターン2−1>では以下の手順でトランザクションが処理される。
(1)先行トランザクションを実行し、50個を入荷
(2)後続トランザクションを実行し、30個を出荷
(3)後続トランザクションの出荷処理がコミット
(4)先行トランザクションの入荷処理がロールバック(取消)
<パターン2−1>の(1)〜(3)の手順は、<パターン1−1>の(1)〜(3)の手順と同じである。よって、図8の(3)後続トランザクションの出荷処理がコミットしたときにデータベース27に記憶されたレコードは、<パターン1−1>の場合と同じである。
次に、<パターン2−2>の先行トランザクションがロールバック後に後続トランザクションがコミットされる場合について、図9を参照して説明する。<パターン2−2>では以下の手順でトランザクションが処理される。
(1)先行トランザクションを実行し、50個を入荷
(2)後続トランザクションを実行し、30個を出荷
(3)先行トランザクションの入荷処理がロールバック
(4)後続トランザクションの出荷処理がコミット
<パターン2−2>の(1)(2)(4)の手順は、図7に示す<パターン1−2>の(1)(2)(4)の手順と同じである。<パターン2−2>の(3)の手順は、<パターン1−2>の入荷処理のコミットと異なり、入荷処理のロールバックである。このとき、図9の(3)に示す「120」、「150」のレコードは、取り得る可能性がなくなったレコードであり、削除される。そして、<パターン2−2>の(4)にて後続トランザクションの出荷処理がコミットすると、図9の(4)に示す「70」が「コミット済み最新」レコードになり、「100」が「コミット済古い」となる2つのレコードがデータベース27上に記憶される。
以下では、<パターン3−1>の後続トランザクションがロールバック後に先行トランザクションがコミットする場合について、図10を参照して説明する。<パターン3−1>では以下の手順でトランザクションが処理される。
(1)先行トランザクションを実行し、50個を入荷
(2)後続トランザクションを実行し、30個を出荷
(3)後続トランザクションの出荷処理がロールバック
(4)先行トランザクションの入荷処理がコミット
<パターン3−1>の(1)(2)(4)の手順は、図5に示す<パターン1−1>の(1)(2)(4)の手順と同じである。<パターン3−1>の(3)の手順は、<パターン1−1>の出荷処理のコミットと異なり、出荷処理のロールバックである。このとき、図10の(3−1)及び(3−2)に示す「70」、「120」のレコードは、取り得る可能性がなくなったレコードであり、削除される。そして、<パターン3−1>の(4)にて先行トランザクションの入荷処理がコミットすると、図10の(4)に示す「150」が「コミット済み最新」、「100」のレコードの状態275が「コミット済古い」となる2つのレコードがデータベース27上に記憶される。
次に、<パターン3−2>の先行トランザクションがコミット後に後続トランザクションがロールバックする場合について、図11を参照して説明する。<パターン3−2>では以下の手順でトランザクションが処理される。
(1)先行トランザクションを実行し、50個を入荷
(2)後続トランザクションを実行し、30個を出荷
(3)先行トランザクションの入荷処理がコミット
(4)後続トランザクションの出荷処理がロールバック
<パターン3−2>の(1)〜(3)の手順は、図7に示す<パターン1−2>の(1)〜(3)の手順と同じである。<パターン3−2>の(4)の手順は、<パターン1−2>の出荷処理のコミットと異なり、出荷処理のロールバックである。このとき、図11の(4)に示す「120」のレコードは、取り得る可能性がなくなったレコードであり、削除される。よって、「100」のレコードの状態275が「コミット済古い」、「150」のレコードの状態275が「コミット済最新」となる2つのレコードがデータベース27上に記憶される。
最後に、本実施形態に係るデータベースサーバ20のハードウェア構成について、図12を参照して説明する。は、入力装置101、表示装置102、外部I/F103、RAM(Random Access Memory)104、ROM(Read Only Memory)105、CPU(Central Processing Unit)106、通信I/F107、及びHDD(Hard Disk Drive)108などを備え、それぞれがバスBで相互に接続されている。
(付記1)
コンピュータに、
データベースに記憶されたレコードに含まれる、データ項目の項目値に対する更新処理が発生した場合に、前記項目値が前記更新処理により更新された場合の数値を項目値とするレコードと、前記項目値が前記更新処理により更新されない場合の数値を項目値とするレコードと、を生成し、
前記更新処理が発生したレコードに対して新たな更新処理が発生した場合に、前記更新された場合の数値を項目値とするレコードと前記更新されない場合の数値を項目値とするレコードとのそれぞれに対して、前記新たな更新処理を行う、
ことを実行させるデータベース制御プログラム。
(付記2)
前記更新処理及び新たな更新処理の少なくともいずれかがコミット又はロールバックした時点で、取り得る可能性がなくなったデータ項目の項目値を含むレコードを削除する、
付記1に記載のデータベース制御プログラム。
(付記3)
先行の前記更新処理が発生したレコードに対して該更新処理がコミットされる前に、後続の前記新たな更新処理が発生する度に、前記更新された場合の数値を項目値とするレコードと前記更新されない場合の数値を項目値とするレコードとのそれぞれに対して、前記新たな更新処理を行う、
付記1又は2に記載のデータベース制御プログラム。
(付記4)
コンピュータが、
データベースに記憶されたレコードに含まれる、データ項目の項目値に対する更新処理が発生した場合に、前記項目値が前記更新処理により更新された場合の数値を項目値とするレコードと、前記項目値が前記更新処理により更新されない場合の数値を項目値とするレコードと、を生成し、
前記更新処理が発生したレコードに対して新たな更新処理が発生した場合に、前記更新された場合の数値を項目値とするレコードと前記更新されない場合の数値を項目値とするレコードとのそれぞれに対して、前記新たな更新処理を行う、
ことを実行するデータベース制御方法。
(付記5)
前記更新処理及び新たな更新処理の少なくともいずれかがコミット又はロールバックした時点で、取り得る可能性がなくなったデータ項目の項目値を含むレコードを削除する、
付記4に記載のデータベース制御方法。
(付記6)
先行の前記更新処理が発生したレコードに対して該更新処理がコミットされる前に、後続の前記新たな更新処理が発生する度に、前記更新された場合の数値を項目値とするレコードと前記更新されない場合の数値を項目値とするレコードとのそれぞれに対して、前記新たな更新処理を行う、
付記4又は5に記載のデータベース制御方法。
(付記7)
データベースに記憶されたレコードに含まれる、データ項目の項目値に対する更新処理が発生した場合に、前記項目値が前記更新処理により更新された場合の数値を項目値とするレコードと、前記項目値が前記更新処理により更新されない場合の数値を項目値とするレコードと、を生成するレコード生成部と、
前記更新処理が発生したレコードに対して新たな更新処理が発生した場合に、前記更新された場合の数値を項目値とするレコードと前記更新されない場合の数値を項目値とするレコードとのそれぞれに対して、前記新たな更新処理を行う更新処理部と、
を有するデータベース制御装置。
(付記8)
前記更新処理及び新たな更新処理の少なくともいずれかがコミット又はロールバックした時点で、取り得る可能性がなくなったデータ項目の項目値を含むレコードを削除するレコード削除部を有する、
付記7に記載のデータベース制御装置。
(付記9)
前記更新処理部は、先行の前記更新処理が発生したレコードに対して該更新処理がコミットされる前に、後続の前記新たな更新処理が発生する度に、前記更新された場合の数値を項目値とするレコードと前記更新されない場合の数値を項目値とするレコードとのそれぞれに対して、前記新たな更新処理を行う、
付記7又は8に記載のデータベース制御装置。
20:データベースサーバ
21:トランザクション実行部
22:更新処理部
23:レコード生成部
24:レコード削除部
25:記憶部
27:データベース
Claims (5)
- コンピュータに、
データベースに記憶されたレコードに含まれる、データ項目の項目値に対する更新処理が発生した場合に、前記項目値が前記更新処理により更新された場合の数値を項目値とするレコードと、前記項目値が前記更新処理により更新されない場合の数値を項目値とするレコードと、を生成し、
前記更新処理が発生したレコードに対して新たな更新処理が発生した場合に、前記更新された場合の数値を項目値とするレコードと前記更新されない場合の数値を項目値とするレコードとのそれぞれに対して、前記新たな更新処理を行う、
ことを実行させるデータベース制御プログラム。 - 前記更新処理及び新たな更新処理の少なくともいずれかがコミット又はロールバックした時点で、取り得る可能性がなくなったデータ項目の項目値を含むレコードを削除する、
請求項1に記載のデータベース制御プログラム。 - 先行の前記更新処理が発生したレコードに対して該更新処理がコミットされる前に、後続の前記新たな更新処理が発生する度に、前記更新された場合の数値を項目値とするレコードと前記更新されない場合の数値を項目値とするレコードとのそれぞれに対して、前記新たな更新処理を行う、
請求項1又は2に記載のデータベース制御プログラム。 - コンピュータが、
データベースに記憶されたレコードに含まれる、データ項目の項目値に対する更新処理が発生した場合に、前記項目値が前記更新処理により更新された場合の数値を項目値とするレコードと、前記項目値が前記更新処理により更新されない場合の数値を項目値とするレコードと、を生成し、
前記更新処理が発生したレコードに対して新たな更新処理が発生した場合に、前記更新された場合の数値を項目値とするレコードと前記更新されない場合の数値を項目値とするレコードとのそれぞれに対して、前記新たな更新処理を行う、
ことを実行するデータベース制御方法。 - データベースに記憶されたレコードに含まれる、データ項目の項目値に対する更新処理が発生した場合に、前記項目値が前記更新処理により更新された場合の数値を項目値とするレコードと、前記項目値が前記更新処理により更新されない場合の数値を項目値とするレコードと、を生成するレコード生成部と、
前記更新処理が発生したレコードに対して新たな更新処理が発生した場合に、前記更新された場合の数値を項目値とするレコードと前記更新されない場合の数値を項目値とするレコードとのそれぞれに対して、前記新たな更新処理を行う更新処理部と、
を有するデータベース制御装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015176111A JP6515753B2 (ja) | 2015-09-07 | 2015-09-07 | データベース制御プログラム、データベース制御方法及びデータベース制御装置 |
US15/246,886 US10417214B2 (en) | 2015-09-07 | 2016-08-25 | Non-transitory computer-readable storage medium, database control method and database control device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015176111A JP6515753B2 (ja) | 2015-09-07 | 2015-09-07 | データベース制御プログラム、データベース制御方法及びデータベース制御装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2017054207A true JP2017054207A (ja) | 2017-03-16 |
JP6515753B2 JP6515753B2 (ja) | 2019-05-22 |
Family
ID=58191003
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015176111A Active JP6515753B2 (ja) | 2015-09-07 | 2015-09-07 | データベース制御プログラム、データベース制御方法及びデータベース制御装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10417214B2 (ja) |
JP (1) | JP6515753B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019102059A (ja) * | 2017-12-04 | 2019-06-24 | エスアーペー エスエー | 不揮発性メモリにおけるマルチバージョン同時実行制御(mvcc) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1185544A (ja) * | 1997-09-04 | 1999-03-30 | Nec Corp | トランザクションプログラム並列実行方法およびトラン ザクションプログラム並列実行方式 |
US20090292706A1 (en) * | 2008-05-22 | 2009-11-26 | Fujitsu Limited | Apparatus and method for data management |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2837288B2 (ja) | 1990-09-17 | 1998-12-14 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 連鎖分散データトランザクションシステムにおけるワーク単位識別子の管理方法 |
US5950212A (en) * | 1997-04-11 | 1999-09-07 | Oracle Corporation | Method and system for workload based group committing for improved performance |
GB2397401A (en) * | 2003-01-15 | 2004-07-21 | Luke Leonard Martin Porter | Time in databases and applications of databases |
JP4261609B1 (ja) | 2008-05-02 | 2009-04-30 | 透 降矢 | トランザクションの同時実行制御を備えたマルチオペレーション・プロセッシングを用いたデータベースのトランザクション処理システム |
JP5652228B2 (ja) | 2011-01-25 | 2015-01-14 | 富士通株式会社 | データベースサーバ装置、データベース更新方法及びデータベース更新プログラム |
-
2015
- 2015-09-07 JP JP2015176111A patent/JP6515753B2/ja active Active
-
2016
- 2016-08-25 US US15/246,886 patent/US10417214B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1185544A (ja) * | 1997-09-04 | 1999-03-30 | Nec Corp | トランザクションプログラム並列実行方法およびトラン ザクションプログラム並列実行方式 |
US20090292706A1 (en) * | 2008-05-22 | 2009-11-26 | Fujitsu Limited | Apparatus and method for data management |
JP2009282746A (ja) * | 2008-05-22 | 2009-12-03 | Fujitsu Ltd | データ管理プログラム、データ管理方法、及びデータ管理装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019102059A (ja) * | 2017-12-04 | 2019-06-24 | エスアーペー エスエー | 不揮発性メモリにおけるマルチバージョン同時実行制御(mvcc) |
JP7101566B2 (ja) | 2017-12-04 | 2022-07-15 | エスアーペー エスエー | 不揮発性メモリにおけるマルチバージョン同時実行制御(mvcc) |
Also Published As
Publication number | Publication date |
---|---|
US10417214B2 (en) | 2019-09-17 |
US20170068701A1 (en) | 2017-03-09 |
JP6515753B2 (ja) | 2019-05-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8868514B2 (en) | Transaction support for distributed data | |
EP3117348B1 (en) | Systems and methods to optimize multi-version support in indexes | |
EP3079078B1 (en) | Multi-version concurrency control method in database, and database system | |
US8832159B2 (en) | Systems and methods for asynchronous schema changes | |
US9020916B2 (en) | Database server apparatus, method for updating database, and recording medium for database update program | |
US9652492B2 (en) | Out-of-order execution of strictly-ordered transactional workloads | |
US11914569B2 (en) | Light weight redundancy tool for performing transactions | |
CN107710203B (zh) | 分布式键/值存储库之上的事务数据库层 | |
US11023457B1 (en) | Targeted sweep method for key-value data storage | |
US11099960B2 (en) | Dynamically adjusting statistics collection time in a database management system | |
JP6079876B2 (ja) | 分散処理システム | |
US10127270B1 (en) | Transaction processing using a key-value store | |
EP3377970B1 (en) | Multi-version removal manager | |
JP6515753B2 (ja) | データベース制御プログラム、データベース制御方法及びデータベース制御装置 | |
US9009718B2 (en) | Processing singleton task(s) across arbitrary autonomous server instances | |
CN108475211B (zh) | 无状态系统和用于获得资源的系统 | |
CN110377614B (zh) | 一种分布式环境下的订单处理锁系统 | |
US20180150498A1 (en) | Database management device, information processing system, and database management method | |
JP5967628B2 (ja) | クエリを処理する装置及び方法 | |
JP6402537B2 (ja) | 更新処理プログラム、装置、及び方法 | |
US10452424B2 (en) | Unique transaction identifier based transaction processing | |
JP6398786B2 (ja) | データベースシステム、データベースサーバ、データベースサーバプログラム、データベースクライアント及びデータベースクライアントプログラム | |
EP2875451A1 (en) | Method and system for replicating data in a cloud storage system | |
US11157307B2 (en) | Count and transaction identifier based transaction processing | |
CN114722125A (zh) | 数据库事务处理的方法、装置、设备和计算机可读介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20180514 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20190116 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20190219 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20190313 |
|
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: 20190319 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20190401 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6515753 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |