問題タブ [table-lock]

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 投票する
1 に答える
4042 参照

java - Hibernate - ポリモーフィック クエリで親テーブルにロックを適用する

私は2つのオブジェクトを持っています:

これらの各テーブルは、データベース内の別のテーブルに対応しています。Hibernate を使用して ChildObject をクエリしています。これにより、親オブジェクトの値が入力されます。

マッピング ファイルを次のように定義しました。

休止状態を使用して、2 つのテーブルを問題なくクエリできます。

私が使う

これはすべて基本的な休止状態のものです。ただし、私が問題を抱えている部分は、クエリ内のすべてのテーブルにロックを適用する必要があることです。

query.setLockType("child", LockMode.?) を使用して、子オブジェクトのロック タイプを設定できます。ただし、親テーブルにロックを設定する方法が見つからないようです。

私は Hibernate を初めて使用し、まだいくつかの精神的な障害に取り組んでいます。問題は、親テーブルをロックするにはどうすればよいかということです。

私が設定したポリモーフィック構造を元に戻さずにこれを行わなければならないことを回避する方法があるかどうか疑問に思っていました.

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

php - mysqlロックの質問

mysql/myisamロックの調査/調査。appAでロックを設定し、appBでtblロックを決定/検出する方法の良い例を見つけようとしています。

グーグルを検索しているが、あまり見られないので、何かが足りないに違いない。

このプロセスを示すphpアプリを作成します。

ポインタ/考え/ありがとう..

-トム

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

ruby-on-rails - 複数のdelayed_jobを実行するRails - ロックテーブル

おい。バックグラウンド処理にはdelayed_jobを使用しています。8 つの CPU サーバー、MySQL があり、7 つのdelayed_job プロセスを開始します

Q1: 2 つ以上のdelayed_job プロセスが同じプロセス (データベースdelayed_jobs の同じレコード行) の処理を​​開始する可能性があるかどうか疑問に思っています。delayed_job プラグインのコードを確認しましたが、あるべき方法でロック ディレクティブを見つけることができません (ロック テーブルまたは SELECT...FOR UPDATE がありません)。

各プロセスは、lock_by 列で UPDATE を実行する前にデータベース テーブルをロックする必要があると思います。locked_by フィールドを更新するだけでレコードをロックします (UPDATEdelayed_jobs SET locked_by...)。本当にそれで十分ですか?ロックは必要ありませんか?なんで?UPDATE は SELECT より優先度が高いことは知っていますが、この場合は効果がないと思います。

マルチスレッドの状況についての私の理解は次のとおりです。

場合によっては、より多くのジョブが同じ情報を取得して、同じプロセスの処理を開始できると思います。

Q2: 8CPU サーバーの場合、delayed_jobs の 7 は適切な数ですか? はい/いいえ。

10倍!

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

sql - Mysql 構文のヘルプ

クエリ:

mySQL db で最適化されたクエリに nolock オプションを使用しようとしていますが、何らかの理由で上記のクエリが機能せず、受け取ったエラーは

SQL 構文にエラーがあります。

何かご意見は?

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

sql - Persistent SQL Table lock from C#

テーブル レベルで永続的な SQL (SQL Server 2005) ロックを作成しようとしています。指定されたテーブルを更新/クエリしていませんが、トランザクションが投稿されないようにする手段として、サードパーティのアプリケーションがロックされたテーブルを更新するのを防ぐ必要があります (ロックしたいテーブルは、トランザクションに干渉するキーです)私の処理)。

私の経験から、テーブルは特定のトランザクションが発生している間だけロックされます。何か案は?

サード パーティの開発者は、この機能を機能強化として記録していますが、メジャー リリースをロールアウトしている最中であるため、少なくとも 6 か月は待つことができます。彼らのソフトウェアは崩壊するだろうから、これが素晴らしい解決策ではないことはわかっているが、それは我々がその結果を受け入れても構わないと思っているほど重要な性質のものである.

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

sql-server - SQL Server の指定されたテーブルにテーブル ロックを手動で追加する

あるテーブルに挿入したいのですが、別のテーブルへの挿入を防ぎます。たとえば、INSERTING のためにテーブル a を LOCK し、テーブル b に INSERT してから、テーブルaを UNLOCK することできます。

TABLOCK は、INSERTING しているテーブルのみをロックできます。

ありがとう

マーティン・ピルチ

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

mysql - myisamは、「select」クエリを処理している場合でも、テーブルをロックしますか?

私は本を​​読んHigh Performance MySQLでいます、それは言及しています:

MyISAMはselecting何かがあったとしてもテーブルロックをかけますか?誰かが少し説明できますか?

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

mysql - ストアドプロシージャの「ロックテーブル」に代わるMySQL

行がまだ存在しない場合はテーブルに行を挿入する必要があり、ストアドプロシージャを使用してこれを行う必要があります。したがって、行がすでに存在するかどうかを確認するために選択し、その後に挿入を続ける必要があります。私が避けたいのは、ストアドプロシージャの2人の呼び出し元が行が存在しないことを確認し、両方が行を挿入しようとする競合状態です。

これを解決するための私の最初の考えは、テーブルをロックすることですが、残念ながらLOCK TABLE、ストアドプロシージャで発行することはできません。

クライアント(C#)で重複キー挿入例外をトラップしないようにしたい。

テーブルまたは代替ソリューションをロックする方法はありますか?

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

sql-server - MS Access は SQL Server のテーブルをロックしますか?

SQL Server を 2 年以上使用していますが、MS Access は初めてです。MS Access を SQL Server にアクセスするための潜在的なフロントエンド/ポータルとして検討し始めたところです。同僚と話していたところ、フォームが「正しくコーディングされていません。私は以前にテーブルロックを経験したことがあり、それらがどれほどイライラするかを理解できます. 私の同僚は、問題を解決するために「パススルー」と呼ばれるものを使用すると言いました。何が起こっているのか、「パススルー」がどのように問題を解決するのかを説明して、誰か助けてもらえますか?

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

php - 継続的に INSERTing table1 または CURSOR (または代替) で cron または TRIGGER を使用して、ロックせずに 1m 行の InnoDB table2 を UPDATE しますか?

これを実装する方法に関する推奨事項はありますか?

table1 は常にINSERT編集されます。これには、 table2 のすべての行UPDATEを各 table1 で d する必要がありますINSERT。また、MySQL が (PHP の計算速度と比較して) 最も効果的かどうかはわかりませんが、table2 の各行にもアルゴリズムを適用する必要があります。

ユーザーがINSERT.

したがって、私の問題は、で合計テーブルを使用すると、UPDATE大量のロックが発生することです (または、そのキーの一部がdになるため、テーブル全体を複合主キーで ing するTRIGGERときの InnoDB のロックから理解できます)。UPDATUPDATE

INSERT現在、cron ジョブを使用することを考えていますが、スケジュールではなく table1のユーザーに対して実行したいと考えています。

だから私は多分考えていたCURSOR...

table2で最速かつ「絶対に」ロックしない方法は何ですか?

よろしくお願いします!

テーブル構造

table2 はすべてINT速度の s です。ただし、2 列の主キーがあります。それらの列の 1 つはUPDATEd の内容です。そのキーは、同様に重要なラピッドSELECTs 用です。

table1 の平均行数は、table2 の行数の約 2.5 倍です。

table2 は実際には非常に小さく、約 200 MB です。