跳到主要内容

在数据库中存储大型对象或 BLOB

Optimize 提供建议,帮助识别和解决因在数据库中存储大型对象而导致的性能问题。 它还建议使用替代方法来缓解这些挑战。

以下模型使用 Bytes 类型

model User {
id Int @id @default(autoincrement())
name String?
// Storing raw image data directly in the database
avatarBytes Bytes?
}

有什么问题?

在数据库中存储大型二进制对象(例如图像)可能会导致多个挑战

  • 过度存储使用:大型对象会占用数据库中的大量空间,从而使管理变得复杂。
  • 增加的 I/O 负载:处理大型对象会增加数据库的输入/输出操作的压力。
  • 查询性能降低:大多数传统数据库未针对有效地服务大型二进制内容进行优化,从而导致查询或更新期间的性能下降。

此外,将大型对象直接存储在数据库中可能会导致备份变得不成比例地大,从而增加了还原过程所需的时间。 通过数据库提供这些文件也会造成性能瓶颈,尤其是在高流量或频繁访问的情况下。