Q: 同時実行のクエリ数を制限する機能はありますか?
A: 現在組み込みの同時実行制限機能はありませんが、Cats EffectのSemaphoreを使って実装できます。
Cats EffectのSemaphore
を使って、同時実行数を制限する関数を実装できます。例えば、次のようにlimitedConcurrency
関数を定義することで、同時実行数を制限したクエリを実行できます。
import cats.effect.*
import cats.effect.syntax.all.*
import ldbc.dsl.*
def limitedConcurrency[A](program: DBIO[A], conn: Connection[IO], maxConcurrent: Int): IO[A] =
Semaphore[IO](maxConcurrent).flatMap { sem =>
sem.permit.use(_ => program.readOnly(conn))
}