
MySQL で優先度の低い更新を実行する方法はありますか?
非常に高負荷のアプリケーションを実行していますが、文字通り何千人ものユーザーが同時に同じデータ レコードを更新しようとする可能性があります。これは主にセッション ベースの統計情報であり、リクエストに関連する待機時間がある場合はその大部分を無視できます。テーブル/行がロックされているかどうかを確認し、ロックされている場合は更新クエリをサーバーに渡さないようにしたいのですが、それは可能ですか?
答え1
どのデータベース エンジンを使用していますか? MyISAM ですか、それとも InnoDB ですか? MyISAM の場合は、次のコマンドを使用してロックを表示できます。
SHOW FULL PROCESSLIST;
ソース:mysql ロックを表示するにはどうすればいいですか?
ただし、別のアプローチを取ることをお勧めします。単一の競合ポイントを持つ代わりに、INSERT DELAYED を使用して、データ ポイントごとに新しい行を挿入するだけです。その後、1 日の終わり、またはデータが必要なときはいつでも、すべてをバッチ処理できます。これは、MyISAM、MEMORY、および ARCHIVE エンジン タイプでのみ機能することに注意してください。
出典: dev.mysql.com/doc/refman/5.1/en/insert-delayed.html
この質問は Stack Overflow に投稿すべきだと思います。おそらくそこではより良い回答が得られるでしょう。
-ジェフリー・リー