2016-05-14 8 views
6

以下の引用符で囲まれた抽出物は、この点で矛盾しているようです。'Commit Retaining'を使用するとFirebirdのパフォーマンスが低下しますか?

(彼らは私が思うに、両方かなり古いです、二番目は2004年からであり、第一は、ボーランドはように古い井戸でなければなりません言及し、ので、おそらく彼らは時代遅れです。)

最初はそれが保持コミット示唆しているようですトランザクションをアクティブに保ち、OITをスティックします。

2つ目は、コミットを保持すると、既存のTIDがコミットとマークされ、トランザクションは新しいTIDで保持されるため、OITを保持しないことを意味します。この2番目の抽出はInterbaseに関連していますが、見た目の矛盾を説明するかどうかは分かりません。

Firebird Documentationエキス:火の鳥(とInterBaseの)で

、 に保持原因トランザクションをコミット無期限に興味深いまま。ガベージコレクションは、「標準の」Borland RADツールデータベースアプリケーションおよびCommit Retainingを使用するその他の アプリケーションでは、 を効果的に停止します。

Embarcadero Blog postエキス

コミット読み取り、読み書き:

あなたが随時に保持コミットしない場合、このトランザクションは パフォーマンスに悪影響を永遠に実行することができます。あなたが保持(どちらかCOMMIT RETAINとAPIまたはを使用して)Firebirdのと、本当に終了していない開始されたトランザクションが、それは単に内部開始された新しいトランザクションから見えるトランザクションのセットに関連付けられますコミット使用

+2

Firebirdは2000年にInterBaseからフォークされ、それ以来発散しています。すべての意図と目的のために、彼らは独自の奇妙なやり方で、異なるデータベースとみなされるべきです。したがって、一方について記述された制限が他方にも当てはまるとは仮定しないでください。これは_ "(およびInterBase)_のようなテキストにも当てはまります。これはもはや真実ではない歴史的共通性を意味するかもしれません。 –

答えて

4

また、古いものをアクティブに保ちます。

これは、最も古い興味深いトランザクションと最も古いアクティブなトランザクションが動かず、トランザクションが実際にコミットされるまでガベージコレクションできないバックバージョンが蓄積されることを意味します。つまり、最終的にクエリでは、より長いレコードバージョンのチェーンをスキャンする必要があり、パフォーマンスに影響を与える可能性があります。

私はいくつかの最適化が可能であると仮定します。たとえば、トランザクションで開始されたカーソルが開いていない場合、元のトランザクションはコミット済みとマークされる可能性があります(コミット保持の機能の1つは、トランザクションコミットでは、私が間違っていなければ、古いトランザクションコンテキストを利用可能にする必要があります)。これは、InterBaseが読み込みコミット済みトランザクションに対して行ったことかもしれません。

これは、isqlセッションを開始し、コミット保留と組み合わせていくつかの挿入を行うことにより、あなた自身が見ることができます。gstat -hを組み合わせてチェックすると、最も古い興味深いトランザクションと最も古いアクティブなトランザクションは、コミット。

+1

ありがとうございました。あなたは質問に答えましたが、おそらく私の心の中で2倍の数字を挙げました!多分私は別の質問か2を尋ねます、もし私がそれを理解できなければ! – kjack

関連する問題