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

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
© . All rights reserved.