4

サブクエスティング SQL - 「with ( nolock )」を使用する必要がある場合</a>

ある地元の金融機関では、MS SQL Server 2005 データベースの (ブロック) 問題をブロックすることは私にはあまり意味をなさないという私の意見を彼らのプログラマーに表明したことで、彼らのプログラマーに叱責されました。

新しい修正レコードをデータベースに挿入 (追加) することにより、財務操作が更新、削除され、さらには誤った操作 (「トランザクション」の一部) が修正されない場合、ロック、ブロック、デッドロックの可能性についてどのような問題が考えられますか?
これを英語で何という?他の言語では、storno、stornoed (?) オペレーション/レコードと呼ばれます。

したがって、私が理解しているように、「トランザクション」は実際にロールバックされることはなく、誤った/存在しないレコードは決してなく、実際化されていないレコードのみがあります。

更新:
私は storno をグーグル検索しましたが、英語での定義または英語のテキストでの使用を含む結果を見つけることができませんでした.
storno (ラテン文字) の定義はイタリア語のみで見つかりました。
しかし、会計はイタリアで発明され、イタリアの会計用語の多くは他の言語で使用されています。たとえば、ロシアの会計 (銀行) などです。
また、国際的に通用する金融業務会計の実践だと思いましたね。

更新 2:
S.Lott は、ERP アプリケーションでトランザクションが取り消される方法は大したことです! へのリンクを教えてくれました。storn が反転トランザクションであることを伝えます。

まあ、これは正しくありません。Storno はトランザクションだけでなく、誤った操作を修正する操作 (トランザクションの一部) ですが、2 つの操作を組み合わせると、トランザクション (ターゲット アカウントとソース アカウントでのクレジットとデビットの 2 つの操作で構成される) が逆になるように見える場合があります。

では、Storno は世界中で一般的な財務会計業務ではありませんか?

とにかく、会計の詳細/技術/用語の議論を避け、記録が削除または更新されない場合の文脈に質問を制限したいと思います.

このコンテキストでのロック、ブロッキング、デッドロック、パフォーマンスで考えられる問題は何ですか?

4

1 に答える 1

2

「StornoTransactions」または「ReversingTransactions」はうまく要約されています。多くの場所で。

http://richardatopenbravo.blogspot.com/2010/02/way-that-transactions-are-reversed-in.html

http://help.sap.com/saphelp_46b/helpdata/en/d2/6f921f415e11d182b10000e829fbfe/content.htm

http://forum.wordreference.com/showthread.php?t=1875166

ソフトウェアの実装とアカウンティングを混同しないでください。合理的な実装は、最小限のロックでうまくいくことができます。しかし、それは何の意味もありません。ソフトウェアの設計が不適切であり、(b)設計が不適切なために注意深くロックする必要があるため、叱責を受けた可能性があります。

考えられる問題は何ですか...?

ソフトウェアがどれだけ上手く書かれているか、どれだけ下手に書かれているかわからないので、推測することは不可能です。彼らはあなたが知らなかった彼らのシステムについて何かを知っているかもしれません。

単純なstornoトランザクションシステムは簡単に実装できるはずです。確かに、それ些細なことです。

挿入中にページレベルのロックが使用された場合でも、「挿入専用」テーブルのペアでデッドロックが発生する可能性があります。

1ページの表Aには、トランザクションXに挿入があります。

2ページの表Bには、トランザクションYに挿入があります。

2ページの表Bには、トランザクションXに挿入があります。

1ページの表Aには、トランザクションYに挿入があります。

デッドロックを回避する唯一の方法は、システム全体で単一のテーブルを使用することです。または、すべてのトランザクションを1つのテーブルに制限します。または、単一のデータベース全体のロックを使用します。

複数のテーブル操作(およびページレベルのロック)がある場合は、挿入のみの操作でもデッドロックが発生する可能性があります。明らかにそれはまれですが、それでも可能です。

于 2010-10-01T02:54:31.490 に答える