Oracle 12c In-Memory Column Store 详解
Oracle 12c In-Memory Column Store 详解
适用版本:Oracle Database 12.1.0.2+ / 12c / 19c / 23ai 文档版本:v1.0 / 2026-07
1. 概述
In-Memory Column Store(IMCS)是 Oracle 12.1.0.2 引入的双格式存储[1]:
详细见:Oracle Buffer Cache 工作原理详解、Oracle SGA 各组件作用与配置。
2. 双格式存储
2.1 行格式
- 传统 Buffer Cache
- OLTP 优化
- 单行操作快
2.2 列格式
- IMCS
- 分析优化
- 列扫描快
- 压缩
2.3 共存
- 同时存在
- 优化器选择
- 透明
3. 配置
3.1 内存
ALTER SYSTEM SET inmemory_size = 4G SCOPE=SPFILE;
-- 需要重启
SHUTDOWN IMMEDIATE;
STARTUP;
3.2 表
ALTER TABLE sales INMEMORY;
ALTER TABLE sales INMEMORY MEMCOMPRESS FOR QUERY HIGH;
ALTER TABLE sales INMEMORY PRIORITY CRITICAL;
3.3 列
ALTER TABLE sales INMEMORY
INMEMORY (id, sale_date, amount)
NO INMEMORY (description);
4. 压缩
4.1 级别
- NO MEMCOMPRESS:不压缩
- MEMCOMPRESS FOR DML:DML 优化
- MEMCOMPRESS FOR QUERY LOW:默认
- MEMCOMPRESS FOR QUERY HIGH:高压缩
- MEMCOMPRESS FOR CAPACITY LOW
- MEMCOMPRESS FOR CAPACITY HIGH
4.2 选择
- DML:DML 频繁
- QUERY LOW:默认
- QUERY HIGH:分析
- CAPACITY HIGH:节省空间
5. 优先级
5.1 级别
- LOW
- MEDIUM
- HIGH
- CRITICAL
- NONE(默认)
5.2 加载
- 启动时加载(CRITICAL/HIGH)
- 访问时加载(NONE)
6. Population
6.1 加载
- 启动时
- 访问时
- 后台进程
6.2 查看
SELECT segment_name, bytes_in_mem, bytes, populate_status
FROM v$im_segments;
SELECT * FROM v$inmemory_area;
7. IM FastStart
7.1 作用
- IM 数据持久化
- 重启快速加载
- 减少 population 时间
7.2 配置
ALTER SYSTEM SET inmemory_faststart = 'IMFS_TABLESPACE';
8. 查询
8.1 优化器
- 自动选择 IMCS
- 列扫描
- 避免 Buffer Cache
8.2 执行计划
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR());
-- TABLE ACCESS INMEMORY FULL
8.3 In-Memory Aggregation
- VECTOR GROUP BY
- 12c+
- 聚合加速
9. 应用场景
9.1 分析
- 数据仓库
- 大表扫描
- 聚合
- 加速
9.2 混合
- OLTP + OLAP
- 行 + 列
- 双格式
9.3 报表
- 复杂报表
- 列扫描
- 性能
10. 性能
10.1 优势
- 列扫描快
- 压缩
- SIMD
- 缓存友好
10.2 监控
SELECT name, value FROM v$inmemory_area;
SELECT * FROM v$im_segments;
10.3 统计
SELECT name, value FROM v$sysstat
WHERE name LIKE 'IM%';
11. 限制
11.1 内存
- SGA 一部分
- 足够内存
- 监控
11.2 不支持
- 部分数据类型
- 外部表
- 临时表
12. 常见问题
12.1 未使用
- 未 populate
- 检查
- 等待
12.2 内存
- SGA 不足
- 调整
12.3 DML
- DML 开销
- 压缩级别
- DML
13. 最佳实践
- 分析场景:使用
- 内存:足够
- 压缩:场景
- 优先级:关键表
- FastStart:持久化
- 监控:使用
- 测试:性能
- DML:评估
- 文档:配置
- 演练:定期
14. 参考资料
[1] Oracle Database In-Memory Guide 19c https://docs.oracle.com/en/database/oracle/oracle-database/19/inmem/