web-dev-qa-db-ja.com

データをPostgreSQLのbytea列にチャンクしますか?

PostgreSQLデータベースにタイプ bytea の列があります。

行を更新した場合、いくつかの小さなステップでデータをbytea列にチャンクすることは可能ですか?

1つのbyteaエントリのサイズは、ほとんどが200MByte未満になります。

チャンクは約1Mバイトになります。

Psycopg2とPythonを使用してデータベースにアクセスします。

これは PostgreSQLにHTTP応答を保存する のフォローアップ質問です。

1
guettli

行を更新した場合、いくつかの小さなステップでデータをbytea列にチャンクすることは可能ですか?

はい、可能です。しかし、それは恐ろしい考えです。 PostgreSQLおよびすべてのMVCCデータベースは、更新のたびに新しい行を書き込むため、最後のチャンクでは1MBではなく200MBを書き込みます。

large_objects を検討してこれを回避するか、データベースはファイルシステムではないため、データベースを使用せず、代わりにIOバッファまたはファイルシステムの書き込みキャッシュ。データベース内のデータにリンクする必要がある場合は、pathを試してください(内部的にはファイルシステムがinodesを使用します)。必要に応じてbtrfsまたはzfsを確認してください。ファイルシステムのPostgreSQL。

適切な仕事をしている場合、PostgreSQLはその仕事に最適なツールですが、どの仕事にも最適なツールではありません。

1
Evan Carroll