問題タブ [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.
magento - Magento でデータベースのロックを実現する
読み取り中にレコードの値がロックされていることを確認する必要があり (特定の数のクレジットが利用可能かどうかを確認するため)、そのレコードを (ロックされている間に) 利用可能なクレジット数を差し引くために更新する必要があります。Magento 自体を使用してこれを行う最善の方法 (または任意の方法) はありますか?
sql - SQL Server はビュー オブジェクトのロックをどのように認識していますか?
SQL Server 2008ではV
、テーブルのビューがA
ありB
、おおよそ次のようになります
から読み取るV
と、クエリはベース テーブルに対してインテント共有ロックを取得しますが、ビュー オブジェクト自体に対してもインテント共有ロックを取得します。
テーブルに IS ロックが必要な理由は明らかであり、ビューの IS ロックにより、ビューの基礎となるテーブルへの同時変更が防止されることがわかります。それはいいです。
クエリ プランには、ビューについての言及は含まれていません。これは完全にコンパイルされており、この場合の結果のプランは、2 つのベース テーブルの行を単純に連結したものです。実際、クエリ プラン XML でビューについて言及されているのは、ステートメント テキストだけです。
テーブルに2 番目のビューを追加するとU
、 からの読み取りV
によってロックがかかることはありませんU
。A
これは、エンジンがとのすべてのビューで IS ロックを取得することを除外しますB
。
データベース エンジンは、ビューをロックすることをどのように認識していますか?
- ステートメント テキストは再度解析されますか?
- この情報を渡すために、クエリプランナーと基になる実行の間に他の情報チャネルはありますか?
詳細については、対応する質問をdba.stackexchange
参照してください。
android - Androidでの複数のデータベース接続(アクティビティとサービスから)
SQLiteデータベースを使用してAndroidアプリケーションにデータを保存したいと思います。問題ない。しかし、事前定義された間隔(毎日10、14、18、および22時)でIntentService
、データベースへのアクセスも必要とするを実行したいと思います。そしてここに問題があります:
の起動時にユーザーがアプリケーションを使用している場合、でアクティブなデータベース接続が1つあり、で1つが確立されるIntentService
ため、問題が発生します。したがって、データベースはロックされ、失敗しますよね?Activity
IntentService
IntentService
これらの場合、が現在の操作(、、など)を終了するのをIntentService
待ってから、正常に実行することをどのように達成しますか?Activity
SELECT
UPDATE
私のアクティビティでは、でデータベース接続を(経由でSQLiteOpenHelper
)開き、onCreate
で閉じonDestroy
ます。これは、その間にIntentServiceがデータベースで機能する可能性がないことを意味しますか?
ms-access - JET でロックされたレコードを更新しようとするとどうなりますか?
JET/DAO を使用してロックを使用して MDB データベースのレコードセットを開くdbPessimistic
場合、その時点で別のユーザーがそのレコードセットの行を更新しようとするとどうなりますか? エラーが発生しますか?それとも、JET/DAO は行のロックが解除されるまで試行を続けますか?
java - あるマシンでは「データベースがロックされています」というエラーが表示されますが、他のマシンではすべて問題ありません
Java で JDBC コネクタを使用して SQLite を使用すると、コードで常にこの「データベースがロックされています」というエラーが発生します。奇妙なことに、プログラム全体を圧縮した jar ファイルは Macbook では正常に動作しますが、Windows マシンで実行するとこのエラーが発生します。さらに:
プログラムにはスレッドが 1 つしかないため、おそらく同時実行の問題にはなりません。
コードは、エラーが発生する前にデータベースに対していくつかの操作を実行するため、これもファイルのアクセス許可の問題ではないと思います。
コードの詳細については説明しませんでした。必要ではないと思ったからです。ところで、その準備はできています。何か案は?
java - データベースブロッキングロックのHibernate削除/挿入
Hibernate 3.6.1.FINAL
に対して使用してOracle 11g
います。
データベースでブロッキングロックが発生しています。これは、Hibernateの予期しない副作用が原因であると考えられます。
これは、解決する必要のある重要な問題です。データベースのブロックがすぐにロックされ、トランザクションがタイムアウトになり、本番環境が停止するためです。
Hibernateが子のコレクションの舞台裏での削除と再挿入を実行できる特定のシナリオがあるかどうか、または削除/挿入でブロックロックを引き起こす可能性がある方法があるかどうかを調べようとしています。
考えられる原因についてのアイデア/提案/洞察を探していますが、必ずしも正確な答えではありません。
関係するエンティティとそのマッピングを分離しました。残念ながら、大量のコードを含む巨大なレガシーシステムがあるため、簡単な例を考え出す必要がありました。
Parent.hbm.xml
Child.hbm.xml
私たちのDBAは、次のことを確認していると報告しています。
ブロックされたSQL:
ブロッキングSQL:
これが私がこれまでに試したことです:
コードベースの完全な監査を行い、同じ主キーを持つ行を削除および挿入する場所がないことを確認しました。子のINSERTはすべて、IDをnullに設定して実行されます。この場合、シーケンスは一意のIDを生成します。
show_sqlをオンにしました。また、DBAは、開発中にバインド変数を取得できるように、すべてのDMLアクティビティをキャプチャするトリガーをChildに設定しました。
Hibernateはすべてを削除してから、バッグとリストに再挿入できるという次の記事を見つけました。
しかし、私はこれが起こっていないと判断しました。真ん中の子オブジェクトの1つを削除するテストコードを作成し(ORD = 5、ORD=0からORD=9の10個の子のコレクション)、Parentを保存しました。
DMLアクティビティテーブルで、削除された子に対して削除が発行され、ORDを正しい値に設定した残りの9人の子に対してUPDATEが実行されたことがわかりました。
私が言ったように、私は正確な答えを探していません。Hibernateの経験が豊富な人が、私が実行できる追加のパスや方法について洞察や提案を提供してくれれば、私は非常に感謝しています。
事前にどうもありがとうございました。
java - 特定のクエリに対するSQLite 'Database Locked'奇妙なエラー
私は Java のプロジェクトに取り組んでおり、SQLite データベースを変更する必要があります。私はそれに接続し、この奇妙なエラーを除いて、かなりうまく機能しています。
ステートメントs.executeUpdate("INSERT INTO STUDENTS VALUES('S0',11)");
と s.executeUpdate(c2);
は完全に実行され、行がデータベースに挿入されます。しかし、以下のステートメントになると、奇妙な Database Locked エラーが発生します。クエリを別のクエリに変更したところ、問題なく動作しました。終了ステートメントに到達すると、エラーが発生します。より正確には、上記のすべてのクエリ、つまり、ここのコードの最初のステートメントは問題なく動作します。
バグを見つけるのを手伝ってください。
sql-server - SQL Serverのデフォルトのロック粒度はどれくらいですか?
テーブルのヒントについてMSDNをよく読みましたが、ロックの粒度のデフォルトが見つからないようです。次のクエリがあるとします。
ご覧のとおり、ヒントを指定UPDLOCK
しましたが、やREADPAST
などの粒度のヒントは指定していません。TABLOCK
ROWLOCK
デフォルトで使用される粒度ロックレベルはどれですか?
sql - 大量のXMLを処理して、データベースと最高のパフォーマンスをロックしないようにする方法は?
いくつかのXMLを処理し、それを複数のテーブルに正規化するデータベースプロシージャがあります。私は巨大なデータベースの人ではなく、データベースのロックについてほとんど知らないので、私がしていることが完全に間違っているかどうか疑問に思っています。
まずresults
、次のようなものを含むテーブルがあります。
私のストアドプロシージャは次のようになります。
したがって、これに加えて、プロシージャは他のコンピュータベースの属性も処理します。これらはすべて同じresults.rawData
テーブル/列から取得されます。
このコードに関する私の質問は次のとおりです。
この処理中に、他のエントリがresults.rawDataテーブルに絶えず追加される可能性があります。XMLノードから選択して一時テーブルを作成するのに少し時間がかかります。これが発生している間にテーブルに挿入しようとすると、強制的に待機する可能性があるのではないかと心配しています。手順の最初にある列を使用して
resultId
、手順が一度に機能するデータのスコープを作成しようとしています。この処理時間中に、他のテーブルを照会できます(コンピューターに存在するソフトウェアを見つけるなど)。これらのテーブルに短い一括挿入を1回だけ行うので、問題はないと思います。
#TempSoftware
テーブルにはインデックスがなく、2つの列で結合しますNVARCHAR(MAX)
。このテーブルにインデックスを作成する価値はありますか?または、インデックスを作成するオーバーヘッドは、結合よりも悪くなります。私はここで愚かなことをしているのですか?
提案をありがとう。繰り返しますが、私はデータベースの大物ではありません。データベースですべての処理を直接実行する方が、生データをC#にプルバックし、処理を実行してデータベースに再挿入するよりも優れていると想定しています。
mongodb - なぜMongoDBでロックを使用するのですか?
MoongoDBはNoSql時代のものであり、LockはRDBMSに関連するものですか?ウィキペディアから:
楽観的同時実行制御(OCC)は、リレーショナルデータベース管理システムの同時実行制御方法です...
それで、なぜ私はPyMongois_locked
で見つけますか、そして非ブロッキング呼び出しを行うドライバーでさえ、ロックはまだ存在します、モーターは持っていis_locked
ます。