我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢!
由于博客中有大量代码,通过页面浏览效果更佳。
本文为个人学习《Expert Oracle Database Architecture Techniques and Solutions for High Performance and Productivity(第四版本》一书过程中的笔记与理解分享,仅用于学习与交流,部分内容参考原书观点并结合>实际经验进行整理。若涉及版权问题,请联系删除或沟通处理。也请大家支持购买原版书籍。
Oracle LOB类型:大数据存储的终极指南
什么是LOB?为什么需要它?
想象一下,你要在数据库中存储一本电子书、一张高清图片或者一段视频,这些"大块头"数据用普通的VARCHAR2或BLOB字段根本存不下。这时候,LOB(Large Objects,大对象)类型就派上用场了。
LOB就像是数据库中的"云盘",专门用来存储那些超大的数据对象。它让数据库不仅能处理结构化数据,还能成为各种文件的"家"。
四种LOB类型:各司其职
Oracle提供了四种LOB类型,就像四种不同用途的储物箱:
1. CLOB - 文本专用箱
- 用途:存储大量文本内容
- 例子:小说、论文、XML文件、日志文件
- 特点:会自动进行字符集转换,保证中文不会乱码
2. NCLOB - 多语言文本箱
- 用途:存储多语言文本
- 特点:使用国家字符集,支持更广泛的语言
3. BLOB - 万能二进制箱
- 用途:存储任何二进制数据
- 例子:图片(JPG/PNG)、视频(MP4)、文档(PDF/DOCX)、应用程序
- 特点:存什么就取什么,原汁原味不转换
4. BFILE - 外部文件指针
- 用途:指向服务器上的文件
- 特点:文件实际存在数据库外,数据库中只存路径,只读访问
新一代存储技术:SecureFiles
从Oracle 12c开始,默认使用全新的SecureFiles技术,相比老的BasicFiles有很多优势:
特性 | SecureFiles | BasicFiles |
---|---|---|
性能 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
管理简便性 | ⭐⭐⭐⭐⭐ | ⭐⭐ |
功能丰富性 | ⭐⭐⭐⭐⭐ | ⭐⭐ |
未来支持 | 持续更新 | 即将淘汰 |
SecureFiles的三大神器:
- 压缩:自动压缩数据,节省存储空间
- 去重:自动识别重复数据,只存一份
- 加密:提供数据加密,增强安全性
注:高级功能需要额外许可证,但基础功能免费使用
LOB是如何在后台工作的?
当你创建一個LOB字段时,Oracle在后台悄悄创建了三个组件:
- LOB定位器:存储在表中的"指针",告诉你数据在哪
- LOB索引:像书的目录,帮你快速找到数据块
- LOB段:实际存储数据的地方
这种设计让随机访问变得高效——你可以直接跳到文件的中间部分,而不需要从头读到尾。
实用建议和最佳实践
表空间规划
强烈建议将LOB数据放在单独的表空间中:
- 📁 常规表空间:存放结构化数据
- 📁 LOB专用表空间:存放大对象数据
好处:
- 备份恢复更灵活
- 性能监控更清晰
- I/O负载更均衡
性能优化技巧
- 小文件内联存储:小于4000字节的文件直接存在表中,提升访问速度
- 合理设置CHUNK大小:根据访问模式设置合适的块大小(通常是8K的倍数)
- 考虑缓存策略:频繁访问的小LOB可以考虑缓存,大LOB通常直接读写磁盘
创建示例
-- 创建包含SecureFiles LOB的表
CREATE TABLE 产品资料 (产品ID NUMBER PRIMARY KEY,产品名称 VARCHAR2(100),-- 产品图片使用BLOB存储产品图片 BLOB,-- 产品说明书使用CLOB存储产品说明书 CLOB
) LOB(产品图片, 产品说明书) STORE AS SECUREFILE;
常见问题解答
Q: 我应该选择哪种LOB类型?
A: 文本用CLOB,二进制数据用BLOB,需要指向外部文件用BFILE
Q: SecureFiles需要额外付费吗?
A: 基础功能免费,只有使用高级加密、压缩、去重功能才需要许可证
Q: LOB有大小限制吗?
A: 理论上最大可达128TB,但实际受存储空间限制
Q: 小文件用LOB还是直接存表?
A: 小于4000字节可以考虑内联存储,更大的文件用LOB更合适
总结
LOB类型让Oracle数据库成为了真正的"多媒体仓库",无论是文本、图片还是视频,都能得到妥善存储和管理。选择SecureFiles技术、合理规划表空间、根据数据特性选择合适的LOB类型,你就能构建出既高效又可靠的大数据存储解决方案。
下次当你需要在数据库中存储"大家伙"时,记得给LOB一个机会!
------------------作者介绍-----------------------
姓名:黄廷忠
个人博客: (http://www.htz.pw)
CSDN地址: (https://blog.csdn.net/wwwhtzpw)
博客园地址: (https://www.cnblogs.com/www-htz-pw)