sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQLにファイルを保存する際のパフォーマンスの問題はありますか?

    基本的に2つの選択肢があります。データを行に直接格納することも、ラージオブジェクト機能を使用することもできます。 PostgreSQLは現在TOAST と呼ばれるものを使用しているため 大きなフィールドをテーブルの外に移動する場合、大きなデータを行に直接格納することに関連するパフォーマンスの低下はありません。フィールドのサイズには1GBの制限が残っています。これが制限されすぎている場合、またはストリーミングAPIが必要な場合は、データベース内のファイル記述子のようなものを提供するラージオブジェクト機能を使用できます。 LO IDを列に保存し、そのIDから読み取りと書き込みを行うことができます。

    個人的には、どうしても必要な場合を除いて、ラージオブジェクト機能は避けることをお勧めします。 TOASTを使用すると、ほとんどのユースケースは、データベースを期待どおりに使用するだけでカバーされます。大きなオブジェクトの場合、使用したLO IDを追跡し、使用されなくなったとき(以前は使用されなかったとき)に必ずリンクを解除する必要があるため、メンテナンスの負担が増えます。永久にスペースを占めるデータディレクトリ。周囲に並外れた振る舞いをする施設もたくさんありますが、私はそれらを使用したことがないので、その詳細は私にはわかりません。

    ほとんどの人にとって、データベースにビッグデータを格納することに関連する大きなパフォーマンスの低下は、特に指示しない限り、ORMソフトウェアがすべてのクエリでビッグデータを引き出すことです。 Hibernateまたはこれらの列を大きいものとして扱うために使用しているものはすべて、特に要求された場合にのみフェッチするように注意する必要があります。



    1. クライアントごとの複数のデータベースと1つのデータベースの実用性

    2. Hibernateの最も単純な1対多のマップケースはMySQLでは機能しません

    3. PL /SQLを使用してOracleDirectoryのすべてのファイルを読み取り、BLOB列を更新する方法

    4. mysqlでは、どの内部結合SQLが最も効果的で最良ですか?