私のアプリケーションでは、データの書き込み要求が来るとすぐに、データベースへの挿入を実行したいと考えています。
InnoDB エンジンを使用しています。
挿入には排他ロックが必要なため、現在の読み取りクエリが共有ロックを持っている間に、他の読み取りが再び共有ロックを持ち、書き込み操作が長時間待たなければならない可能性があります。
キューに書き込み操作がある場合、読み取り操作が共有ロックを取得しないようにします。現在の書き込み要求の前に開始された読み取りが完了するとすぐに、書き込み操作を実行する必要があります。その後、他のすべての読み取り操作が行われます。
これはどのように実装できますか?
編集
私は InnoDB テーブルを使用しており、テーブル ロックを実装していないため、選択と挿入の間に競合が発生することはありません。選択して更新します。(selectとinsertの間にも競合がある可能性がある場合は修正してください)
MySQL では、更新は選択より優先されます。ただし、いくつかの読み取りクエリが実行されている場合は、更新クエリが続き、いくつかの読み取りクエリが続きます。その場合、更新後に来る読み取りクエリは、ここで説明されているように更新が完了するのを待ちますかhttp://dev.mysql.com/doc/refman/5.0/en//table-locking.htmlまたは共有ロックを取得します更新クエリが起動される前にあった読み取りクエリと一緒に?