前提・実現したいこと
MySQLにて、同一クエリを同時に発行した場合、それぞれのクエリを並列に処理したいです
環境:MySQL 5.7.25(Docker)
トランザクション:REPEATABLE READ(デフォルト)
例:実行に2秒かかる遅めのクエリがあります(集計系のクエリを想定しています)
クエリ:サブクエリを含んだSELECT文(FOR UPDATEなどのロックに関する処理はありません)
前提:上記のクエリを別のクライアントAとBから同時に1つずつ(計2つ)発行します
理想:AとBのクライアントにそれぞれ2秒でレスポンスを返したいです
問題(現状):AとBのクライアントにはそれぞれ約4秒でレスポンスが返ってきます
参考:別のリソースを参照する異なるクエリを同時に発行した場合では、意図した並列処理の実行時間でレスポンスが得られました。
詳細
同一クエリを同時に2つ発行すると単体で実行した場合と比較して、倍近くの時間がかかってしまいます。
まるで直列に実行したような挙動になってしまいます。
推測ですが、同一クエリで同じリソースを参照しているために、ロックがかかってしまい、結果として直列処理のような挙動になってしまっていると思われます。
MySQLのロックやトランザクションについて、いくつか調査をしましたが、上記に関連するような記述は見つけられませんでした。
また、MySQLでは特別な設定はしておらず、全てデフォルトの設定です。
上記現象に関して、どなたか知見がございましたら、助言をお願いできませんでしょうか。
よろしくお願いします。