Skip to content

Oracle Exadata:数据库一体机的秘密

你有没有听说过:

Exadata 是 Oracle 的数据库一体机。

同样的 SQL,在 Exadata 上快了几十倍。

Smart Scan、Storage Index、Hybrid Columnar Compression……

今天,揭开 Exadata 的神秘面纱。


Exadata 是什么?

Exadata 是 Oracle 与 Intel/Huawei 合作开发的数据库一体机,将软件和硬件深度整合,提供极致的数据库性能。

Exadata X9M 架构:

┌─────────────────────────────────────────────────────────────────┐
│                         Exadata Storage                          │
│  ┌───────────────────────────────────────────────────────────┐  │
│  │                    Storage Server Grid                      │  │
│  │  ┌─────────────┐ ┌─────────────┐ ┌─────────────┐         │  │
│  │  │ Storage Cell│ │ Storage Cell│ │ Storage Cell│         │  │
│  │  │  (存储节点)  │ │  (存储节点)  │ │  (存储节点)  │         │  │
│  │  └─────────────┘ └─────────────┘ └─────────────┘         │  │
│  │  ┌─────────────────────────────────────────────────┐     │  │
│  │  │     Smart Flash Cache (闪存缓存)                  │     │  │
│  │  └─────────────────────────────────────────────────┘     │  │
│  └───────────────────────────────────────────────────────────┘  │
│                              │                                   │
│              ┌──────────────┼──────────────┐                    │
│              ▼              ▼              ▼                    │
│         InfiniBand / RoCE Network (高速互联)                    │
│                              │                                   │
└─────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────┐
│                       Database Server                           │
│  ┌───────────────────────────────────────────────────────────┐  │
│  │                    数据库集群                               │  │
│  │  ┌─────────────┐ ┌─────────────┐ ┌─────────────┐         │  │
│  │  │  DB Server  │ │  DB Server  │ │  DB Server  │         │  │
│  │  │  (数据库节点)│ │  (数据库节点)│ │  (数据库节点)│         │  │
│  │  └─────────────┘ └─────────────┘ └─────────────┘         │  │
│  └───────────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────────┘

Exadata 的核心优势

优势说明
Smart Scan存储层过滤,减少数据传输
Storage Index自动索引,大幅减少 I/O
Flash Cache智能闪存缓存,热数据加速
HCC混合列压缩,压缩率 10-50x
InfiniBand高速网络,减少网络延迟
IO Resource ManagerI/O 资源管理,保证 QoS

Smart Scan(智能扫描)

传统架构 vs Smart Scan

传统架构:
数据库 ──────► 存储 ──────► 传输全部数据块 ──────► 数据库


           传输大量无用数据

Smart Scan:
数据库 ──────► 存储(智能过滤)────► 只传需要的列/行 ──────► 数据库


           只传输需要的数据

Smart Scan 的能力

能力说明
列过滤只读取需要的列
行过滤只读取符合条件的行
谓词下推在存储层执行 WHERE 条件
投影下推在存储层执行 SELECT 列
Join 过滤减少 join 数据量

Smart Scan 使用条件

sql
-- Smart Scan 触发条件
-- 1. 使用直接路径读取(大表扫描)
SELECT * FROM large_table WHERE ...;

-- 2. 表必须存储在 Exadata 存储上
-- 3. 不能有某些存储限制

-- 查看 SQL 是否使用 Smart Scan
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(FORMAT => '+predicate'));
-- 查看执行计划中是否有 "Storage"

Storage Index(存储索引)

Storage Index 原理

Storage Index 自动维护每个数据块的最小/最大值:

数据块 1:column_value 1-1000      ───► Storage Index 记录 [1, 1000]
数据块 2:column_value 1001-2000  ───► Storage Index 记录 [1001, 2000]
数据块 3:column_value 2001-3000  ───► Storage Index 记录 [2001, 3000]

查询:WHERE column_value = 2500

检查 Storage Index:2500 不在 [1, 1000],[1001, 2000] 中

跳过数据块 1、2,只读取数据块 3

Storage Index 特性

特性说明
自动创建无需人工干预
自动维护DML 操作时自动更新
自动使用优化器自动决定是否使用
多列支持支持多列索引
sql
-- Storage Index 对特定查询自动生效
SELECT * FROM sales WHERE customer_id = 12345;
SELECT * FROM sales WHERE sale_date BETWEEN '2024-01-01' AND '2024-01-31';

Flash Cache(闪存缓存)

Exadata 智能闪存

数据分层:

热数据 ──────────────────► Flash Cache (NVMe SSD)

温数据 ──────────────────► Storage Cell Disk

冷数据 ──────────────────► Archive Disk

Flash Cache 特性

