タグ付けされた質問 「locking」

ロックを要求するプロセスに一時的に排他的なアクセスを許可することにより、共有データまたはリソースへの同時アクセスを管理するメカニズム。

1
WHERE句のないUPDATEはPostgreSQLのテーブルをロックしますか?
テーブル全体UPDATE(WHERE句を指定しない)はPostgreSQLのテーブルをロックしますか?たとえば、行が削除または挿入されるのを防ぎますか? たとえば、実行した場合 、実行中にUPDATE t1 SET key = 'value' 新しい行が挿入されないことを期待できますか?t1UPDATE いいえの場合UPDATE、開始後に表示された行も更新されますか?(キーのDEFAULT 'value'定義にはありません)

1
コミットされた読み取りスナップショット分離(RCSI)で取得された共有ロック
LCK_M_SRCSIを使用すると、共有ロックの待機()が発生します。私の理解では、SELECTsRCSIを使用するときに共有ロックを必要としないため、これは発生しないはずです。 共有ロックを確認するにはどうすればよいですか?外部キーが原因ですか?

1
SQL Serverは、UPDATE中に新しい値と古い値の両方をどのように返しますか?
高い同時実行中に、意味のない結果を返すクエリの問題がありました-結果は、発行されるクエリのロジックに違反しています。問題の再現にはしばらく時間がかかりました。私は再現可能な問題を数握りのT-SQLにまで掘り下げました。 注:問題が発生しているライブシステムの部分は、5つのテーブル、4つのトリガー、2つのストアドプロシージャ、および2つのビューで構成されています。実際のシステムを簡略化して、投稿された質問をはるかに扱いやすいものにしています。物事が整理され、列が削除され、ストアドプロシージャがインラインになり、ビューが共通のテーブル式に変わり、列の値が変更されました。これは長い説明ですが、これはエラーを再現するものの、理解するのが難しい場合があることを示しています。なぜ何かがそのように構造化されているのか不思議に思わないでください。私はここで、このおもちゃモデルでエラー状態が再現可能に発生する理由を理解しようとしています。 /* The idea in this system is that people are able to take days off. We create a table to hold these *"allocations"*, and declare sample data that only **1** production operator is allowed to take time off: */ IF OBJECT_ID('Allocations') IS NOT NULL DROP TABLE Allocations CREATE …

1
テーブルレベルのロックエラーの原因は何ですか?
データベースはすでに2回停止していて、原因を探そうとしました。 show processlist Waiting for global read lock | INSERT INTO {myisam_table} ... ここではディスク領域がいっぱいだったので、それをもう少し与えると問題は終わったと思いましたが、翌日の正午に再びハングしました。 show processlist Waiting for table level lock | UPDATE {myisam_table} ... 何が原因ですか? Mysqlデフォルトエンジン:InnoDB。 データベースには、MyISAMエンジンとInnoDBエンジンの両方を備えたテーブルが混在しています。 ここに投稿されたログ: http://arturito.net/2013/08/28/mysql-waiting-for-table-level-lock-errors/

1
sp_configureのブロックされたプロセスしきい値の変更によるパフォーマンスへの影響
私は運用サーバーで発生しているすべてのブロッキングを識別することを任されています。これを達成するための私の計画は使用することです EXECUTE sp_configure 'blocked process threshold', 5 サーバー側のトレースと組み合わせて、ブロックされたプロセスレポートを収集します。 このアクティビティがパフォーマンスに影響を与えることを理解しています。これが何であるかを数値化する方法を見つけたいと思います。

