MSSQL에서 자주 사용되는 중요한 시스템 스키마에 대해서 알아 봅시다.
시스템 스키마의 종류
1. sys스키마
가장 많이 사용되는 시스템 스키마
- sys.objects: 모든 객체 정보
- sys.tables: 모든 테이블 정보
- sys.columns: 모든 컬럼 정보
- sys.indexes: 모든 인덱스 정보
- sys.database_files: DB 파일 정보
- sys.dm_exec_sessions: 현재 연결된 세션 정보
2. INFORMATION_SCHEMA
ANSI SQL 표준을 따르는 시스템 뷰 집합
데이터베이스 구조 정보 제공
SELECT * FROM INFORMATION_SCHEMA.TABLES
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
- TABLES: 테이블 정보
- COLUMNS: 컬럼 정보
- ROUTINES: 저장 프로시저와 함수 정보
- CONSTRAINTS: 제약조건 정보
3. sys.dm_(Dynamic Management Views)
서버와 데이터베이스의 상태 모니터링
-- 현재 실행 중인 쿼리 확인
SELECT * FROM sys.dm_exec_requests
-- 가장 부하가 큰 쿼리 확인
SELECT * FROM sys.dm_exec_query_stat
- dm_exec_sessions: 현재 세션 정보
- dm_exec_requests: 실행 중인 요청 정보
- dm_os_wait_stats: 대기 통계
- dm_io_virtual_file_stats: IO 통계
4. sys.master
서버 수준의 메타데이터
DB 생성/삭제, 로그인 관리 등에 사용
-- 테이블의 모든 컬럼 정보 조회
SELECT
c.name AS 컬럼명,
t.name AS 데이터타입,
c.max_length AS 길이,
c.is_nullable AS Null허용
FROM sys.columns c
JOIN sys.types t ON c.system_type_id = t.system_type_id
WHERE object_id = OBJECT_ID('테이블명')
-- 데이터베이스 크기 확인
SELECT
DB_NAME() AS DB명,
(SELECT SUM(size)*8/1024
FROM sys.database_files) AS '전체크기(MB)'
-- 현재 실행중인 프로세스 확인
SELECT
session_id,
start_time,
status,
command,
db_name(database_id) AS DB명,
blocking_session_id AS 블로킹세션,
wait_type AS 대기유형,
wait_time AS 대기시간
FROM sys.dm_exec_requests
WHERE session_id > 50 -- 시스템 프로세스 제외
마침.
'♣ Learning Logs > MSSQL' 카테고리의 다른 글
[MSSQL] DB 통합시 고려사항 (0) | 2024.10.25 |
---|---|
[MSSQL] 프로파일러 설정 (0) | 2024.10.25 |
[MSSQL]모든 테이블 인덱스 크기 조회 (0) | 2024.10.25 |
[MSSQL] 트랜잭션 로그 시점 복원(.trn) (0) | 2024.10.03 |
[MSSQL] DB 파일 사이즈 관리하기 (0) | 2024.09.25 |