問題タブ [table-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.
mysql - mysql コマンド ライン経由で Innodb テーブルに手動で読み取りロックまたは書き込みロックを適用できない
テーブルがロックされたケースでシナリオをテストしようとしています。
これらのような読み取りおよび書き込みロックを適用しようとしました-
しかし、この後書くことができました -
読み取りロックも機能していません。ロックを適用した後、選択クエリを正常に実行できました。
テーブルに書き込みロックが適用されている可能性があるときに、大量のデータのテーブル移行を行うときに、アプリケーションの動作 (安らかな API) をテストする必要があります。したがって、コマンド ラインでロックを設定できれば、API にも適用されると思います。アプリケーションでmysqlにログインするのと同じユーザーを使用してコマンドラインにログインしています。
何か不足している場合はお知らせください。
テーブルは InnoDb 型です。
php - PDO 一般エラー: 2014 テーブルをロックしようとすると、他のバッファリングされていないクエリがアクティブな間、クエリを実行できません
私は誰かの古い古いコードを使用から使用に更新mysql()
してPDO
います。ある場所にはLOCK TABLES
、2 人のユーザーが同時に同じデータにアクセスするのを防ぐコマンドがいくつかあります。を実行するLOCK TABLES
と、PDO
「一般エラー: 2014 他のバッファリングされていないクエリがアクティブな間はクエリを実行できません」がスローされます。
他の変数を排除するためにいくつかのテスト コードを作成しました。システムは Ubuntu 18 / PHP 7.2 / MySQL 5.7.27 で実行されます。
$_DB->beginTransaction
の前後にLOCK TABLES
を追加しようとしまし$_DB->commit
たUNLOCK TABLES
が、それでも同じエラーが発生します。
ATTR_EMULATE_PREPARES
と のさまざまな組み合わせを試しMYSQL_ATTR_USE_BUFFERED_QUERY
ましたが、違いはないようです。
sql - 複数のユーザーが同時にテーブルに書き込みおよび読み取りを行うことでテーブルがロックされるのを防ぐにはどうすればよいですか?
私は、ユーザーごとのセッションごとにSQLサーバーに対して常に書き込み、読み取り、および削除を行うグループ用に作成したプログラムを持っています。個人によって書き込まれたり削除されたりしているすべてのデータが別の人に必要とされることはないため、何が書き込まれたり削除されたりするかについて心配する必要はありません。各ユーザーの書き込みは一意の ID で区切られ、すべてのクエリはその一意の ID に基づいています。
複数のユーザーが同時に同じテーブルから行を書き込み/削除できるようにしたい。を使用してデータの書き込み中にセッションを読み取れるように設定できることはわかっていますSET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
。
質問:
つまり、複数のユーザーが同時に同じテーブルに書き込み/削除することはできますか?
これが不可能な場合の現在の私の唯一の考えは、ユーザーセッションごとに一時テーブルに書き込むようにツールを設定することです。しかし、1日に何百回も一時テーブルを常に作成および削除するのは効率的なオプションではないと思います。