当前位置: 首页 > news >正文

38-Oracle 23 ai Accelerate Securefiles LOB Performance

小伙伴们在日常的操作中,使用LOB对象会很多么,工业的附件、医疗的图像、电子病历的长长的几千上万字的描述和图像等,这些在查询和使用过程中都是极度折磨,第一速度慢、第二是占用超大空间,且业务需要从这些字段中拆解信息,统计、上传等。

Oracle的大对象(LOB)存储技术经历了从BasicFile到SecureFile的革新,在23 ai默认用SecureFile带来性能与智能管理的提升。

一、LOB技术原理与架构解析

LOB(Large Object)​​ 是Oracle处理大文件(如图片、视频、文档)的核心数据类型,分为:

  • BLOB​:二进制数据(如图像)
  • CLOB​:字符数据(如日志文件)
  • NCLOB​:Unicode字符数据
  • BFILE​:指向外部文件的指针
存储架构核心机制
  • 行内/行外存储
  1. 小LOB(≤4000B)直接存储在表行中
  2. 大LOB使用“LOB定位器”指向外部LOB段
  • 分块存储(Chunking)​
  1. LOB数据被拆分为多个块(Chunk)
  2. 每个Chunk包含Header(元数据)和Body(实际数据)
  3. 大块(如32KB)减少I/O操作,提升大文件读写效率
  • LOB索引机制
  1. SYS_LOB$$对象管理LOB块的物理地址
  2. 索引结构优化大文件随机访问性能

 实践脚本:创建含LOB列的表

SYS@CDB$ROOT> 
create tablespace SECURE_LOB_TS 
DATAFILE 'SECURE_LOB_TS.dbf' size 100M 
autoextend ON SEGMENT SPACE MANAGEMENT AUTO;--Tablespace SECURE_LOB_TS created.CREATE TABLE medical_images (image_id NUMBER PRIMARY KEY,description VARCHAR2(100),image_data BLOB) LOB(image_data) STORE AS SECUREFILE (TABLESPACE SECURE_LOB_TS COMPRESS HIGH DEDUPLICATE);
--Table MEDICAL_IMAGES created.

二、SecureFile 在LOB上的提升

自11g引入的SecureFile彻底重构了LOB存储,19c可以选择是否SecureFile,23 ai 默认SecureFile,有了这个支持才有了向量数据存入lob字段,存储体验SecureFile的速度和性能。

​关键技术特性

​特性​

​BasicFile​

​SecureFile​

​23ai 增强​

​压缩​

不支持

支持(HIGH/MEDIUM/LOW)

自适应压缩等级选择

​重复数据删除​

不支持

表/分区级去重

跨分区去重

加密​

需要额外工具

原生透明加密

整合Oracle Key Vault

​性能​

较低

读写速度提升5-8倍

向量化AI加速扫描

脚本实测(23 ai环境)​ 
-- 测试SecureFile与BasicFile读性能
ALTER SESSION SET db_securefile = 'FORCE';
--Session altered.
CREATE TABLE medical_images (image_id NUMBER PRIMARY KEY,description VARCHAR2(100),image_data BLOB) LOB(image_data) STORE AS SECUREFILE (TABLESPACE SECURE_LOB_TS COMPRESS HIGH DEDUPLICATE);
--Table MEDICAL_IMAGES created.CREATE TABLE test_basicfile (id NUMBER, data BLOB) LOB(data) STORE AS BASICFILE;CREATE TABLE test_basicfile (image_id NUMBER PRIMARY KEY,description VARCHAR2(100),image_data BLOB) LOB(image_data) STORE AS basicfile (TABLESPACE SECURE_LOB_TS );
--Table TEST_BASICFILE created.--SecureFile启用HIGH压缩和去重-- 查询表空间的空间管理方式
SELECT tablespace_name, segment_space_management 
FROM dba_tablespaces 
WHERE tablespace_name = 'SECURE_LOB_TS';-- 查询LOB的存储属性
ALTER TABLE medical_images ALLOCATE EXTENT;
ALTER TABLE test_basicfile ALLOCATE EXTENT;
--
SELECT table_name, securefile, compression, deduplication 
FROM dba_lobs WHERE table_name='MEDICAL_IMAGES';
--
TABLE_NAME        SECUREFILE    COMPRESSION    DEDUPLICATION
_________________ _____________ ______________ ________________
MEDICAL_IMAGES    YES           HIGH           LOB--
SELECT table_name, securefile, compression, deduplication 
FROM dba_lobs WHERE table_name='TEST_BASICFILE';
--
TABLE_NAME         SECUREFILE    COMPRESSION    DEDUPLICATION
__________________ _____________ ______________ ________________
TEST_BASICFILE    YES           NO             NO

三、典型应用场景与优化实践

场景1:医疗PACS系统(BLOB存储)​
  • 需求​:高压缩比保存CT影像,支持快速调阅
  • 建表​:
CREATE TABLE ct_scans (scan_id NUMBER, patient_id NUMBER,scan_data BLOB) LOB(scan_data) STORE AS SECUREFILE (TABLESPACE SECURE_LOB_TS COMPRESS HIGH DEDUPLICATE);
场景2:文档管理(CLOB去重)​
  • 现状:重复文档版本占用空间
  • 优化​:
