メインコンテンツにスキップ

Prisma Client のインスタンス化

次の例は、生成されたクライアントデフォルトパスからインポートしてインスタンス化する方法を示しています。

import { PrismaClient } from '@prisma/client'

const prisma = new PrismaClient()
ヒント

PrismaClient は、コンストラクタパラメータを使用してさらにカスタマイズできます。たとえば、ログレベルトランザクションオプションを設定したり、エラーフォーマットをカスタマイズしたりできます。

PrismaClient インスタンスの数が重要である

アプリケーションは通常、PrismaClientインスタンスを 1 つだけ作成する必要があります。これを実現する方法は、Prisma ORM を長時間実行アプリケーションで使用しているか、サーバーレス環境で使用しているかによって異なります。

その理由は、PrismaClient の各インスタンスが接続プールを管理するため、多数のクライアントがデータベース接続制限を使い果たす可能性があるためです。これは、すべてのデータベースコネクタに当てはまります。

MongoDB コネクタを使用する場合、接続は MongoDB ドライバの接続プールによって管理されます。リレーショナルデータベースコネクタを使用する場合、接続は Prisma ORM の接続プールによって管理されます。PrismaClient の各インスタンスは、独自のプールを作成します。

  1. 各クライアントは、クエリエンジンの独自のインスタンスを作成します。

  2. 各クエリエンジンは、デフォルトのプールサイズで接続プールを作成します。

  3. 接続が多すぎると、データベースの速度が低下し始め、最終的には次のようなエラーが発生する可能性があります。

    Error in connector: Error querying the database: db error: FATAL: sorry, too many clients already
    at PrismaClientFetcher.request