我们从上游系统收到消息,消息的平均大小为 2-5KB,但在某些情况下消息可能大至 20 MB。我们需要将消息存储在表中以用于审计目的。数据库是IBM DB2 9.7,列类型是CLOB。我有几个问题:
- 在 DB2 中,CLOB 列的默认大小为 1MB,是否可以将列的大小增加到 20MB。
- 数据库是根据实际数据大小还是列大小分配空间,那么假设消息大小为 5KB,将为行分配多少空间?
- 是否有其他更好的方法将此类数据存储在 db2 关系数据库中,以便消息大小不受限制。我们只想使用关系数据库。
谢谢
最佳答案
LOB 将使用比原始“消息”更多的空间,但 5KB 消息所需的存储空间比 20MB 消息少得多。
查看 LOB 内联以了解此类情况。 使用内联将允许将小型 lob 与数据一起存储(从而提高 IO 性能),超过一定大小的数据将存储在 lobspace 中。
这可以通过在表的列定义中添加 INLINE LENGTH 来实现。达到此值的 LOB 将与数据一起存储,更大的 LOB 自动存储在 LOBSPACE 中。 此功能的性能体验非常好。
关于java - IBM Db2 Clob 列可存储最大 20MB 的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35642345/