データベースに大きなオブジェクトまたは BLOB を保存すること
Optimize は、データベースに大きなオブジェクトを保存することによって引き起こされるパフォーマンスの問題を特定し、解決するのに役立つ推奨事項を提供します。また、これらの課題を軽減するための代替アプローチも提案します。
次のモデルは `Bytes` 型を使用しています
model User {
id Int @id @default(autoincrement())
name String?
// Storing raw image data directly in the database
avatarBytes Bytes?
}
どのような問題がありますか?
データベースに大きなバイナリオブジェクト(画像など)を保存すると、いくつかの課題が発生する可能性があります
- 過剰なストレージ使用量:大きなオブジェクトはデータベース内でかなりのスペースを占有し、管理を複雑にします。
- I/O 負荷の増加:大きなオブジェクトの処理は、データベースの入出力操作に負担をかけます。
- クエリパフォーマンスの低下:ほとんどの従来のデータベースは、大きなバイナリコンテンツを効率的に提供するように最適化されていないため、クエリまたは更新中にパフォーマンスが低下します。
さらに、大きなオブジェクトをデータベースに直接保存すると、バックアップが不釣り合いに大きくなり、復元プロセスに必要な時間が増加する可能性があります。データベースを介してこれらのファイルを提供することも、特に高トラフィックまたは頻繁なアクセスシナリオで、パフォーマンスのボトルネックを作成します。