問題タブ [nolock]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql-server-2008 - (NOLOCK) を使用してテーブルをコピーすると、SQL Server がストアド プロシージャに長時間かかるのはなぜですか
データベースに2つの大きなテーブルがあり、テストのためにテーブルをコピーしました(select * from online_table to backup_table with (NOLOCK) )postfix _backupを使用して同じDBにコピーしました。バックアップ テーブルで、nvarchar(50) 列の datetime 形式への変換を開始します。それらの後、主キーといくつかのインデックスを設定しました。インデックスのコピー、変換、およびセットアップを開始する前に、データベース バックアップを [簡易] に設定し、ステップの後で完全バックアップ モードに戻します。
問題は、データベースがオンライン テーブルで非常に遅いことです。2 つのテーブルを結合するストアド プロシージャは、多くの場合、完了するまでに 1 分以上かかります。通常は 1 秒以内に終了します。説明した手順の 1 時間後、ストアド プロシージャの速度に問題はなくなりました。それらは以前と同じように機能し、インデックスはすべて良好で、断片化は 1% 未満です。テーブルを nolock でコピーするため、オンライン テーブルには影響しません。誰かが問題を知っていて、おそらく解決策を持っていますか? または、この手順を実行する他の方法がありますか?
sql - 単純な選択ですべての行が返されず、sp_who がブロックを返さない
少量の行を持つテーブルで単純な選択を実行していますが、それは永遠に実行されています。実行すると問題なく返されることがわかりました:
ただし、実行すると永久にハングします。
sp_who
またはを実行するsp_who2
と、ブロックする人は誰もいません。なぜこれが起こるのですか?どうすれば修正できますか?
sql - クエリ レベルでの NOLOCK
SQL サーバー テーブルを実行するためのクエリがありますが、正確な数は気にしません。そこで、そのクエリに NOLOCK を指定したいと思います。ただし、クエリ自体は複数のサブクエリと複数の結合で構成されています。だから、NOLOCKをあちこちに置くのはかなり汚いです。
ただし、テーブルのトランザクション レベル「READ-UNCOMMITTED」を設定することはできますが、他のすべてのクエリでも同様に変更されます。その特定のクエリのトランザクション レベルを変更したいのですが、複数の場所でクエリに NOLOCK を指定する必要はありません。それは可能ですか?
mysql - Nolock の MySql READ UNCOMMITTED の使用をテストする方法
次のクエリを使用しています。
テーブルには、多数の書き込み操作と負荷の高い読み取り操作があります。読み取り操作の影響を最小限に抑えるために、非ロック読み取り操作を使用したいと考えました。MySqlでは、「READ UNCOMMITTED」で行われます(私が読んだものによると)。
このコードが実際に機能しているかどうかをテストするには?
sql-server-2008 - rowversion 列の値はいつ更新されますか?
rowversion 列を持つテーブルがあり、次のように更新されるとします。
テーブル WITH(NOLOCK) に対してクエリを実行するとどうなりますか? クエリの結果が "Bob" (古い値) と "EFGH" (新しい行バージョン) になる可能性はありますか?
基本的に、私が求めているのは、rowversion が実際に更新されるのはいつですか? 他のすべての列が更新された後、rowversion 列が常に更新されるという保証はありますか?
sql-server - dapper-extensions GetList() with (nolock)
with (nolock)
を使用するときにdapper に追加するように指示できるかどうかは誰にもわかりconnection.GetList<TView>()
ませんか?
私はこれを CQRS モデルの R として使用していますが、うまく機能しますが、テーブルのロックアウトが始まるのではないかと心配しています。可能であれば、トランザクションをミックスに追加したくありません。
.net - WITH(NOLOCK) の最良の代替手段は?
私は C#.Net でセルフ プロジェクトを作成しています。3 層アプリを使用して、SQL ステートメントをトランザクション対応にしたくありません。これらのステートメントは複数のストアド プロシージャで使用されています。WITH(NOLOCK) を使用しています。トランザクション中に挿入または更新に使用されたテーブルをクエリするためのアプローチであり、C# 側では TransactionScope を使用していますが、最近、WITH(NOLOCK) を使用するとファントムにつながる可能性があるため、推奨されないことを読みました。ダーティで一貫性のないデータを読み取ったり、使用したりします。私の質問は、トランザクション中に挿入または更新されたデータを使用するために、データベース側またはビジネス コード側のどちらであるかを選択する場合、トランザクション操作の観点から最善のアプローチは何ですか?
sql-server-2008 - SQLサーバーでテーブルレベルでロックを適用する方法
SQL Server 2008 R2 エディションを使用しており、テーブルからデータを選択する際にテーブル レベルでロックを適用したいと考えています。
NO_LOCK を適用すると DIRTY READ 問題が発生する可能性があるため、トランザクション データではなくドメイン データのみを含むテーブルに NO_LOCK を適用する必要があります。つまり、変更される頻度が非常に低いデータです。
ドメイン テーブルに LOCK を適用する方法を提案してください。
sql-server - 私の場合、With(NoLock) ヒントは危険ですか?
これまで何度も with(nolock) ヒントを読んで使用してきましたが、特定のケースについて質問があります。
私の場合、1 つのデータベースを参照および更新するコードのセットが 1 つあります。
このコードは、シングル スレッドで実行することを意図していました。数か月前、彼らはコードを変更せずにマルチスレッド化することを決定しました。彼らが行った方法は、それぞれの異なる「コード プロセッサ」に異なる店舗グループを管理させることでした。
たとえば、プロセッサ 1 はストア 1 から 20 を処理し、プロセッサ 2 はストア 21 から 40 を処理します。
デッドロックが発生し始めるまで、すべてが順調に見えました。デッドロックは常にページ上にあります...ロックが行のみにある場合、あるプロセッサからのデータが別のプロセッサからのデータと競合することはないため、デッドロックは発生しません。その理論に基づいて、ロックする必要のないすべての選択に With(Nolock) ヒントを配置することにしました (まだ製品化されていません)。
私の同僚がこの記事を持ってきて私を怖がらせるまで、すべてがうまくいき、ダンディに見えました...それから私はそれを読みました...
私の場合、With(Nolock) ヒントを使用する危険性はありますか?データがプロセッサ間で競合することはありませんか?
symfony - Doctrine2 および SQL Server との関連付け (結合) で lockmode:none を実行する方法
Doctrine2 を使用してクエリに With(nolock) ヒントを追加しようとしています。FROM 句の (最初の->setLockMode(LockMode::NONE)->getSQL();
) テーブルにWITH(NOLOCK) を追加しました。説明します:
期待される:
私が本当に得たもの:
考えられる解決策:
しかし、分離レベルwith(nolock)
を使用するよりも行うのが同じかどうかはわかりません。READ_UNCOMMITTED
編集:で投稿されたトランザクションを開始することは、クエリのすべてのテーブルでwith(nolock)をTRANSACTION_READ_UNCOMMITTED
実行することと同じです。