特性说明
智能缓存自动缓存热数据
写缓存写操作先写入 Flash,再异步落盘
懒读取第一次读取慢,后续读取从 Flash
压缩闪存支持 HCC 压缩数据缓存
bash
# 查看 Flash Cache 使用情况
SELECT * FROM V$SYSMETRIC
WHERE METRIC_NAME LIKE '%Flash%';

# 查看闪存命中率
SELECT * FROM V$INSTANCE_CACHE_TRANSFER;

Hybrid Columnar Compression(混合列压缩)

HCC 是什么?

HCC 是 Exadata 特有的压缩技术,按列组织数据而非按行:

行式存储:
[行1: col1, col2, col3]
[行2: col1, col2, col3]
[行3: col1, col2, col3]

列式存储(内存中):
[col1: 行1, 行2, 行3]
[col2: 行1, 行2, 行3]
[col3: 行1, 行2, 行3]

相同值在一起,压缩率更高!

HCC 压缩级别

压缩级别压缩率适用场景
FOR QUERY LOW2-4x频繁查询
FOR QUERY HIGH6-10x报表分析
FOR ARCHIVE LOW6-10x冷数据
FOR ARCHIVE HIGH10-15x归档数据

HCC 使用示例

sql
-- 创建 HCC 压缩表
CREATE TABLE warehouse_data (
    sensor_id NUMBER,
    reading_value NUMBER,
    reading_date DATE
)
COMPRESS FOR QUERY HIGH;

-- 移动现有表到 HCC
ALTER TABLE big_archive MOVE COMPRESS FOR ARCHIVE HIGH;

-- 验证压缩效果
SELECT table_name, compression, compress_for, num_rows
FROM user_tables
WHERE table_name = 'WAREHOUSE_DATA';

IO Resource Manager(I/O 资源管理)

IORM 是什么?

IORM 管理不同数据库和进程的 I/O 资源,保证服务质量:

IORM 配置:
┌─────────────────────────────────────────────────┐
│              I/O 请求                           │
│  ┌─────────────────────────────────────────┐   │
│  │  Plan (资源计划)                         │   │
│  │  ┌─────────────────────────────────────┐│   │
│  │  │  DB1 (关键业务) ────► 50% I/O       ││   │
│  │  │  DB2 (报表系统) ────► 30% I/O       ││   │
│  │  │  DB3 (测试环境)  ────► 20% I/O       ││   │
│  │  └─────────────────────────────────────┘│   │
│  └─────────────────────────────────────────┘   │
└─────────────────────────────────────────────────┘

IORM 配置

bash
# 查看当前 IORM 配置
cellcli -e list iormplan

# 配置 IORM
cellcli -e CREATE IORMPLAN "
   name = 'mydb'
   dbPlan = '((category="OLTP", limit=50), 
             (category="BATCH", limit=30), 
             (category="OTHER", limit=20))'
"

Exadata 监控

关键指标

bash
# 查看存储指标
cellcli -e LIST METRICDEFINITIONS
cellcli -e LIST METRICCURRENT

# 查看 I/O 统计
cellcli -e LIST IOTHROTTLEHISTORY

# 查看 Smart Scan 统计
cellcli -e LIST ACTIVEREQUEST

# 查看闪存缓存统计
cellcli -e LIST FLASHCACHEACTIVITY

性能诊断

sql
-- 查看 Exadata 特定统计
SELECT * FROM V$MYSTAT
WHERE NAME LIKE '%cell%';

-- 查看存储节点统计
SELECT * FROM V$SEGSTAT
WHERE NAME LIKE '%flash%';

-- 查看 I/O 延迟分布
SELECT * FROM V$IOSTAT_DETAIL;

Exadata vs 普通存储

特性普通存储Exadata
Smart Scan不支持支持
Storage Index不支持支持
Flash Cache
HCC不支持支持
IORM支持
网络1/10 GbE100 GbE InfiniBand
数据传输传整个数据块只传需要的列/行

面试高频问题

Q1: Smart Scan 是什么?

Smart Scan 是 Exadata 存储层的数据过滤技术,在存储层执行列过滤和行过滤,只将需要的数据传输到数据库服务器,减少网络传输量。

Q2: Storage Index 有什么用?

Storage Index 自动维护每个数据块的数据范围,快速跳过不包含查询条件的数据块,大幅减少 I/O 操作。

Q3: HCC 和普通压缩的区别?

HCC(混合列压缩)按列组织数据存储,相同值相邻,压缩率比普通行式压缩高很多(6-50x),适合分析型查询和冷数据存储。


总结

Exadata 是数据库一体机的标杆:

特性效果
Smart Scan减少 80%+ 数据传输
Storage Index减少 90%+ I/O
Flash Cache10x 读取加速
HCC10-50x 存储节省
IORM保证 QoS

Exadata 让大型数据库的性能达到新的高度。


下一步

基于 VitePress 构建