问题背景:

LOB字段是Oracle数据库用于存储大数据对象的字段类型,包括BLOB、CLOB、NLOB、BFILE;
当LOB字段大小超过4k时,数据库会单独为该LOB字段分配额外的BLOB Segments存储BLOB对象,存储在lobsegment中的lob缺省不在缓冲区缓存,对于lob的读写都是物理IO,代价非常高,所以对于大于4kb的lob字段更新效率非常低;
被删除或更新的BLOB字段所占用空间不会自动批量回收,当所在表有大量的删除、更新操作时,BLOB所在Segments会迅速耗尽空间,新的INSERT需要空间时,会在高水位线上加锁后,回收曾使用但已经过期的BLOB空间,由于该操作效率很低,此时数据库就会有大量的‘enq:HW – contention’等待,相关SQL会由于该等待而串行执行,业务受影响十分严重。因此LOB字段不适合在有大批量删除、更新操作的并发场合使用;

已知解决办法:

为避免由于LOB该特性造成的的风险,对LOB字段的使用应遵循如下要求:

1.存储在lobsegment中的lob可以在定义的时候指定使用cache(默认是nocache),这对于中等大小的lob(比如几k~几十k)很有效果,减少物理IO

2. 有大批量删除、更新操作,而且有并发插入的表中,建议不要使用LOB字段,比如日志表。可以使用多个varchar(4000)字段进行拼接来代替;

3. 使用LOB字段时,为LOB字段手工单独指定和表所在表空间不同的表空间;

4. 版本11g使用LOB字段时,建议使用Securefile(默认basefile),如果单条记录显著大于block size,使用compress选项。

5. 将数据存储到文件系统中,数据库字段中存储文件地址,这种方法好像和bfile差不多;

问题:

1. 对于大容量不经常更新的lob除采用上面的解决办法外,还有什么好的方法;
2. 对于大容量的超过4000字节的文本,如果需要经常更新(如:发表文章,帖子后需要修改),采用什么解决方案比较好;
3. 单个字段大容量信息存储大家有些什么好的方法;

Oracle中的LOB字段解读相关推荐

  1. Oracle中的TIMESTAMP类型解读(TIMESTAMP存储格式)

     Oracle中的TIMESTAMP类型解读  SQL> create table test_time (col_time timestamp); 表已创建. SQL> insert in ...

  2. 使用JPA获取Oracle中的日期字段丢失时分秒

    2019独角兽企业重金招聘Python工程师标准>>> 使用JPA获取oracle中的日期字段发现没有时分秒,因为之前没有关注过这个字段, 最近由于需要,却发现时分秒奇怪的丢失.   ...

  3. ORACLE中date类型字段的处理

    ORACLE中date类型字段的处理 (1)在英文版本的ORACLE中默认日期格式为'DD-MON-YY',例如'01-JAN-98' 在汉化的中文版本中ORACLE默认日期格式为'日-月-年',例如 ...

  4. oracle中同个字段匹配多个like(or关系)实例解决方案

    oracle中同个字段匹配多个like(or关系)实例解决方案 这样一段sql,要查询title这个字段里包含(150,160,85,1x,23,-,98)的数据 SELECTtitleFROMtes ...

  5. Oracle可以处理LOB字段的常用字符函数

    以前处理LOB字段都是使用DBMS_LOB包,最近看了文档才发现,原来很多常用的字符函数都是支持LOB字段的. 建立一个测试表: SQL> CREATE TABLE T_LOB (ID NUMB ...

  6. Oracle中Number类型字段使用.netTiers和CodeSmith问题的解决方案

    在oracle中字段类型为Number(m, n)时,使用codesmith+.nettiers模板生成代码,发现m和n值被指定值后,访问数据时引发数据类型转换异常.目前的解决方案是,仅指定数据类型为 ...

  7. 在VC6中使用ADO读取Oracle中的BLOB字段

    今天尝试将存储于Oracle(版本:9.0.1.1.1)中BLOB字段里的图像文件读出来,文件量很小,不到10K.使用vc6+ADO,使用控制台程序初步尝试如下: ::CoInitialize(NUL ...

  8. Oracle中SQL查询字段值为空时,指定默认值

    一.实现效果 实现设备字段有值显示[加工]否则显示[未加工] 二.Oracle中NVL 2.1.NVL函数功能介绍 NVL 是Oracle的函数,功能是实现空值的转换,如果fieldName为NULL ...

  9. Oracle中Timestamp类型字段查询结果格式化处理

    在使用Oracle数据库时,把Timestamp类型的字段查出来显示到界面上居然是一串数字,不符合我们常见的要求,我就查了一下,发现中间还有很多道道,Oracle查出来的Timestamp类型和jav ...

  10. oracle 存long,ORACLE中LONG类型字段的存取

     Oracle中存取4000字节以上大文本类型可以用此数据类型,其在C#中的读写方法如下: 注意需要引用 System.Data.OracleClient 然后添加命名空间:using Syste ...

最新文章

  1. MySQL的字符编码体系(一)——数据存储编码
  2. 数据安全(主从复制)
  3. 深度学习 vs. 概率图模型 vs. 逻辑学
  4. 高可用高并发的 9 种技术架构
  5. react 合并数组_React快速上手
  6. 权限控制的两种主要方式详述
  7. java字符串排序_对字符串排序持一种宽容的心态
  8. 【TensorFlow】学习资源汇总以及知识总结
  9. 一篇文章看懂@Scheduled定时器/@Async/CompletableFuture
  10. Java编程思想—第三四五六七章
  11. 基于stm32的c语言程序设计,基于stm32的电子密码锁设计 main.c 代码奉上,做课设的直接用...
  12. tree工具类 TreeUtils.java
  13. 什么是https,和ssl什么关系,为什么用https
  14. 【seeprettyface.com】开源源码:Video-Auto-Wipe
  15. 爬取知乎,通过数据传输接口
  16. web开发常用js及html代码
  17. 当我在ChatGPT上问重建大师,它居然这样回答我
  18. Mybatis数据框架整合
  19. 2021-“新“的开源项目之handpose_x(手势识别交互)
  20. 模型压缩工具Distiller-INT8量化

热门文章

  1. coreldraw梯形校正_CorelDRAW绘制等腰梯形的多种方法
  2. webpy实时展示mysql数据库_webpy使用mysql数据库操作(web.database)
  3. 【数据库系统原理】第四章 高级数据库模型:统一建模语言UML、对象定义语言ODL
  4. openwrt 中 WiFi探针的三种实现办法
  5. 基于蚁群算法的图像边缘检测
  6. [日常] NOI2019 退役记
  7. Koo叔说Shader—果冻效果
  8. 软件开发需要学习什么?
  9. 30天自制操作系统第1天 - Hello World
  10. 5000元组装电脑配置清单2021 5000元台式电脑组装配置单