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