
以下为 Oracle 19c 中 V$ASM_DISK_IOSTAT_SPARSE 动态性能视图的详细说明,涵盖作用、使用场景、字段含义、相关视图/基表、原理及常用查询:
1. 作用
V$ASM_DISK_IOSTAT_SPARSE 专门用于监控 稀疏磁盘(Thin-Provisioned Disks) 的 I/O 性能统计信息。它提供细粒度的读写延迟、操作次数等指标,帮助诊断 ASM 存储层性能瓶颈,尤其适用于云环境或虚拟化存储中精简配置的磁盘。
2. 使用场景
- 性能问题诊断:定位 ASM 磁盘响应慢的根本原因(如存储后端延迟)。
- 存储优化:识别高负载磁盘,调整数据分布或存储配置。
- 容量规划:监控稀疏磁盘的实际 I/O 压力,避免过度配置。
- 云/虚拟化环境:分析精简配置存储的性能表现(如 AWS EBS, VMware VMDK)。
- ASM 重平衡监控:观察重平衡操作对磁盘 I/O 的影响。
3. 字段含义 (Oracle 19c)
| 字段名 | 数据类型 | 说明 |
|---|---|---|
GROUP_NUMBER | NUMBER | 磁盘所属 ASM 磁盘组编号。 |
DISK_NUMBER | NUMBER | ASM 磁盘在组内的编号。 |
INST_ID | NUMBER | 实例 ID(RAC 环境有效)。 |
FIRST_STAT | DATE | 统计周期开始时间。 |
LAST_STAT | DATE | 统计周期结束时间。 |
READ_TIME | NUMBER | 总读取时间 (毫秒) - 所有读取操作耗时总和。 |
WRITE_TIME | NUMBER | 总写入时间 (毫秒) - 所有写入操作耗时总和。 |
READ_TIME_WAIT | NUMBER | 读取等待时间 (毫秒) - 等待存储响应的读取时间。 |
WRITE_TIME_WAIT | NUMBER | 写入等待时间 (毫秒) - 等待存储响应的写入时间。 |
BYTES_READ | NUMBER | 读取的总字节数。 |
BYTES_WRITTEN | NUMBER | 写入的总字节数。 |
SMALL_READ_REQS | NUMBER | 小读取 I/O 请求次数 (≤ 64KB)。 |
LARGE_READ_REQS | NUMBER | 大读取 I/O 请求次数 (> 64KB)。 |
SMALL_WRITE_REQS | NUMBER | 小写入 I/O 请求次数 (≤ 64KB)。 |
LARGE_WRITE_REQS | NUMBER | 大写入 I/O 请求次数 (> 64KB)。 |
READ_REQS | NUMBER | 总读取请求次数 (SMALL_READ_REQS + LARGE_READ_REQS)。 |
WRITE_REQS | NUMBER | 总写入请求次数 (SMALL_WRITE_REQS + LARGE_WRITE_REQS)。 |
4. 关键字段计算指标
- 平均读取延迟 (ms):
READ_TIME / READ_REQS
(若READ_REQS > 0) - 平均写入延迟 (ms):
WRITE_TIME / WRITE_REQS
(若WRITE_REQS > 0) - 读取吞吐量 (MB/s):
BYTES_READ / (1024*1024) / ((LAST_STAT - FIRST_STAT)*86400) - 写入吞吐量 (MB/s):
BYTES_WRITTEN / (1024*1024) / ((LAST_STAT - FIRST_STAT)*86400)
5. 相关视图与基表
- 相关视图:
V$ASM_DISK:磁盘基本信息(路径、状态、大小)。V$ASM_DISK_IOSTAT:所有磁盘的 I/O 统计(非稀疏专用)。V$ASM_DISKGROUP:磁盘组级统计。V$ASM_OPERATION:监控 ASM 重平衡操作。
- 基表:
视图数据源自 ASM 实例的内存结构(无持久化基表),由ASM 实例内核动态收集并更新。
6. 工作原理
- 数据来源:
ASM 实例跟踪每个 I/O 请求的元数据(大小、类型、耗时),按磁盘聚合统计。 - 稀疏磁盘专用:
仅统计标记为THIN_PROVISIONED的磁盘(通过V$ASM_DISK.IS_THIN= ‘Y’ 判断)。 - 统计周期:
数据在FIRST_STAT到LAST_STAT时间窗口内累计,重启 ASM 实例或磁盘重新配置会重置统计。 - RAC 支持:
在 RAC 中,每个 ASM 实例维护本地磁盘统计,INST_ID标识来源实例。
7. 常用 SQL 查询示例
(1) 查看所有稀疏磁盘 I/O 统计
SELECT
d.name AS disk_name,
d.path AS disk_path,
i.read_reqs AS reads,
i.write_reqs AS writes,
i.bytes_read/1048576 AS read_mb,
i.bytes_written/1048576 AS write_mb,
ROUND(i.read_time / DECODE(i.read_reqs, 0, 1, i.read_reqs), 2) AS avg_read_ms,
ROUND(i.write_time / DECODE(i.write_reqs, 0, 1, i.write_reqs), 2) AS avg_write_ms
FROM
v$asm_disk_iostat_sparse i
JOIN
v$asm_disk d ON (i.group_number = d.group_number AND i.disk_number = d.disk_number)
ORDER BY
avg_read_ms DESC;
(2) 识别高延迟稀疏磁盘 (读取 > 20ms)
SELECT
d.name,
i.avg_read_ms,
i.read_reqs
FROM
(SELECT
group_number,
disk_number,
read_time / NULLIF(read_reqs, 0) * 1000 AS avg_read_ms,
read_reqs
FROM
v$asm_disk_iostat_sparse) i
JOIN
v$asm_disk d USING (group_number, disk_number)
WHERE
i.avg_read_ms > 20 -- 阈值根据存储 SLA 调整
AND d.is_thin = 'Y';
(3) 按磁盘组汇总稀疏磁盘 I/O
SELECT
g.name AS dg_name,
COUNT(*) AS thin_disks,
SUM(i.read_reqs) AS total_reads,
SUM(i.write_reqs) AS total_writes,
ROUND(SUM(i.bytes_read)/1048576) AS total_read_mb,
ROUND(SUM(i.bytes_written)/1048576) AS total_write_mb
FROM
v$asm_disk_iostat_sparse i
JOIN
v$asm_diskgroup g ON (i.group_number = g.group_number)
GROUP BY
g.name;
(4) 计算每秒吞吐量 (需定期快照)
-- 首次查询 (保存快照)
CREATE TABLE iostat_snapshot AS SELECT * FROM v$asm_disk_iostat_sparse;
-- 等待一段时间 (e.g., 5分钟)
EXEC DBMS_LOCK.SLEEP(300);
-- 第二次查询并计算差值
WITH current_stats AS (
SELECT * FROM v$asm_disk_iostat_sparse
),
delta AS (
SELECT
c.group_number,
c.disk_number,
c.last_stat - s.last_stat AS elapsed_secs,
(c.bytes_read - s.bytes_read)/1048576 AS read_mb,
(c.bytes_written - s.bytes_written)/1048576 AS write_mb
FROM
current_stats c
JOIN
iostat_snapshot s
ON (c.group_number = s.group_number AND c.disk_number = s.disk_number)
)
SELECT
d.name,
ROUND(delta.read_mb / delta.elapsed_secs, 2) AS read_mb_sec,
ROUND(delta.write_mb / delta.elapsed_secs, 2) AS write_mb_sec
FROM
delta
JOIN
v$asm_disk d USING (group_number, disk_number);
8. 重要注意事项
- 统计重置条件:ASM 实例重启、磁盘 OFFLINE/ONLINE、磁盘组 REBALANCE 操作。
- 延迟更新:统计非实时更新,通常有数秒延迟。
- RAC 环境:需联合所有实例的
V$ASM_DISK_IOSTAT_SPARSE数据(通过INST_ID)。 - 与
V$ASM_DISK_IOSTAT区别:后者包含所有磁盘(含非稀疏),前者仅稀疏磁盘。 - 云环境适用性:在 AWS/Azure/GCP 中,此视图是诊断 EBS/Managed Disk/PD 性能的关键工具。
总结
V$ASM_DISK_IOSTAT_SPARSE 是 Oracle ASM 对精简配置(Thin-Provisioned)存储进行性能监控的核心视图。通过分析其提供的 I/O 延迟、吞吐量和操作次数,DBA 可精准定位存储层瓶颈,优化云数据库或虚拟化环境中的存储性能。使用时需结合时间窗口计算速率指标,并注意统计数据的重置条件。
欢迎关注我的公众号《IT小Chen》

被折叠的 条评论
为什么被折叠?



