Teradata DWHからデータを取得するアプリケーションを開発しています。 DWHの開発者は、すべてのSELECT
クエリの前にLOCK ROW FOR ACCESS
を使用して、そのテーブルへの書き込みの遅延を避けるように指示しました。Teradata - ライターをロックしないで選択するには? (アクセス用のロッキング・ローとアクセス用のロッキング・テーブル)
MS SQL ServerのWITH(NOLOCK)
ヒントをよく知っているので、LOCK ROW FOR ACCESS
と同等です。しかし、INSERT
またはUPDATE
文がLOCK ROW FOR ACCESS
を使用して許可されていません(これが失敗した理由、それはテーブル(複数可)文は、から選択するために適用する必要があるため、それは、私にとっては明らかではないが、ないものに私が挿入):
-- this works
LOCK ROW FOR ACCESS
SELECT Cols
FROM Table
-- this does not work
LOCK ROW FOR ACCESS
INSERT INTO SomeVolatile
SELECT Cols
FROM PersistentTable
私はLOCKING TABLE ... FOR ACCESS
が使用できることを見ましたが、それが私の必要性に合っているかどうかは不明です(NOLOCK
相当 - 書き込みをブロックしないでください)。
質問:INSERT
ステートメント内で選択すると、書き込みの遅延を最小限に抑えるためにどのようなヒントを使用しますか?
ビューを使用するとよいアドバイスです。残念ながら、私は変更を行うことを許可していませんが、MDW開発者に、アクセスしているテーブルを「アクセス用のロック行」ビューにラップするよう依頼することができます。 – Alexei
@Alexei:Teradata環境では、ほとんどのエンド・ユーザーはLOCK ROW ACCESSを含む1:1ビューしかアクセスできないため、これらのビューはすでに存在している可能性があります。さらに、ソーステーブルのPIを使用して選択しない限り、LOCK ROW/TABLEの違いはありません。 Btw、MDW =ドイツの大手小売業者ですか? – dnoeth
@dnoeth - あ、申し訳ありません。 MDW =マスターデータウェアハウス。私はそれがいくつかの地元企業の略語として使われているのを見ましたが、それは知られている頭字語だと思っていましたが、あなたとGoogleは私を間違っていました。そして、はい、それはDEのデータウェアハウスの大手小売業者です。 – Alexei