对保存文件的通用机制的性能关注
Performance concern for a generic mechanism of saving files
我想创建一个通用机制来在我的应用程序和数据库中保存文件,为此我想出了创建两个 table 和以下 schema
的想法,以便保存与任何数据库中任何行相关的文件 table:
FileInfo
=================================================================
ID FileName ContentType FileSize DatabaseTableName RowID
并创建以下具有 OneToOne
关系的 table 以将文件数据保存在单独的 table 中,以便查询 FileInfo
table执行速度更快:
FileData
=================================================================
ID FileData
好吧,我不是数据库性能方面的专家,这就是为什么我想知道这样的设计是否会在一个 table 中保存所有 table 的所有文件] 会导致性能问题,这是一种不好的做法吗?
如果可以的话,你能给我一个更好的解决方案吗?
提前致谢
我觉得这个问题没有论文就无法回答。基本上把文件存入数据库就可以了。数据库和文件系统具有截然不同的属性。值得称赞的是,您希望让框架的用户可以选择适合他们情况的正确选择。
将其拆分为许多 table(手动分区)或任何其他形式的分区都无济于事。 SQL 服务器在处理非常大的 table 时没有固有问题。
数据库中的 Blob 会导致一些特定的缺点。这些斑点住在哪里并不重要。
我喜欢你把它分成两个 table。通常,这是没有必要的。如果查询编写得当并且只提取所需的列,那么 SQL 服务器根本不会触及未使用的 blob 列。
也就是说,像您那样拆分大块通常很方便。 ORM 不喜欢大行。工具(和管理员 运行 一个简单的手册 select *
)现在能够查看 FileInfo
table 而不会因为数据量大而失败。
拆分不是必需的,但可以使使用数据库更容易。
我想创建一个通用机制来在我的应用程序和数据库中保存文件,为此我想出了创建两个 table 和以下 schema
的想法,以便保存与任何数据库中任何行相关的文件 table:
FileInfo
=================================================================
ID FileName ContentType FileSize DatabaseTableName RowID
并创建以下具有 OneToOne
关系的 table 以将文件数据保存在单独的 table 中,以便查询 FileInfo
table执行速度更快:
FileData
=================================================================
ID FileData
好吧,我不是数据库性能方面的专家,这就是为什么我想知道这样的设计是否会在一个 table 中保存所有 table 的所有文件] 会导致性能问题,这是一种不好的做法吗?
如果可以的话,你能给我一个更好的解决方案吗?
提前致谢
我觉得这个问题没有论文就无法回答。基本上把文件存入数据库就可以了。数据库和文件系统具有截然不同的属性。值得称赞的是,您希望让框架的用户可以选择适合他们情况的正确选择。
将其拆分为许多 table(手动分区)或任何其他形式的分区都无济于事。 SQL 服务器在处理非常大的 table 时没有固有问题。
数据库中的 Blob 会导致一些特定的缺点。这些斑点住在哪里并不重要。
我喜欢你把它分成两个 table。通常,这是没有必要的。如果查询编写得当并且只提取所需的列,那么 SQL 服务器根本不会触及未使用的 blob 列。
也就是说,像您那样拆分大块通常很方便。 ORM 不喜欢大行。工具(和管理员 运行 一个简单的手册 select *
)现在能够查看 FileInfo
table 而不会因为数据量大而失败。
拆分不是必需的,但可以使使用数据库更容易。