当前位置: 首页 > 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.xdnf.cn/news/1045117.html

相关文章:

  • 使用x64dbg破解密钥exe程序
  • React学习001-创建 React 应用
  • Spark简介脑图
  • 分割函数(Split Function)
  • 电阻篇---下拉电阻的取值
  • 【运维系列】【ubuntu22.04】Docker安装mysql 8.0.36 教程
  • Java安全管理器-(Security Manager)
  • 《江西南昌棒垒球》一级运动员 vs 二级运动员·棒球1号位
  • Python打卡训练营Day54
  • 【AI学习】【Ubuntu 22.04】【安装Ollama】两种方式
  • 【图片识别改名】如何批量识别大量图片的文字并重命名图片,基于WPF和京东OCR识别接口的实现方案
  • 电脑上的.ssh目录只做什么的
  • 微调技术:Prefix-tuning vs Prompt-tuning vs P-tuning
  • Java设计模式完整学习指南(23+4种模式)
  • 跨域问题之前后端解决办法
  • Photoshop矢量蒙版全教程
  • 我的JavaWeb软件开发作品学生信息管理系统项目/JavaWeb软件开发 课程考察标准
  • 【Bluedroid】蓝牙启动之核心模块(startProfiles )初始化与功能源码解析
  • 性能优化 - 案例篇:11种优化接口性能的通用方案
  • pion/webrtc v4.1.2版本深度解析与应用指南
  • 纺织行业SAP解决方案:无锡哲讯科技助力企业智能化升级
  • docker(学习笔记第一课) 使用nginx +https + wordpress
  • Flutter包管理与插件开发完全指南
  • springboot速通
  • 国产操作系统-银河麒麟本地化部署Ollama国产开源的AI大模型Qwen3
  • 【MFC】树控件的使用详解
  • Spring Framework 7.0发布
  • C++问题:纯虚函数和抽象类
  • C语言进阶:深度解剖数据在内存中的存储(浮点型在内存中的存储)
  • 某网站极验4滑块验证码逆向分析