問題タブ [database-locking]

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.

0 投票する
0 に答える
739 参照

c# - Entity Framework for SQL Compact Edition 3.5 を使用すると、接続文字列の mode=exclusive プロパティが考慮されない

Entity Framework で SQL Server Compact 3.5 エディションを使用しており、 http://msdn.microsoft.com/en-us/library/ms171817.aspxに記載されているように、データベースを排他的にロックしたいと考えています。

ただし、これを接続文字列で Entity Framework に渡すと、これはまったく考慮されません。

次のような接続文字列の例

誰かが以前にこの問題に遭遇し、これを解決する方法を見つけた場合は、私に知らせてください.

ありがとうアジ

0 投票する
3 に答える
18991 参照

database-locking - データベースの明示的ロックと暗黙的ロックの違いは何ですか?

データベースの明示的ロックと暗黙的ロックの違いは何ですか?

0 投票する
2 に答える
3966 参照

sql-server - UPDATEが無関係な行のSELECTをブロックするのはなぜですか?

スクリプト[1]で定義されたテーブルを持って、SSMSの2つのウィンドウでスクリプトを実行します

および1)後

1)ウィンドウのトランザクション分離レベルとは関係なく、2)のSELECTはブロックされます。
なんで?

UPDATEの分離レベルは、他のトランザクションのステートメントに影響を与えますか?

最高の分離レベルは、2)のデフォルトのREADCOMMITTEDです。
範囲ロックは原因ではありません。SELECTはCOMMITTEDREADS(NONREPEATABLE READS)およびPHANTOM READS(Repeatable Reads)の問題に悩まされているはずです[2]
どうすればそれを苦しめることができますか?

SELECTをブロックせずにUPDATEを行うにはどうすればよいですか?

[1]

[2] http://en.wikipedia.org/wiki/Isolation_(database_systems
) をクリックすると、コピーして貼り付けるか、末尾を追加します)

更新:
SELECT WITH(NOLOCK)はブロックされていません...

Update2:
または、同じことで、コミットされていない読み取り

UPDATEはSELECT行とは異なることに注意してください。
同じ場合でも、この動作は分離レベルの説明と矛盾します[2]

ポイントは次のとおりです。

  • 同じ(UPDATE-d)テーブルから他に誰がSELECTを実行するのかわからないが、行の更新とは無関係であると仮定します。
  • 分離レベルを理解する[2]

SQL Server 2008 R2 Dev

0 投票する
1 に答える
3134 参照

php - コードイグナイターモデルで複数の関数にわたってデータベースロックを実装する方法は?

短期間に多くのユーザーがチケットを予約し、合計で一定数しか予約できないシステムを作っています。600 枚のチケットが利用可能で、すべてが 3 時間以内に予約される可能性があるとします。

理想的には、予約の上限に達しないようにしたいので、予約を作成する前に、利用可能なチケットの数に対して予約が可能かどうかを確認しています. 重要なのは、チケットの制限を超えないようにするために、そのチェックとユーザーへのチケットの割り当ての間に更新が行われないようにする必要があることです。

これを達成するためにmysqlテーブル書き込みロックを使用しようとしていますが、codeigniterフレームワーク内でこれを実装する際に問題が発生しています。これを処理するモデル内で、いくつかの関数を作成しました。1 つは予約を作成するためのもので、もう 1 つはさまざまな種類のチケットの数をカウントするためのものです。問題は、チケット カウント機能がロックされているため、同じデータベース セッションを共有していないように見えることです。

実行順序は

  • コントローラーで $this->model_name->create_reservation を実行します
  • model_name->create_reservation でロック クエリを実行します
  • model_name->create_reservation のコール カウント メソッド
  • おそらく別のデータベースセッションを使用しているため、カウント関数(model_nameクラスのメソッド)がロックアップしますか?

データベース ライブラリは、$this->load->database(); を使用してモデルの __construct メソッドにロードされます。

何か案は?

0 投票する
1 に答える
706 参照

sql-server-2008 - SQL Server 2008 ストアド プロシージャを同時に実行すると遅延が発生する

同じアプリケーションの 2 つの異なるインスタンスから同じストアド プロシージャを同時に実行するとタイムアウトするように見える問題があり、それを解決するために何かできることはないかと考えました。

