MSSQL (Microsoft SQL Server)에서 Oracle의 v$sql 뷰와 유사

By | 2025-07-08

MSSQL (Microsoft SQL Server)에서 Oracle의 v$sql 뷰와 유사하게 실행 중이거나 캐시된 SQL 문장에 대한 정보를 제공하는 시스템 뷰나 DMV(Dynamic Management View)는 다음과 같습니다:


✅ Oracle의 v$sql이란?

Oracle에서 v$sql라이브 SQL 문, 캐시된 SQL 실행 계획, 실행 통계 등을 확인할 수 있는 뷰입니다.


✅ SQL Server에서 유사한 시스템 뷰

SQL Server에서는 다음 DMV들을 조합해서 사용합니다:

1. sys.dm_exec_query_stats

  • 실행된 쿼리들의 실행 통계 정보를 담고 있음
  • 실행 횟수, CPU 시간, 논리적 읽기, 실행 시간 등

2. sys.dm_exec_sql_text(sql_handle)

  • SQL 텍스트를 반환
  • sql_handle을 이용하여 dm_exec_query_stats와 조인

3. sys.dm_exec_query_plan(plan_handle)

  • 실행 계획 XML을 반환
  • plan_handle을 이용

✅ 예제 쿼리

sql복사편집SELECT 
    qs.execution_count,
    qs.total_worker_time AS total_cpu_time,
    qs.total_elapsed_time,
    qs.total_logical_reads,
    qs.creation_time,
    st.text AS sql_text,
    qp.query_plan
FROM 
    sys.dm_exec_query_stats qs
CROSS APPLY 
    sys.dm_exec_sql_text(qs.sql_handle) st
CROSS APPLY 
    sys.dm_exec_query_plan(qs.plan_handle) qp
ORDER BY 
    qs.total_worker_time DESC;

이 쿼리는 캐시에 저장된 쿼리들 중 CPU 사용량이 높은 순서로 SQL 문과 실행 계획을 보여줍니다.


✅ 관련 DMV 요약

DMV 이름설명
sys.dm_exec_query_stats실행 통계
sys.dm_exec_sql_textSQL 텍스트
sys.dm_exec_query_plan실행 계획 (XML 형태)
sys.dm_exec_requests현재 실행 중인 요청 정보
sys.dm_exec_sessions세션별 정보

✅ 현재 실행 중인 SQL 확인 예시

sql복사편집SELECT 
    r.session_id,
    r.status,
    r.start_time,
    st.text AS sql_text,
    r.cpu_time,
    r.total_elapsed_time
FROM 
    sys.dm_exec_requests r
CROSS APPLY 
    sys.dm_exec_sql_text(r.sql_handle) st
ORDER BY 
    r.cpu_time DESC;

필요 시, SSMS에서 “Activity Monitor”를 시각적으로 이용해도 일부 유사 정보를 볼 수 있습니다.

원하시는 데이터나 뷰가 특정 상황에 국한되었다면 알려주세요 — 예: 쿼리 성능 분석, 현재 실행 중인 것만, 캐시된 전체 등.

나의 말:

디스크i/o체크방법

ChatGPT의 말:

SQL Server에서 디스크 I/O 성능을 확인하는 방법은 여러 가지가 있으며, 상황에 따라 SQL Server DMV, PerfMon(성능 모니터), DMF, 시스템 뷰 등을 활용할 수 있습니다. 아래는 대표적인 방법들입니다:


✅ 1. DMV로 데이터베이스별 I/O 통계 확인

sys.dm_io_virtual_file_stats

sql복사편집SELECT 
    DB_NAME(vfs.database_id) AS database_name,
    mf.physical_name,
    vfs.num_of_reads,
    vfs.num_of_writes,
    vfs.io_stall_read_ms,
    vfs.io_stall_write_ms,
    vfs.size_on_disk_bytes / 1024 / 1024 AS size_mb
FROM 
    sys.dm_io_virtual_file_stats(NULL, NULL) AS vfs
JOIN 
    sys.master_files AS mf
    ON vfs.database_id = mf.database_id AND vfs.file_id = mf.file_id
ORDER BY 
    vfs.io_stall_read_ms + vfs.io_stall_write_ms DESC;

🔎 설명:

  • num_of_reads/writes: 읽기/쓰기 횟수
  • io_stall_read_ms/write_ms: 읽기/쓰기 대기 시간 (밀리초)
  • I/O 병목이 있는 파일 식별에 유용

✅ 2. 현재 I/O가 많은 쿼리 확인

sql복사편집SELECT 
    r.session_id,
    r.status,
    r.command,
    r.cpu_time,
    r.total_elapsed_time,
    r.reads,
    r.writes,
    st.text AS sql_text
FROM 
    sys.dm_exec_requests r
JOIN 
    sys.dm_exec_sessions s ON r.session_id = s.session_id
CROSS APPLY 
    sys.dm_exec_sql_text(r.sql_handle) st
ORDER BY 
    r.reads + r.writes DESC;

✅ 3. PerfMon (성능 모니터)

Windows Performance Monitor를 통해 체크할 수 있는 주요 I/O 관련 카운터:

  • PhysicalDisk\Avg. Disk sec/Read
  • PhysicalDisk\Avg. Disk sec/Write
  • PhysicalDisk\Disk Reads/sec
  • PhysicalDisk\Disk Writes/sec
  • LogicalDisk% Disk Time
  • SQLServer:Buffer Manager\Page reads/sec
  • SQLServer:Buffer Manager\Page writes/sec

⚠️ 참고: Avg. Disk sec/Read 또는 Write20ms(0.02초) 이상이면 느린 디스크로 간주


✅ 4. 쿼리별 논리/물리 읽기 확인 (실행계획 포함)

sql복사편집SET STATISTICS IO ON;
SET STATISTICS TIME ON;

-- 여기에 분석할 쿼리 작성
SELECT * FROM YourTable WHERE YourCondition;
  • STATISTICS IO: 논리/물리 읽기 수
  • STATISTICS TIME: CPU 시간과 전체 실행 시간

SSMS에서 실행하면 메시지 탭에 결과 표시됨.


✅ 5. TempDB I/O 확인

sql복사편집SELECT 
    vfs.database_id,
    DB_NAME(vfs.database_id) AS database_name,
    mf.physical_name,
    vfs.io_stall_read_ms,
    vfs.io_stall_write_ms,
    vfs.num_of_reads,
    vfs.num_of_writes
FROM 
    sys.dm_io_virtual_file_stats(NULL, NULL) AS vfs
JOIN 
    sys.master_files AS mf
    ON vfs.database_id = mf.database_id AND vfs.file_id = mf.file_id
WHERE 
    mf.database_id = 2 -- TempDB
ORDER BY 
    vfs.io_stall_write_ms DESC;

✅ 결론

목적사용 도구설명
전체 디스크 I/O 확인sys.dm_io_virtual_file_statsDB/파일별 읽기/쓰기/대기 시간
쿼리별 I/Osys.dm_exec_requests + dm_exec_sql_text현재 실행 중 쿼리 기준 I/O
실시간 OS 레벨 I/OPerformance Monitor디스크 지연, 읽기/쓰기 속도 등
특정 쿼리 성능 확인SET STATISTICS IO/TIMESQL 내부 I/O 측정

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다