モバイルデバイスから重複した注文をチェックするSQL Serverにストアドプロシージャがあります。サーバーから応答がない場合、デバイスは約1/2秒以内に再試行します。すでに挿入されているにもかかわらず、複製が読み取られないことがあります。 SQL Serverが挿入されたデータをコミットするのに1/2秒遅れることは可能ですか?解決策は、ダーティリードの使用を開始するのですか?挿入されたデータをコミットする際のSQL Serverの遅延
答えて
race conditionになっているようです。
すなわち
Time SP Call 1 SP Call 2
0.00 Dup Exists?
0.10 ... Dup Exists?
0.20 No No
0.30 Insert New ...
0.40 Insert New
重複するための手順のチェックを持っているのではなく、あなたが重複を防ぐために、データに一意のインデックスを置くことができますか?
私の意見では、ダーティリードを使用することは決して決してありません。一意性は、制約を介して、場合によってはトリガーの前(または代わりに)で実装する必要があります。どのようなプロシージャについての詳細がなければ、私はより具体的な助言を与えることはできませんが、ストアドプロシージャ本体のトランザクションに直列化可能な分離レベルを使用することで問題が解決できると考えています。また、更新の問題が発生しないように、rowversion列の使用を検討することもできます。
a1ex07と@webturner、あなたの返信ありがとうございます。一意の制約を使用することの難しさは、注文を処理する別のシステムに要求を送信する前に、潜在的な二重引用符をチェックしていることです。したがって、レコードの一意性は目標ではありません。目標は、既に送信され、確認されている場合、他のシステムに注文を提出しないことです。したがって、私はプログラム的な決定を下すために今受け取ったものを複製する行が存在するかどうかを知る必要があります。そういうわけで私はこの特別なケースでは未読のことを考えていたのです。それがより明確になることを願っています。 – user1102311
@webturnerが示唆しているように、これは競合状態であることが判明しました。 SQL Serverで同じデータにアクセスしていたWCFスレッド間でした。貴重な情報もa1ex07にもありがとう。 – user1102311
- 1. SQL Serverの遅延制約
- 2. 遅延ジョブのバッチ挿入
- 3. SQL Server:データの遅延バージョンがあります
- 4. SQL Serverのユニオンオペレータの時間遅延
- 5. SQL Server 2005と.NETの間の遅延
- 6. データがSQL Serverの別のテーブルに挿入されたときにデータをテーブルに挿入
- 7. SQL Serverのデータの結合と挿入
- 8. Entity Frameworkエンティティの遅延コミット
- 9. asp.netからSQL Serverに挿入されたデータを検証する方法
- 10. SQL Serverの - を挿入するために挿入/後 - ロールバック
- 11. SQL Server 2008にUTF8データを挿入
- 12. SSIS。 MS ACCESSからSQL Server 2014 Azureへのデータの挿入非常に遅い
- 13. SQL Server:データが挿入されていません
- 14. SQL Server - データを挿入した後の空の列
- 15. SQL Serverで挿入された行のサイズを取得
- 16. SQL Serverへのパラメータ化された複数行の挿入
- 17. SQL ExpressとSQL CE、遅延/遅延
- 18. SQLをSQL Serverに挿入
- 19. モデルに大きなデータセットを挿入するDjango - コミットを遅延させる方法
- 20. SCTP:100msecの遅延でデータを送信する際の問題
- 21. Retrofitを使用したsqliteデータベースの挿入遅延
- 22. 遅延ロードされたモジュール内の2つの遅延ロードモジュール
- 23. エラーSQL Serverのテーブルにデータを挿入する
- 24. vb.netから別のSQL Serverにデータを挿入するトランザクション
- 25. sql server table1からtable2にtable1 = table3のデータを挿入する
- 26. SQL Serverの挿入515
- 27. SQL Serverクエリの挿入
- 28. SQL Server:トラックテーブルの挿入
- 29. SQL Serverの挿入エラー
- 30. 挿入前のSQL Serverトリガー
SQLサーバーが挿入をブロックしている可能性があるサーバー上で起こっている他の作業のために、半分の遅延が発生することは確かです。 – HLGEM