Category Archives: Sejiwon

세지원 블로그 공지사항

ROW vs PAGE 압축 비교 리포트 생성 스크립트

MSSQL에서 테이블 또는 인덱스에 대해 ROW 압축 vs PAGE 압축 효과를 비교하는 리포트 생성 스크립트는 공식 저장 프로시저인 sp_estimate_data_compression_savings 을 기반으로 작성할 수 있습니다. ✅ 📊 ROW vs PAGE 압축 비교 리포트 스크립트 아래는 테이블 내 모든 인덱스 및 파티션에 대해 압축 전후 공간 절약량을 계산하고, ROW / PAGE 압축 효과를 비교하는 T-SQL 스크립트입니다. 🔧… Read More »

파워쉘이나 SSIS와 연동한 자동화

MSSQL의 파티션별 압축을 자동화하려면, 다음 두 가지 접근 방식이 자주 사용됩니다: 🛠️ 1. PowerShell을 이용한 압축 자동화 PowerShell은 SQL Server Agent 작업과도 쉽게 연동되며, Windows 환경에서 손쉽게 예약 실행이 가능합니다. ✅ PowerShell 스크립트 예제 (동적 압축) # 변수 설정 $serverName = “localhost” $databaseName = “YourDatabase” $tableName = “YourTableName” # SQL 압축 명령 동적 생성 $query… Read More »

MSSQL 압축 스크립트와 예제 및 파티션별 압축 자동화 방법

✅ 1. 파티션별 압축 기본 스크립트 예제 🎯 목표: 특정 파티션만 PAGE 압축하기 ALTER TABLE dbo.YourTableName REBUILD PARTITION = 5 — 5번 파티션 WITH (DATA_COMPRESSION = PAGE); 📌 파티션 번호는 파티션 함수의 정의에 따라 다름. 아래에서 확인하는 방법 설명합니다. ✅ 2. 파티션 정보 조회 ▶ 파티션 번호와 범위 확인 스크립트: SELECT ps.partition_number, prv.value AS RangeValue,… Read More »

파티셔닝이 되어있는 테이블에 주로 insert만 발생하는 테이블을 처음부터 압축하는 경우와 보관전에 압축하는 경우 어떤 경우가 더 유리한가?

✅ 요점 먼저: 구분 초기부터 압축 보관 전 압축 ✅ 저장공간 절약 빠름 (즉시) 느림 (나중에) ✅ CPU 사용량 증가 증가 (한 번에) ✅ INSERT 성능 느려짐 (특히 Page 압축) 빠름 ✅ 관리 복잡도 단순 약간 복잡 ✅ 실무 적합도 (쓰기 위주 테이블) ❌ 적합하지 않음 ✅ 더 유리함 🧠 상세 분석: 📌 1. 처음부터… Read More »

MSSQL에서 테이블압축시 페이지단위와 로우단위 어느게 더 유리한가?

✅ 1. Row Compression (로우 압축) 🔹 작동 방식 🔹 장점 🔹 단점 ✅ 2. Page Compression (페이지 압축) 🔹 작동 방식 🔹 장점 🔹 단점 🆚 언제 무엇을 선택할까? 상황 권장 압축 방식 읽기 위주의 테이블 (OLAP, DW) ✅ Page 압축 자주 갱신되거나 쓰기가 많은 테이블 (OLTP) ✅ Row 압축 또는 압축 없음 공간… Read More »

실시간 대기 이벤트, 특정 세션의 I/O 정보, 병목 현상 분석 모니터링 쿼리

✅ 1. 실시간 세션 대기 및 병목 확인 (현재 실행 중인 요청) SELECT r.session_id, r.status, r.command, r.wait_type, r.wait_time, r.wait_resource, r.cpu_time, r.total_elapsed_time, r.logical_reads, r.reads AS physical_reads, r.writes, r.blocking_session_id, s.login_name, s.host_name, s.program_name, st.text AS sql_text FROM sys.dm_exec_requests r JOIN sys.dm_exec_sessions s ON r.session_id = s.session_id OUTER APPLY sys.dm_exec_sql_text(r.sql_handle) st WHERE r.session_id <> @@SPID ORDER BY r.total_elapsed_time DESC;… Read More »

해당 쿼리가 디스크i/o 논리i/o elapsetime 등을 확인하는 쿼리

✅ 1. 디스크 I/O (Physical I/O) sys.dm_io_virtual_file_stats를 사용 — 파일 수준의 I/O (읽기/쓰기 횟수 및 대기 시간). ✅ 2. 논리 I/O (Logical I/O) 쿼리 실행 시 발생한 페이지 읽기 횟수는 SET STATISTICS IO ON으로 확인 가능합니다. 예: SET STATISTICS IO ON; SET STATISTICS TIME ON; — 여기에 실행할 쿼리 SELECT * FROM YourTable WHERE YourCondition;… Read More »

mssql 에서 디스크i/o 확인하는 쿼리

MSSQL에서 디스크 I/O 사용량을 확인하려면 sys.dm_io_virtual_file_stats 및 sys.master_files 뷰를 활용할 수 있습니다. 아래는 데이터베이스별로 파일 I/O 통계를 보여주는 쿼리입니다: SELECT DB_NAME(vfs.database_id) AS database_name, mf.physical_name, mf.type_desc, 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_on_disk_MB, vfs.num_of_reads + vfs.num_of_writes AS total_io, vfs.io_stall_read_ms + vfs.io_stall_write_ms AS total_io_stall_ms FROM sys.dm_io_virtual_file_stats(NULL, NULL) AS vfs JOIN sys.master_files AS mf… Read More »

elapsetime과 disk i/o를 한번에 확인하는 쿼리

SQL Server에서 SQL 문장 단위로 Elapsed Time(전체 소요 시간)과 Disk I/O(Physical Reads)를 함께 확인하는 쿼리는 다음과 같이 구성할 수 있습니다. ✅ 목적: SQL 별 소요 시간 + 디스크 I/O 한눈에 보기 SELECT TOP 50 st.text AS sql_text, qs.execution_count, qs.total_elapsed_time / 1000 AS total_elapsed_ms, (qs.total_elapsed_time / qs.execution_count) / 1000 AS avg_elapsed_ms, qs.total_worker_time / 1000 AS total_cpu_ms,… Read More »

disk i/o와 logical i/o를 sqlid로 확인하는 mssql 쿼리

SQL Server에서는 Oracle의 SQL_ID처럼 하나의 SQL 문장을 식별해서 해당 쿼리의 Disk I/O (물리적 I/O) 및 Logical I/O (논리적 I/O) 정보를 확인할 수 있습니다. SQL Server에는 SQL_ID가 없지만, 유사하게 sql_handle 또는 query_hash를 사용하면 동일한 기능을 구현할 수 있습니다. ✅ 목표: “하나의 SQL 문장”별 Disk I/O + Logical I/O 확인 SQL Server에서는 다음 DMV들을 조합해 사용합니다: ✅… Read More »