在数据库中存储大型对象或BLOB
Optimize 提供建议,以帮助识别和解决因在数据库中存储大型对象而导致的性能问题。它还提出了缓解这些挑战的替代方法。
以下模型使用 Bytes
类型
model User {
id Int @id @default(autoincrement())
name String?
// Storing raw image data directly in the database
avatarBytes Bytes?
}
问题是什么?
在数据库中存储大型二进制对象(例如图片)可能会带来多项挑战
- 存储使用过多:大型对象占用数据库中大量空间,使管理复杂化。
- I/O 负载增加:处理大型对象会增加数据库输入/输出操作的负担。
- 查询性能下降:大多数传统数据库未针对高效提供大型二进制内容进行优化,导致在查询或更新期间性能下降。
此外,将大型对象直接存储在数据库中可能导致备份文件过大,从而增加恢复过程所需的时间。通过数据库提供这些文件也会产生性能瓶颈,尤其是在高流量或频繁访问的情况下。