参照コードテーブル用の最適なSybaseASEテーブルロックスキームa
-
29-10-2019 - |
質問
通常の使用時にのみ読み取られる参照コードテーブルがあり、製品の変更(毎月)に対してのみ更新されるはずです。
create tableステートメントでどのテーブルロックを使用する必要がありますか?
ASEが管理する必要のある読み取りロックの総数を抑えるため、ALLPAGESを想定していました。しかし、私はプロジェクトの別の開発者から異なる「アドバイス」を得ています。
問題のDBに、ALLPAGESを使用する他の参照テーブルがあります。ただし、12.5からアップグレードされたため、当時利用可能だったものからのホールドオーバーである可能性があります。
テーブルの幅はそれほど広くありません。2つの数値コードID列とchar(1)列があり、2つの数値コードにクラスター化されています。
解決
明白な答えしかありません。最初にsp_object_statsを実行し、ロックスキームを選択してください。
他のヒント
参照テーブルが読み取り専用の場合は、(あなたが言ったように)ロックの数が最も少なく、プロセスがデータの読み取り中に取得する共有ロックに競合がないため、全ページロックが最適です。
パフォーマンスに関する追加のヒントを提供するために:サブクエリのキャッシュを利用するには、常に相互に関連するサブクエリを介して参照テーブルを使用するようにしてください。また、サブクエリのキャッシュは、サブクエリがオプティマイザによってフラット化されておらず、通常の結合に変換されていない場合にのみ実行されることに注意してください。サブクエリがフラット化されないようにする秘訣は、属性にmax(attr)などの集計関数を使用することです。max関数は、「GroupBy」なしでダミーになります。