4

Adaptive Server には、次のロック方式が用意されています。

  • 全ページ ロック。データ ページとインデックス ページをロックします。
  • データページのみをロックするデータページロック
  • データ行のみをロックするデータ行ロック

私の質問は、ロックの数がロック戦略に依存するかどうかです。多くのロックは、アプリケーションの実装が不適切であるか、またはそれに類似した兆候であると言う人もいます。つまり、データページは 1 つのロックで多くの行をカバーするため、データ行戦略では、たとえばデータページよりも多くのロックが必要になるということです。私は自分の仮定に完全には確信が持てません。

私は現在200kを持っていますが、これではまだ十分ではありません。

最近、テーブルのロック戦略をデータ行に変更してパフォーマンスを改善し、それ以来、ロックを増やしています。

Sybase のドキュメントによると、範囲は 1000 ~ 2147483647 です。

2147483647に設定しないのはなぜですか?

4

2 に答える 2

1

データページとデータ行のロックは、排他ロックを取得する非常に多くの WRITE/UPDATE 操作でデータベースにアクセスするプロセスが多数ある場合に適しています。全ページ ロックでは、1 回の操作でより多くのページ (書き込み操作の影響を受けるページよりも多く) がロックされるため、書き込み操作の影響を受けないデータにアクセスするプロセスをブロックできます。

ただし、そのテーブルにデータページまたはデータ行のロックがある場合、同じ書き込みプロセスで影響を受けるデータのみがロックされるため、ロックされるデータの量が少なくなるため、同時実行性が向上します。しかし、この書き込みプロセスによって保持されるロックの数はより多いため、より多くのメモリが必要になります。

たとえば、ページに 10 行あり、書き込みプロセスが 5 行に影響するとします。プロセスがページをロックすると、1 つのロックだけが取得され、残りの 5 つの行のいずれかを読み取ろうとするプロセスがブロックされます。

そのテーブルにデータ行ロックがある場合、書き込みプロセスは 5 つのロック (つまり、より多くのメモリ) を取得し、残りの 5 つの行を他のプロセスが読み書きできるようにページに残します。

于 2013-08-25T19:36:30.880 に答える
0

Locks use memory, so setting to the maximum value could cause your ASE instance to run out of available memory. SAP Sybase has some performance and tuning documentation that may help you figure out how to better tune your application, and server.

于 2012-11-21T19:36:16.077 に答える