問題は、SQL Server 2008 がそれ自体を処理し、行をロックし、SP を実行する方法にあると思います。アプリはADODB.CommandSP の実行に使用します。

App.exe1つのサーバー上で複数回実行されている 1 つの VB6 exe ( ) があります。このアプリは、そのアプリの次のシーケンス番号を返すデータベースのストアド プロシージャを呼び出します。tbl_SequenceNosこのシーケンス番号フィールドは、アプリケーションのインスタンスに対して一意です。実行中のアプリケーションのインスタンスごとに、表 ( ) に 1 つの行があります。

たとえば、running:App[a].exeApp[b].exe

tblSequenceNos次のようになります。

次のシーケンス番号を取得するためのストアド プロシージャは比較的単純です。

と の両方が値を取得するためにこの手順を実行しようとするとApp[a].exe、約 30 秒間ハングします (ADO タイムアウト?)。App[b].exeNextSequenceNo

各アプリはお互いの行を見ることがないので、特別な Locking を指定しなくても、これは同時に動作すると考えました。足りないものはありますか?テーブル全体やページではなく、行のみをロックするように指定する必要があるのではないかと思いましたか? - sql2008 のデフォルトの動作がわかりません。

どんな助けでも大歓迎です!前もってありがとう アンドリュー

0 投票する
1 に答える
451 参照

mysql - トランザクションなしで「LOCK IN SHARE MODE」できますか?

共有モード ロックでロックを作成するには、トランザクションを開始する必要がありますか?

つまり、どちらか、

または、

ありがとう

0 投票する
2 に答える
21761 参照

sqlite - SQLITE_BUSYデータベースファイルが改札でロックされています(データベースがロックされています)

私は改札でプロジェクトをやっています問題を解決する方法。そのようなメッセージに出くわしました:WicketMessage:コンストラクターを使用してページをインスタンス化できませんpublic itucs.blg361.g03.HomePage()

根本的な原因:

java.lang.UnsupportedOperationException:[SQLITE_BUSY] itucs.blg361.g03.CategoryEvents.CategoryEventCollection.getCategoryEvents(CategoryEventCollection.java:41)でデータベースファイルがロックされています(データベースがロックされています)

itucs.blg361.g03.HomePage。(HomePage.java:71)で

java.lang.reflect.Constructor.newInstance(Constructor.java:525)で

0 投票する
1 に答える
737 参照

python - SQlite3 ロック ウィンドウ

Python アプリケーションに SQLite 3.7 を使用すると、ロック (OperationalError) が発生することに気付きました。ORM に SQLalchemy を使用しています。この問題は Windows で発生します。アプリケーションと同じマシンで DB を使用しています。

ubuntuでは問題なく動いているようです。何が問題なのだろうか?古いバージョンの sqlite には、この問題が修正されていましたか?

いくつかの考え:

- Windows NFS for SQLlite にはロックの問題がありますが、ローカル ファイル システムを使用しているため、この可能性は破棄されます。

  • マシンで実行されているウイルス対策は、更新時にファイルを読み取るため、ロックを引き起こす可能性があります。データベースのロックが解除されることはありません(コマンドライン経由でDBにアクセスしている間、5分ほど待ちました)。これは、ハングしているプロセスがロックを保持していたのか、プロセスが強制終了されたのかを考えさせます。しかし、DBにアクセスしていた唯一のプロセス(pythonボトルサーバー)が実行されていたため、そうではなかったようです。単一プロセスの Apache で実行されています。
0 投票する
3 に答える
4416 参照

mysql - inno db 分離レベルとロック

innodb トランザクションに関するマニュアルを読んでいますが、まだ不明な点がたくさんあります。たとえば、次の動作はよくわかりません。

ここで、最後の更新コマンド (クライアント 2 内) が待機します。行1のみがロックされていると思われるため、コマンドが実行されると予想されます。クライアント 2 の 2 番目のコマンドが であっても、動作は同じですinsert。この例の背後にあるロックの背景 (ロックの場所と理由) を説明できる人はいますか?

0 投票する
1 に答える
598 参照

python - user_tablesをOracleでロックするにはどうすればよいですか?

次のクエリが数日間ハングしたように見えるマシンからのトレースバックがあります。

何がそのようなロックを生成する可能性がありますか?ユーザーはこのテーブルを変更できません。そして、正常に実行されたこのクエリの後続のインスタンスがたくさんありました。