我有一个数据库,其中有几个 BLOB 列分散在多个表中。由于我是一名开发人员,并且正在考虑使应用程序代码编写更容易,因此我想将这些列转换为 NUMBER FK 列,引用一个专用于 BLOB 的表(即一个 PK ID 列和一个 BLOB 列)。这将允许我们的 ORM 库以更少的代码更轻松地进行对象的延迟初始化。
这样做对性能或数据组织有何影响?由于这些 BLOB,数据库的大小相当大。
我有一个数据库,其中有几个 BLOB 列分散在多个表中。由于我是一名开发人员,并且正在考虑使应用程序代码编写更容易,因此我想将这些列转换为 NUMBER FK 列,引用一个专用于 BLOB 的表(即一个 PK ID 列和一个 BLOB 列)。这将允许我们的 ORM 库以更少的代码更轻松地进行对象的延迟初始化。
这样做对性能或数据组织有何影响?由于这些 BLOB,数据库的大小相当大。
通常,如果您将 BLOB 列移动到另一个表,并且新的 BLOB 列具有相同的属性(例如“DISABLE STORAGE IN ROW”,请参阅我的另一个答案),性能不会有太大变化。据我了解,Oracle 如何在内部存储 LOB/BLOB/CLOB 列与您无关,因为您的问题更多地涉及用户可见的数据模型。
使用外键的一个明显的性能影响是它会稍微减慢访问速度。
但是在设计方面将多个 BLOB 列放入单个列中是一个非常糟糕的主意。虽然我不知道 Hibernate ORM,但对我来说,您的问题听起来像是“破坏数据库的设计来解决 Hibernate 的问题是个好主意吗?”。好吧,这不是一个好主意。
如果您需要导出或导入仅从您的一张表中引用的 blob,该怎么办?
如果 blob 在单个表中,您将如何对它们进行分区?(如果你的数据库是“大”的,你需要已经计划好了!)
如果以前并发的 BLOB 更新/插入现在因为您有一个 BLOB 列而被序列化怎么办?