5
SQLサーバーでの長時間のブロックを自動的に通知できますか?
週に1回程度、Access 2003フロントエンドからの長期にわたる読み取りロックが原因で、SQL Server 2005データベースのブロッキングチェーンを解決する必要があります。ロックは、ユーザーが特定のフォームを開くたびに解除され、ユーザーがフォームのスクロールを終了するか、フォームを閉じると解放されます。多くのユーザーがこのフォームを参照として開いているので、これらのロックはしばらく保持されます。テーブルを更新するとブロッキングが発生し、最初のロックを待機しているため、突然このテーブルから誰も選択できなくなります。多くのアプリがこのデータに依存しているため、これは私たちにとって非常に問題です。このロック動作は、リンクテーブルでのAccessの動作の一部であることを理解しています。 私はアクティビティモニターから問題を解決してきました。ヘッドブロッカーであるSELECTプロセスを見つけたら、そのプロセスを強制終了します。これは、手動で行うのに時間がかかるだけでなく、反応的であるためにも問題です。私がそれを聞いたときまでに、それは多くの人にとってすでに問題になっています。 これらの長期にわたるブロッキングチェーンを自動的にチェックする方法があり、メールで送信されるか、問題が自動的に解決されるかどうかを知りたいです。ロジックは単純明快です(「このSELECTクエリに一致するプロセスが1分以上ブロックされている場合は、通知/強制終了する」)が、SQL Serverでこれを実装する方法がわかりません。 価値があることについては、適切な解決策はアプリを修正または書き直すことだと思います。ただし、部局の政治上の理由により、これは今後数か月間は選択肢になりません。そのため、私は一時的なギャップを探しています。

4
SQL Serverのロックと同時実行性を理解するためのリソース
地雷のロックと同時実行性に関する最近の質問で実証されているように、ハードです。 中級から上級のSQL専門家がこれらについて徹底的に調査し、適切に学習することで、この領域に固有のすべての落とし穴をうまくナビゲートできるようにするための優れたリソースを提案できますか? チュートリアル、ブログ、マニュアルページ、PASSセッションなど、あらゆる種類のリソースを考えています。

3
Postgres、MVCC、およびロック
次のような一連のSQLステートメントがあります。 BEGIN; SELECT counter FROM table WHERE id=X FOR UPDATE; REALLY COMPLEX QUERY; UPDATE table SET counter=Y WHERE id=X; END; 値を再計算している間、カウンターが読み取られないようにしたいのですが、Postgresのドキュメントによると、「行レベルのロックはデータのクエリに影響を与えません。それらは同じ行への書き込みのみをブロックします。」 質問: 読み取りを妨げない場合の「排他的」行ロックの意味は何ですか?他のトランザクションが共有ロックを取得するのを防ぐだけですか? SELECT ... FOR SHAREを使用して行を読み取ると、「排他的」ロックと同じ影響がありますか? テーブル/スキーマ/データベースのMVCCをオフにして、インプレース書き込みを許可することは可能ですか?

2
データセットクエリでNOLOCKヒントを設定するためのオプション
いくつかのコンテキスト: 最初に、クエリにロックのヒントを含まず、レポートを「まっすぐ」に書きました。より大きなレポートでは、これによりロックの問題が発生することがあります。で、最初の私たちは、使用してこれを是正WITH (NOLOCK)クエリ内のテーブルのためのヒントを。 それはテーブルのいずれかのヒントを忘れることは簡単です、非常に目障りだし、(b)は()ので、私たちは第二のアプローチの設定に移動TRANSACTION ISOLATION LEVELしREAD UNCOMMITTED、各データセットのクエリの先頭に(罰金です)。 ご想像のとおり、いずれかのデータセットのヒントは忘れがちです。だからこれは質問につながります: 質問:ヒントをレポートクエリと共に送信するためのオプションは何NOLOCKですか? PS。これはある程度XY問題(クエリの最適化、運用データベースに関するレポートの作成など、他の多くのXオプション)であることに気付きましたが、それでもそれ自体を有効な質問にしようとしました。 オプション: 上記のオプションを以下に示します。機能するかどうかについて知りたいオプションが追加されています。 WITH (NOLOCK)各テーブルのヒントを設定します。(目障りで、非常に忘れやすい) READ UNCOMMITTEDクエリ全体に対して分離レベルをに設定します。(まだ忘れやすい) これをレポートレベルで指定することはできますか?たとえば、1つのレポートのすべてのデータセットクエリがロックなしで実行されるようにします。 これを他のSSRSレベルで指定することは可能ですか?たとえば、これを特定のレポートフォルダに設定したり、拡張機能を利用したりできますか? これをデータソース/接続文字列レベルで指定することは可能ですか?たとえば、関連するすべてのレポートで特定の「No-lock-data-source」を使用していますか? 前のオプションに関連:特定の「no-lock-sql-user」(接続で使用されるもの)にデフォルトのロックヒントを指定することはおそらく可能ですか? ??? 実行可能なオプションはどれですか?私が見逃したオプションはありますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.