Giới thiệu chi tiết về khung nhìn hiệu năng động V$ASM_DISK_IOSTAT_SPARSE trong Oracle

1. Mục đích

Khung nhìn V$ASM_DISK_IOSTAT_SPARSE theo dõi thống kê I/O cho đĩa mỏng (Thin-Provisioned Disks) trong Oracle ASM. Nó cung cấp chỉ số chi tiết về độ trễ đọc/ghi, số lượng thao tác và lưu lượng, giúp chẩn đoán điểm nghẽn hiệu năng ở tầng lưu trữ.

2. Tình huống ứng dụng

  • Phân tích nguyên nhân chậm trễ I/O từ hệ thống lưu trữ
  • Nhận diện đĩa tải cao để tối ưu phân bố dữ liệu
  • Giám sát áp lực I/O thực tế trên đĩa mỏng
  • Đánh giá hiệu năng lưu trữ ảo hóa (AWS EBS, VMware VMDK)
  • Theo dõi tác động của thao tác cân bằng lại ASM

3. Ý nghĩa trường dữ liệu (Oracle 19c)

Tên trườngKiểu dữ liệuMô tả
GROUP_NUMBERNUMBERMã nhóm đĩa ASM
DISK_NUMBERNUMBERMã đĩa trong nhóm
INST_IDNUMBERID instance (hiệu lực trong RAC)
READ_TIMENUMBERTổng thời gian đọc (ms)
WRITE_TIMENUMBERTổng thời gian ghi (ms)
BYTES_READNUMBERTổng byte đọc
LARGE_WRITE_REQSNUMBERSố yêu cầu ghi lớn (>64KB)
READ_REQSNUMBERTổng yêu cầu đọc

4. Công thức tính toán chính

  • Độ trễ đọc trung bình: READ_TIME / NULLIF(READ_REQS,0)
  • Băng thông đọc (MB/s): BYTES_READ / (1048576 * thời_gian)

5. Khung nhìn liên quan và bảng cơ sở

  • Khung nhìn liên quan:
    • V$ASM_DISK: Thông tin cơ bản đĩa
    • V$ASM_DISK_IOSTAT: Thống kê I/O cho mọi đĩa
  • Dữ liệu nguồn: Cấu trúc bộ nhớ ASM (không lưu trữ vĩnh viễn)

6. Nguyên lý hoạt động

  • ASM thu thập metadata I/O theo thời gian thực
  • Chỉ áp dụng cho đĩa có IS_THIN='Y'
  • Thống kê được thiết lập lại khi khởi động lại ASM
  • Hỗ trợ môi trường RAC qua INST_ID

7. Truy vấn SQL thực tế

-- Phân tích đĩa có độ trễ cao
SELECT 
    disk.NAME,
    stats.TB_DOC,
    stats.SO_LAN_DOC
FROM (
    SELECT 
        NUM_NHOM,
        SO_DIA,
        DOC_TIME / NULLIF(SO_DOC,0) * 1000 AS TB_DOC,
        SO_DOC
    FROM V$ASM_DISK_IOSTAT_SPARSE
) stats
JOIN V$ASM_DISK disk 
    ON stats.NUM_NHOM = disk.GROUP_NUMBER 
    AND stats.SO_DIA = disk.DISK_NUMBER
WHERE 
    stats.TB_DOC > 20
    AND disk.IS_THIN = 'Y';
-- Tính toán băng thông theo thời gian
BEGIN
    EXECUTE IMMEDIATE 'DROP TABLE snapshot_iostat';
EXCEPTION WHEN OTHERS THEN NULL;
END;
/
CREATE TABLE snapshot_iostat AS SELECT * FROM V$ASM_DISK_IOSTAT_SPARSE;

EXEC DBMS_LOCK.SLEEP(300); -- Chờ 5 phút

WITH current_data AS (
    SELECT * FROM V$ASM_DISK_IOSTAT_SPARSE
),
delta AS (
    SELECT 
        c.NUM_NHOM,
        c.SO_DIA,
        (c.BYTES_READ - s.BYTES_READ)/1048576 AS DOC_MB,
        (c.LAST_STAT - s.LAST_STAT)*86400 AS THOI_GIAN
    FROM current_data c
    JOIN snapshot_iostat s 
        ON c.NUM_NHOM = s.NUM_NHOM 
        AND c.SO_DIA = s.SO_DIA
)
SELECT 
    d.NAME,
    ROUND(delta.DOC_MB / delta.THOI_GIAN, 2) AS DOC_MB_s
FROM delta
JOIN V$ASM_DISK d USING (NUM_NHOM, SO_DIA);

8. Lưu ý quan trọng

  • Thống kê thiết lập lại khi: Khởi động ASM, thay đổi trạng thái đĩa
  • Dữ liệu có độ trễ cập nhật vài giây
  • Trong RAC: Tổng hợp dữ liệu từ mọi instance
  • Khác biệt với V$ASM_DISK_IOSTAT: Chỉ xử lý đĩa mỏng

Thẻ: Oracle-ASM V$ASM_DISK_IOSTAT_SPARSE Thin-Provisioning I/O-Performance Oracle-RAC

Đăng vào ngày 25 tháng 5 lúc 13:36