JP3508863B2 - Dbmsにおける更新処理方法 - Google Patents
Dbmsにおける更新処理方法Info
- Publication number
- JP3508863B2 JP3508863B2 JP25297392A JP25297392A JP3508863B2 JP 3508863 B2 JP3508863 B2 JP 3508863B2 JP 25297392 A JP25297392 A JP 25297392A JP 25297392 A JP25297392 A JP 25297392A JP 3508863 B2 JP3508863 B2 JP 3508863B2
- Authority
- JP
- Japan
- Prior art keywords
- statement
- update
- select
- sql
- record
- 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 - Lifetime
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
タベースに対するSQL言語を使ったアプリケーション
・プログラムにおけるDBMSにおける更新処理方法に
関するものである。
ル・データベース(以後、DBと記す)107とは、デ
ータ項目を表(テーブル)形式で格納するデータベース
であり、DB107はリレーショナル・データベース管
理システム(以後DBMSと記す)108で管理する。
図7にテーブル形式のDB107の構成の例を示す。テ
ーブルの縦方向の列をカラム、横方向の行をレコードと
呼ぶことにする。
述されたアプリケーション・プログラム(以後APと記
す)101中に、JISで定められたデータベース言語
(SQL言語;構造化照会言語)[JIS X 3005 Nov.198
7 ]を記述することで行われる。ここで、ホスト言語と
は、C,COBOL,FORTRAN,Adaなどの通
常のプログラミング言語である。ホスト言語とSQL言
語間のデータの授受は特別なホスト言語の変数(以後ホ
スト変数と記す)を経由することにより行う。
場合のDB107に対するAP(一部)の例を示す。図
中のh1,h2,h3,h4,h5,h14,h15はホスト変数である。
ル処理過程とは、AP101中に記述されたSQL文を
ホスト言語または計算機が実行可能な言語によるロジッ
クに変換する過程である。
は、以下のような処理パターンがよく用いられる。
xより大きいならaを引き、既にx以下なら何もしな
い。」つまり条件のついた更新である。
SQL文(UPDATE文(G101))で記述することが可能であ
る。
1に示すような処理フローのUPDATE文の処理I106に
よって、図10に示すようなロジックHを生成する。
であるレコードを特定する(ステップH102)。
す(ステップH103)。
がついた場合には、SQL言語仕様内での条件分岐の記
述が不可能なため、ホスト言語の条件分岐を利用し、2
つのSQL文(SELECT文(J101)とUPDATE文(J103))に分
けて以下のように記述する必要がある。ここで、UPDATE
は更新処理を行うSQL文、SELECTは検索処理を行うS
QL文を表す。
SELECT文の処理(ステップI104)及びUPDATE文の処
理(ステップI106)によって、図13に示すような
ロジックを生成する。
であるレコードを特定する。(ステップK102) (2)ホスト変数h1にレコード内のカラムC1の値を代入
する。(ステップK103) (3)もし、変数h1の値が0より大きいなら、以下のス
テップK105、ステップK106を行う。(ステップ
K104) (4)テーブルT1でカラムC0の値が123であるレコー
ドを特定する。(ステップK105) (5)特定したレコード内のカラムC1の値を1減らす。
(ステップK106)
テップK105は同一の処理を行っている。つまり、SE
LECT文(J101)とUPDATE文(J103)のそれぞれでインデック
スの検索を行い、同じレコードの特定を行っている。こ
れはSELECT文(J101)とUPDATE文(J103)が以下の条件を満
たすためである。
クション内で連続している。
とUPDATE文のテーブル指定が同じである。
とUPDATE文の検索条件指定(WHERE句)が同じである。
(a)〜(c)を満たしていれば、SELECT文とUPDATE文
は必ず同一のレコードを指すため、UPDATE文でのインデ
ックス検索は無駄である。
した場合には、そのホスト変数値も同一でなければなら
ない。
ときに、通常の方法ではSELECT文とUPDATE文の各々につ
いてインデックス検索を行うため、無駄な処理が発生す
るという問題があった。
で、更新処理時のレコード位置特定処理(たとえばイン
デックス検索処理)を削除することで、条件付きの更新
処理を高速化するDBMSにおける更新処理装置を提供
することを目的とする。
め、本願第1の発明は、データベースにアクセスするプ
ログラム中にSQL言語を用いて記述されたSQL文の
プリプロセス処理過程において、プログラムからSQL
文を1文だけ切り出し、この切り出したSQL文が検索
処理を行うSQL文であるSELECT文の場合には、このSE
LECT文の位置から最初に現れるSQL文を検出するか、
または、前記SELECT文の検索条件に影響が生じるか、ま
たは、先読みを行う部分の連続性が保証できなくなる
か、のうちのいずれかの状況が生じるまでプログラムの
先読みを行い、この先読みの過程において更新処理を行
うSQL文であるUPDATE文を得たとき、このUPDATE文と
前記SELECT文の対象テーブルが同一であり、かつ、前記
SELECT文と前記UPDATE文の検索条件指定が同一であり、
かつ、前記SELECT文の検索条件に影響を与えず、かつ、
前記SELECT文から前記UPDATE文までの実行時連続性が保
証できた場合には、前記SELECT文が指定しているレコー
ド位置情報を保存し、この保存したレコード位置情報を
用いて前記UPDATE文が更新するレコードを特定すること
を要旨とする。
アクセスするプログラム中にSQL言語を用いて記述さ
れたSQL文のプリプロセス処理過程において、プログ
ラムからSQL文を1文だけ切り出し、この切り出した
SQL文が検索処理を行うSQL文であるSELECT文の場
合には、このSELECT文の位置から最初に現れるSQL文
を検出するまでプログラムの先読みを行い、この先読み
の過程において更新処理を行うSQL文であるUPDATE文
を得たとき、このUPDATE文と前記SELECT文の対象テーブ
ルが同一であり、かつ、前記SELECT文と前記UPDATE文の
検索条件指定がホスト言語の変数名の差異を除き同一で
あり、かつ、前記SELECT文から前記UPDATE文までの実行
時連続性が保証できた場合には、前記SELECT文の位置情
報と検索条件の指定に用いた全てのホスト言語の変数を
保存し、この保存したホスト言語の変数の値と、当該ホ
スト言語の変数の値にそれぞれ対応する前記UPDATE文の
検索条件を指定するホスト言語の変数の値がすべて等し
いときには、予め保存されているレコード位置情報を用
いて前記UPDATE文が更新するレコードを特定することを
要旨とする。
LECT文の位置より先読みを行いUPDATE文を検出し、SELE
CT文とUPDATE文の対象とするレコードが同一であること
をプリプロセス時に確認することによって、プリプロセ
スにおいてUPDATE文でのレコード特定にSELECT文で特定
したレコード位置情報を用いるロジックを生成すること
で、従来UPDATE時に必要であったレコード特定のための
インデックス検索処理を無くすことができ、処理の高速
化が可能になる。
読みを行いUPDATE文を検出し、SELECT文とUPDATE文の検
索条件内のホスト変数の値が同一であれば2つの文の対
象とするレコードが同一になることをプリプロセス時に
確認することによって、プリプロセスにおいてSELECT文
の検索条件内のホスト変数を保存し、その値を更新実行
時にUPDATE文の検索条件内のホスト変数と比較をし、も
し、対応するホスト変数のそれぞれが全て等しければレ
コード特定にSELECT文で特定したレコード位置情報を用
いるロジックを作成することで、従来UPDATE時に必要で
あったレコード特定のためのインデックス検索処理を無
くすことができ、処理の高速化が可能になる。
て説明する。
は、AP中に埋め込まれたSELECT文とそれに続くUPDATE
文を対象とする。図1を参照するに、(1)AP中のSE
LECT文を検出した後(ステップA103)、以下に示す
条件Aのいずれかを満たすまでAPを先読みする(ステ
ップA104)。
きなくなる。
し(ステップA105)、全てを満足すれば、ステップ
A106、ステップA107に進み、以下の処理(3)
(4)を行う。1つでも満たさない条件が存在する場合
には、SELECT文およびUPDATE文に対してそれぞれ従来の
ロジックを生成する。
SQL文はUPDATE文である。
が同一である。
が同一である。
た。
連続性が保証できた。
のロジックAを生成する(ステップA106)。
WHERE句で指定された条件を満たすレコードを特定す
る。
する。
値を代入する。
は、以下のロジックBを生成する(ステップA10
7)。
いて更新を行う。
SELECT文を検出した後、まず、以下に示す条件Cを満た
すまでAPを先読みする。
し、全てを満足するときには、以下に示す処理(3)、
(4)を行う。1つでも満たさない条件が存在する場合
には、SELECT文およびUPDATE文に対してそれぞれ従来の
ロジックを生成する。
SQL文はUPDATE文である。
が同一である。
がホスト変数名の差異を除き同一である。
連続性が保証できた。
に示すロジックEを生成する。
WHERE句で指定された条件を満たすレコードを特定す
る。
する。
変数をバックアップ用のホスト変数に保存する。
値を代入する。
は、以下のロジックFを生成する。
クションで、かつ、間に他のSQL文の実行がなく、か
つ保存しておいたホスト変数とそれに対応するUPDATE文
のホスト変数の値がそれぞれ全て等しいか判定する。
していたレコード位置情報を用いて更新を行う。
DATE文に対して従来の処理を行う。以上、本発明は上述
した過程を有することを特徴とするものである。
詳細に説明する。
の動作フローチャート、図2及び図3はプリプロセス処
理を説明するための図である。
SELECT文(図2に示すB101)を検出した後、まず、ステ
ップA104に従い、以下に示す第1の条件としての条
件Aのいずれかを満たすまでAPを先読みする。
きなくなる。
て異なるが、C言語の場合には以下の条件を満たすとき
SELECT文の検索条件に影響がないと考える。
数の変更がない。 ・ホスト言語の変数のうち、ホスト変数以外の変数の更
新がない。 ・関数呼び出しがない。または、呼び出す関数内でSELE
CT文の WHERE句で使用するホスト変数の更新がない。
異なるが、C言語の場合には以下の条件を満たすとき先
読みを行う部分の連続性が保証できると考える。
ど)により処理が不連続になる。 ・ジャンプからの入り口(ラベル、setjmp) がある。 ・関数呼び出しがない。または、呼び出す関数内にSQ
L文がない。 この場合、先読みを行うと次の文(B102) はif文であ
り、これは条件Aの(a)(b)(c)を満たさないの
で先読みを継続する。
であるため、これは条件(a)を満足するので先読みを
終了する。
述した条件Bをチェックし、全てを満足すれば、ステッ
プA106及びステップA107による処理を行う。1
つでも満たさない条件が存在する場合には、SELECT文お
よびUPDATE文に対してそれぞれ従来のロジックを生成す
る(ステップA108、ステップA109、ステップA
110)。
している。
L文はUPDATE文(B103)であった。 ・SELECT文(B101)とUPDATE文(B103)は、対象テーブルが
どちらもT1である。 ・SELECT文(B101)とUPDATE文(B103)は、検索条件を示す
WHERE句が等しい。 ・SELECT文(B101)からUPDATE文(B103)までの先読みの間
に、SELECT文(B101)の検索条件を変更するような処理が
なかった。 ・SELECT文(B101)からUPDATE文(B103)までの実行時連続
性が保証できた。
SELECT文(B101)に対しては、図3に示すように以下のロ
ジックAを生成する。
内で、 WHERE句で指定された条件(C4=:h4 and C5=:h5)
を満たすレコードを特定する。(ステップC102) (3-2) 特定したレコードの位置情報を保存する。(ステ
ップC103) (3-3) ホスト変数(h3,h2,h1) にレコード内のカラム
(C3,C2,C1) の値を代入する。
の処理のロジック(B102)を(3)と(4)の間に展開す
る。(ステップC105) (4)ステップA108に従いSELECT文(B101)に続くUP
DATE文(B103)に対しては、図3に示すように以下のロジ
ック3を生成する。
いて更新を行う。(ステップC106) 次に図を参照して第2の実施例について説明する。
ート、図5から図6はのプリプロセス処理を説明するた
めの図である。
5)中のSELECT文(E101) を検出した後、まず、ステッ
プD104に従い、以下の条件Cを満たすまでAPを先
読みする。
102)であり、これは(a)を満たさないので先読みを継
続する。次に、先読みを行うと、UPDATE文(E103) であ
るため、これは条件(a)を満足するので先読みを終了
する。
した条件Dをチェックし、全てを満足すれば、以下の処
理には、SELECT文およびUPDATE文に対してそれぞれ従来
のロジックを生成(ステップD108、ステップD10
9、ステップD110)する。
満足している。
L文はUPDATE文(E103) であった。 ・SELECT文(E101) とUPDATE文(E103) は、対象テーブ
ルがどちらもT1である。 ・SELECT文(E101) とUPDATE文(E103) は、検索条件を
示す WHERE句が等しい。
までの先読みの間に、SELECT文(E101) の検索条件を変
更するような処理がなかった。 ・SELECT文(E101) からUPDATE文(E103) までの実行時
連続性が保証できた。
LECT文(E101) に対しては、図6に示すように以下のロ
ジックEを生成する。
で、 WHERE句で指定された条件を満たすレコードを特定
する(ステップF102)。
する。(ステップF1003) (c)検索条件指定に用いた全てのホスト変数(h4,h5)
をバックアップ用のホスト言語の変数(bh4,bh5)に保存
する(ステップF104)。
内のカラム(C3,C2,C1) の値を代入する(ステップF1
05)。
の処理のロジック(E102) を(3)と(4)の間に展開
する(ステップF106)。
(E101) に続くUPDATE文(E103) に対しては、図6に示
すように以下のロジックFを生成する。
4,bh5)の値とそれに対応するUPDATE時の検索条件のホス
ト変数(h14,h15)の値がそれぞれ全て等しいこと(bh4=
h14かつbh5=h15)をチェックする(ステップF10
7)。
していたレコード位置情報を用いて更新を行う(ステッ
プF108)。
DATE文に対して従来の処理を行う。(ステップF10
9、ステップF110) 以上、本発明の実施例を具体例を用いて説明してきた
が、本発明は上記実施例に限定される事はなく、その要
旨を逸脱しない範囲、たとえばSELECT文とUPDATE文の検
索条件の複雑化や、SELECT文とUPDATE文の間のロジック
の複雑化(SELECT文とUPDATE文の間に複数のif文が存在
することや、その他の関数/手続きが存在すること)や
簡約化(SELECT文とUPDATE文の間にif文がなく単に連続
する場合など)、等の種々変更が可能である。
TE文)でもUPDATE文と同様にインデックス検索を行うた
め、条件付きDELETE文のは条件付きUPDATE文の場合と全
く同様に本発明の適用が可能である。
先読みを行いUPDATE文を検出し、SELECT文とUPDATE文の
対象とするレコードが同一であることをプリプロセス時
に確認することによって、プリプロセスにおいてUPDATE
文でのレコード特定にSELECT文で特定したレコード位置
情報を用いるロジックを生成することで、従来UPDATE時
に必要であったレコード特定のためのインデックス検索
処理を無くすことができ、処理の高速化が可能になる。
DATE文を検出し、SELECT文とUPDATE文の検索条件内のホ
スト変数の値が同一であれば2つの文の対象とするレコ
ードが同一になることをプリプロセス時に確認すること
によって、プリプロセスにおいてSELECT文の検索条件内
のホスト変数を保存し、その値を更新実行時にUPDATE文
の検索条件内のホスト変数と比較をし、もし、対応する
ホスト変数のそれぞれが全て等しければレコード特定に
SELECT文で特定したレコード位置情報を用いるロジック
を作成することで、従来UPDATE時に必要であったレコー
ド特定のためのインデックス検索処理を無くすことがで
き、処理の高速化が可能になる。
囲内で記述されたAPに対して行うことができる。
てC言語を用いるが、本発明はこれに限定されること無
く、ホスト言語がC言語以外の場合でも同様に適用可能
である。
更新処理において、従来の処理方法に対し、UPDATE文で
のレコード位置の特定処理(インデックス検索)1回分
の処理時間の削減することが可能になる。
プロセスの動作フローチャートである。
更新処理の例を示す図である。
されるロジックを示すフローチャートである。
リプロセスの動作フローチャートである。
理の例を示す図である。
されるロジックを示すフローチャートである。
る。
すブロック図である。
を示すフローチャートの例である。
チャートである。
る。
ロジックを示すフローチャートの例である。
Claims (2)
- 【請求項1】 データベースにアクセスするプログラム
中にSQL言語を用いて記述されたSQL文のプリプロ
セス処理過程において、 プログラムからSQL文を1文だけ切り出し、 この切り出したSQL文が検索処理を行うSQL文であ
るSELECT文の場合には、このSELECT文の位置から最初に
現れるSQL文を検出するか、または、前記SELECT文の
検索条件に影響が生じるか、または、先読みを行う部分
の連続性が保証できなくなるか、のうちのいずれかの状
況が生じるまでプログラムの先読みを行い、 この先読みの過程において更新処理を行うSQL文であ
るUPDATE文を得たとき、このUPDATE文と前記SELECT文の
対象テーブルが同一であり、かつ、前記SELECT文と前記
UPDATE文の検索条件指定が同一であり、かつ、前記SELE
CT文の検索条件に影響を与えず、かつ、前記SELECT文か
ら前記UPDATE文までの実行時連続性が保証できた場合に
は、前記SELECT文が指定しているレコード位置情報を保
存し、 この保存したレコード位置情報を用いて前記UPDATE文が
更新するレコードを特定することを特徴とするDBMS
における更新処理方法。 - 【請求項2】 データベースにアクセスするプログラム
中にSQL言語を用いて記述されたSQL文のプリプロ
セス処理過程において、 プログラムからSQL文を1文だけ切り出し、 この切り出したSQL文が検索処理を行うSQL文であ
るSELECT文の場合には、このSELECT文の位置から最初に
現れるSQL文を検出するまでプログラムの先読みを行
い、 この先読みの過程において更新処理を行うSQL文であ
るUPDATE文を得たとき、このUPDATE文と前記SELECT文の
対象テーブルが同一であり、かつ、前記SELECT文と前記
UPDATE文の検索条件指定がホスト言語の変数名の差異を
除き同一であり、かつ、前記SELECT文から前記UPDATE文
までの実行時連続性が保証できた場合には、前記SELECT
文の位置情報と検索条件の指定に用いた全てのホスト言
語の変数を保存し、 この保存したホスト言語の変数の値と、当該ホスト言語
の変数の値にそれぞれ対応する前記UPDATE文の検索条件
を指定するホスト言語の変数の値がすべて等しいときに
は、予め保存されているレコード位置情報を用いて前記
UPDATE文が更新するレコードを特定することを特徴とす
るDBMSにおける更新処理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP25297392A JP3508863B2 (ja) | 1992-09-22 | 1992-09-22 | Dbmsにおける更新処理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP25297392A JP3508863B2 (ja) | 1992-09-22 | 1992-09-22 | Dbmsにおける更新処理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH06103125A JPH06103125A (ja) | 1994-04-15 |
JP3508863B2 true JP3508863B2 (ja) | 2004-03-22 |
Family
ID=17244732
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP25297392A Expired - Lifetime JP3508863B2 (ja) | 1992-09-22 | 1992-09-22 | Dbmsにおける更新処理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3508863B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000250791A (ja) | 1999-03-03 | 2000-09-14 | Nec Corp | Dmlオブジェクト再生成時におけるメッセージ表示方法ならびに装置及び同方法がプログラムされ記録された記録媒体 |
-
1992
- 1992-09-22 JP JP25297392A patent/JP3508863B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JPH06103125A (ja) | 1994-04-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6556986B2 (en) | Database management method of invoking a function retrieving index type definition, cataloging particular index which has not yet been supported by a database system | |
US9104740B2 (en) | Enhanced attribute synchronization in a content management system | |
US20040267747A1 (en) | Transaction processing system supporting concurrent accesses to hierarchical data by transactions | |
US5850535A (en) | Roll-back during regeneration on a computer-aided design system | |
JP2602205B2 (ja) | データベース・アクセス制御方法 | |
EP0361464B1 (en) | Method and apparatus for producing an abstract of a document | |
EP0339901B1 (en) | Improved version management tool | |
US20020095438A1 (en) | Proposed syntax for a synchronized commands execution | |
EP0726537A1 (en) | Method and system for constraint checking bulk data in a database | |
Layaida et al. | Maintaining temporal consistency of multimedia documents using constraint networks | |
JPH08190542A (ja) | 文書データベース管理装置及び方法 | |
US8244694B2 (en) | Dynamic schema assembly to accommodate application-specific metadata | |
JP3508863B2 (ja) | Dbmsにおける更新処理方法 | |
US6980995B2 (en) | Method, computer program product, and system for automatically generating a hierarchial database schema report to facilitate writing application code for accessing hierarchial databases | |
US5930800A (en) | Execution of user defined ADT function implemented by embedded module in a database management method | |
EP0336580A2 (en) | Relational databases | |
Garlan et al. | Transformgen: automating the maintenance of structure-oriented environments | |
JP2008176777A (ja) | ウェブ文書スタイル変更システム及びその方法 | |
US6925630B1 (en) | Method for generating code for processing a database | |
JPH06215037A (ja) | インデックスの自動更新装置 | |
DE69914290D1 (de) | Verfahren zur Daten-Übertragung zwischen einem Rechnerunterstützten Entwurfssystem und einem Rechnerunterstützten Herstellungssystem, Verwendung eines solchen Verfahrens und Schnittstelle zwischen den genannten Systemen | |
JP3338752B2 (ja) | 更新可能表の明示指定によるデッドロック削減方式 | |
JPH05197534A (ja) | プログラムデータベースシステム | |
JP3222173B2 (ja) | 日本語構文解析システム | |
JPH07182222A (ja) | オブジェクト指向データベース管理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7426 Effective date: 20031217 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20031217 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090109 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090109 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100109 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110109 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110109 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120109 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130109 Year of fee payment: 9 |
|
EXPY | Cancellation because of completion of term | ||
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130109 Year of fee payment: 9 |