提高 Oracle 11g 中的 BLOB 写入性能

pra*_*een 4 performance oracle

我有一个应用程序将很多行写入包含 blob 列的表中。blob 的平均大小为 3k 字节。

  • 是否有任何缓冲区可以调整大小以改善插入到该表中的情况?
  • lob 缓冲区是否仍然适用于 Oracle 11g?

谢谢。

kub*_*zyk 5

在 Oracle 中,LOB(包括 BLOB)存储为:

  • in-the-table LOB - 如果 LOB 小于 3900 字节,它可以存储在表行内;默认情况下这是启用的,除非您指定 DISABLE STORAGE IN ROW
  • 普通 LOB - 存储在表之外的单独段中,您甚至可以将其放在另一个表空间中;对于这些:
    • 最少分配 CHUNK 字节并完全重做日志(即使 LOB 只有 1 个字节)
    • LOB 列后面有一个内部中间索引,它在更新时会引起争议,并且实际上可能会序列化它们
    • 访问是多级的,因此相对较慢
    • NOCACHE 是默认值
    • 使用 CACHE 选项,不考虑 CACHE_SIZE_THRESHOLD,因此大 LOB 会浪费您的缓存

Metalink 注释 ID 66431.1 对此进行了描述,如果您有权访问,您可能会对此感兴趣。