CREATE TABLE contracts (contract_id   NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,contract_name VARCHAR2(100),sign_date     DATE DEFAULT SYSDATE,contract_text CLOB
)
LOB(contract_text) STORE AS SECUREFILE (  -- 启用SecureFile特性TABLESPACE SECURE_LOB_TSCOMPRESS HIGH          -- 启用高压缩DEDUPLICATE            -- 启用去重(初始状态)CACHE                  -- 缓存高频访问数据
);
--Table CONTRACTS created.
-- 测试:插入10,000份相似合同
DECLAREbase_text CLOB := '本合同由甲方...(此处为1KB基础合同模板)';
BEGINFOR i IN 1..10000 LOOPINSERT INTO contracts (contract_name, contract_text)VALUES ('CONTRACT_' || i,base_text || CHR(10) || '附加条款: ' || DBMS_RANDOM.STRING('X', 10)  -- 添加随机差异);END LOOP;COMMIT;
END;
/
--PL/SQL procedure successfully completed.
-- 查看实际空间占用
SELECT segment_name,ROUND(bytes/1024/1024, 2) AS size_mb
FROM user_segments 
WHERE segment_name IN (SELECT segment_name FROM user_lobs WHERE table_name = 'CONTRACTS'
);
--
SEGMENT_NAME                    SIZE_MB
____________________________ __________
SYS_LOB0000073323C00004$$          0.25
--
-- 对比去重开关状态的空间差异
ALTER TABLE contracts MODIFY LOB(contract_text) (KEEP_DUPLICATES);  -- 关闭去重
ALTER TABLE contracts MODIFY LOB(contract_text) (DEDUPLICATE);      -- 启用去重

四、迁移与维护实战指南

​BasicFile → SecureFile迁移
-- 在线迁移
ALTER TABLE test_basicfile MOVE LOB(image_data) STORE AS SECUREFILE (TABLESPACE SECURE_LOB_TS COMPRESS HIGH DEDUPLICATE
);
--Table TEST_BASICFILE altered.-- 监控进度
SELECT table_name, securefile, compression, deduplication 
FROM dba_lobs WHERE table_name='TEST_BASICFILE';
TABLE_NAME        SECUREFILE    COMPRESSION    DEDUPLICATION
_________________ _____________ ______________ ________________
TEST_BASICFILE    YES           HIGH           LOB

维护操作

  • 空间回收

-- 在线启用去重-无需重建表去重
ALTER TABLE contracts MODIFY LOB(contract_text) (DEDUPLICATE);
--Table CONTRACTS altered.-- 确认LOB类型为SecureFile
SELECT table_name, securefile 
FROM dba_lobs 
WHERE table_name = 'CONTRACTS';  -- 应返回"YES"
--
TABLE_NAME    SECUREFILE
_____________ _____________
CONTRACTS     YES-- 检查去重状态
SELECT deduplication 
FROM dba_lobs 
WHERE table_name = 'CONTRACTS';
--
DEDUPLICATION
________________
LOB
  •  统计信息收集
EXEC DBMS_STATS.GATHER_TABLE_STATS(ownname => 'SYS',
tabname => 'MEDICAL_IMAGES',
method_opt => 'FOR COLUMNS image_data SIZE AUTO');
--
PL/SQL procedure successfully completed.

五、总结与最佳实践建议

Oracle 23 ai的SecureFile LOB成为大文件存储首选:
  • 存储效率革命​:压缩与去重降低70%+空间占用
  • 性能飞跃​:读写速度提升5-8倍
  • 向量保存​:兼容未来AI场景
实施建议​:
  • 新系统​:直接使用SecureFile + 分区 + 去重
  • 迁移系统​:在线迁移结合AI压缩等级推荐
  • AI场景​:优先使用向量化LOB元数据加速分析
  • 避坑指南​:避免跨DB链接的LOB操作;NOCACHE适用于归档数据
最终的演进方向已经很清晰:​SecureFile已成为非结构化数据管理的技术基石,而23 ai的AI集成正在重新定义LOB的智能管理范式。
http://www.dtcms.com/a/250872.html

相关文章:

  • 初探 Pytest:编写并运行你的第一个测试用例
  • 【C语言扩展识别实数负数】2022-5-29
  • 软考 系统架构设计师系列知识点之杂项集萃(90)
  • OpenWrt:交叉编译openssl
  • 总结用ubuntu一直以来遇到的问题
  • 【Dify系列】【一】【安装与部署】【ubuntu22.04安装docker部署dify1.4.2】
  • android为什么不用sqlite数据库,而要用Realm
  • 使用axios及和spirng boot 交互
  • LeetCode 高频 SQL 50 题(基础版)之 【子查询】· 下
  • OpenKylin安装运行ssh及sftp服务
  • 剑指offer26_顺时针打印矩阵
  • 产品经理页面布局设计的四维思考框架
  • 低秩分解的本质是通过基矩阵和系数矩阵的线性组合,以最小的存储和计算代价近似表示复杂矩阵
  • 如何高效的学习算法与数据结构
  • 408第一季 - 数据结构 - 散列表
  • 【数据结构中的堆】
  • 理解ES6中的Promise
  • Linux服务器运维常用命令大全
  • 不同conda 不同cuda版本方法
  • /etc/profile.d/conda.sh: No such file or directory : numeric argument required
  • Python基础教学:航天工程领域的精确计算和金融领域的精确计算,分别采用的小数保留位数的方法有哪些?有什么区别?-由Deepseek产生
  • Oracle03-PL/SQL Developer
  • Vue学习001-创建 Vue 应用
  • 循环神经网络及其变体
  • Python+QT远程控制助手-ver2
  • Dify 插件工具:远程连接配置指南
  • NY271NY274美光科技固态NY278NY284
  • 车载通信架构 --- IP ECU 在连接被拒绝后的重连机制
  • C++第一阶段——语言基础与核心特性
  • 项目 : 基于正倒排的boost搜索引擎