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