MySQL の最適化: UPDATE と SELECT を単一パスで組み合わせる
タスクがワーカー アプリ間で分散される典型的なマルチアプリ シナリオでは、タスクの所有権を取得する一般的なソリューションには、2 つの個別の MySQL 操作が含まれます。1 つはタスクを所有者としてマークする UPDATE (グローバルに一意な識別子を設定する) で、もう 1 つはタスクのパラメーターを取得する SELECT です。このアプローチでは、特に大量の同時リクエストの場合に潜在的なパフォーマンスのボトルネックが発生する可能性があります。
これら 2 つの操作を MySQL サーバーへの単一パスに結合することで効率を向上させることはできますか?
答え:
はい、次のアプローチを使用すると、単一のサーバー呼び出しで目的の効果を達成できます:
<code class="sql">UPDATE `lastid` SET `idnum` = (SELECT `id` FROM `history` ORDER BY `id` DESC LIMIT 1);</code>
このクエリは両方の UPDATE を実行します。単一のアトミック トランザクションでの SELECT 操作。その仕組みは次のとおりです。
UPDATE 操作と SELECT 操作を組み合わせることで、個別の SELECT クエリの必要性がなくなり、ネットワークのラウンドトリップが削減されます。この最適化により、特に同時実行性が高いシナリオで、パフォーマンスが大幅に向上します。
以上がMySQL で UPDATE と SELECT を組み合わせてタスク所有権管理を強化できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。