Database in Memory

全栈Oracle In-Memory技术:更快的速度,更快的业务

TimesTen In-Memory 数据库 • 延时敏感的OLTP应用 • 微秒级 响应时间 • 独立式 或 作为Oracle数据库的缓存
Database In-Memory • 双格式内存数据库 • 10亿行/秒 分析型数据处理 • 2-3x 更快的混合负载应用
Exadata上的In-Memory • Exadata Flash Cache支持In-Memory格式 • 5-10x 更快的Smart Scan • 15x 总体列式容量的增加

The Forrester Wave™: In-Memory Databases, Q1 2017

行格式数据库 vs. 列格式数据库
• 交易在行格式上运行更快 
– 示例: 查询和插入一条销售订单 
– 可很快的处理少数行,很多列
• 分析在列格式上运行更快 
– 示例 : 按区域的销售统计报告 
– 可很快的处理少数列,很多行

突破: 双格式数据库, No need to load all the data in Memory
• 表同时具有行和列两种格式 
• 同时激活并保证事务一致性 
• 分析和报表使用新的内存列 格式 
• OLTP 使用久经验证的行格 式

Oracle In-Memory 列格式
• 内存纯列格式 • 无需持久化,开销很小 • 不修改磁盘中的格式 • 在所有平台中提供 
• 可在表空间,表,分区和子分区级别启 用 • 可以指定部分列 • 内存区域大小由inmemory_size 参 数控制

延迟敏感型应用,使用TimeTen Database

• Star-schema 和预计算KPI
- 提升dash-board性能
• Foundation Layer 中的全部或部分
- 基于第三范式时间敏感的分析
• Staging/ETL/Temp 不适合
- 写一次, 读一次

•In-Memory Area是SGA的一部分,由参数INMEMORY_SIZE设定,包括IMCU(列式数据)、SMU(元数据)和IMEU(表达式)组成。
•行式数据在实例启动或第一次数据访问时发布到内存
•数据更新时,会在SMU中做标记,这部分数据的读取会定向到行格式存储
•当列式“脏数据”积累到一定程度,会进行刷新
•发布和刷新在后台由IMCO调度,SMCO执行

纯列格式:只访问需要的数据
直接在压缩数据上扫描和过滤, 采用字典压缩, Run Length Encoding, OZIP
Storage Index
SIMD - 向量计算, 向量指令扫描 Vector Register, can be used to Data Scan, Join, Group by/Aggregation, and others
Bloom Filter是低内存使用的数据结构,用来测试元素是否在集合中:肯定不在 or 可能不在
即刻生成报告:报表运行更快,无需定义Cube

How to user In Memory
• 用户确定需要发布到In-Memory中的对象
• 在后台将对象自动发布到In-Memory区域
• 数据可同时驻留在Buffer Cache
• 和In-Memory区域
• 基于成本的优化器自动决定从何处读取数据
• 应用无需知晓数据的位置和格式

inmemory_size = XXX GB
alter table table_name inmemory | no inmemory

CREATE TABLE customers ……
PARTITION BY LIST
(PARTITION p1 …… INMEMORY,
(PARTITION p2 …… NO INMEMORY);

ALTER TABLE sales INMEMORY PRIORITY HIGH;   (CRITICAL > HIGH > MEDIUM >LOW)

V$IM_SEGMENTS
- 显示哪些对象已经发布到内存中
- 显示内存中每一个segment的大小
- 显示还剩余多少未发布
SQL> select segment_name, populate_status, inmemory_priority, inmemory_size, bytes_not_populated from v$im_segments;

不支持 IoT,Hash Cluster

Oracle release Database in Memory in July 2014. 

12cR1
      对Exadata的支持
      对 on active data guard的支持
      Join Group, create inmemory joingroup xxx(); 
      In Memory Expressions, 可以定义虚拟列

12cR2 开始支持Automatic Dta Optimization (ADO)
18c New Features
      In Memory Dynamic Scans, 轻量级扫描;
      Optimized Arithmetic 更快的数学运算; 
      external Table(Hadoop, file etc); 
      Automatic In Memory;

19c New features
      POPULATE_WAIT 函数, 前台发布并等待发布结束
     自动启用 Resource Manager
      Hive/BigData 支持, Parallel Query 支持, 混合分区外部表, Data Guard 多实例Redo Apply

20c New features
      融合分析,性能 In-Memory Vector Joins

Database In-Memory与Optimizer
建议器: Oracle Database In-Memory Advisor
Database In-Memory与索引
Database In-Memory与多租户(Multitenant)
Database In-Memory与Exadata
Database In-Memory与分区(Partitioning)
Database In-Memory与真正应用集群(RAC)
Database In-Memory与SAP
Database In-Memory与Oracle公有云(OCI)

Database In-Memory学习资源
https://blogs.oracle.com/in-memory/dbim-resources

--End of File--

Comments

Popular posts from this blog

SQL Monitor and SQL Quarantine