概要
Prisma経由で発行されるクエリをチューニングする際のTIPSを順不同でまとめました。
(記事というよりは自分用のメモです)
Prismaのクエリログを有効化する
以下の方法などでPrismaのクエリログを有効化する
ref: https://www.prisma.io/docs/orm/reference/prisma-client-reference#log
Joinする(relationLoadStrategyを指定する)
relationLoadStrategyの指定自体は手軽に出来るので、まずはこれで効果が出ないか確かめる手がある
ref: https://www.prisma.io/docs/orm/prisma-client/queries/relation-queries
Traceを見る
Prismaのトレース機能を利用してクエリの全体像を見るのも効果的
例えばこれで、relationLoadStrategy join を利用しない場合にクエリが分割されていることもわかるし、
prisma:engine:db_query
ではなくて、prisma:engine:serialize
に時間がかかる場合があることも分かった。
ref: https://www.prisma.io/docs/orm/prisma-client/observability-and-logging/opentelemetry-tracing
DBログを追加する
PrismaレベルというよりはDBレベルで、例えばPostgreSQLの auto_explain
などを有効化してログに出力する。
ログに出力されたクエリを単発でExplainで実行しながらIndex調整などを行ってみるのも一手だが、RLSを利用している場合はRLSが適用された状態で見ないと意味がないので注意が必要
(DBログのAutoExplainを見た方が手っ取り早いこともある)