본문 바로가기

DBMS/SQL Server (MS-SQL)

(33)
[SQL Server / MS-SQL] 저장 프로시저(Stored Procedure) 내용 조회 저장 프로시저(Stored Procedure) 에서만 조회하는 경우SELECT OBJECT_NAME(object_id) AS ProcedureName, OBJECT_DEFINITION(object_id) AS ProcedureDefinitionFROM sys.proceduresWHERE OBJECT_DEFINITION(object_id) LIKE '%ORDER BY [0-9]%' 다양한 객체 유형(저장 프로시저, 뷰, 함수 등) 에서 조회하는 경우SELECT B.name AS ProcedureName, A.definition AS ProcedureDefinitionFROM sys.sql_modules AINNER JOIN sys.objects B ON A.object_id = B.object_..
[SQL Server / MS-SQL] 테이블별 용량 및 ROW 수 조회 테이블별 용량 조회SELECT C.name AS [TableName], SUM(A.total_pages)*8.0/1024 AS [TotalSize(MB)]FROM sys.allocation_units AINNER JOIN sys.partitions B ON B.hobt_id = A.container_idINNER JOIN sys.table C ON B.object_id = C.object_idINNER JOIN sys.schemas D ON C.schema_id = D.schema_idGROUP BY C.nameORDER BY 2 DESC 테이블별 ROW 수 조회SELECT B.name AS [TableName], A.row_count AS [RowCount]FROM sys.dm_db_part..
[SQL Server / MS-SQL] Wait Stats (대기 통계) SQL Server 의 Wait Stats(대기 통계) 는 쿼리가 대기하는 시간을 측정하여 성능 병목 현상을 식별하는 데 중요한 역할을 한다. Wait Stats 에는 다양한 유형들이 있는데, 주로 확인해야 할 유형에 대해 살펴보자. Wait Stats (대기 통계) 유형 1. PAGEIOLATCH_디스크에 있는 데이터를 메모리로 로드할 때 발생하는 대기 시간이다. SQL Server는 데이터를 메모리에 로드하여 작업을 수행하는데, 이 과정에서 디스크 I/O가 필요하다. 이 때 디스크에서 데이터를 읽어 메모리로 가져오는 동안 발생하는 대기 시간이다. PAGEIOLATCH 유형PAGEIOLATCH_SH (Shared)읽기 작업을 위해 페이지를 공유 모드로 로드할 때의 대기 시간이다.주로 읽기 작업에서 발생..
[SQL Server / MS-SQL] VLF (가상로그파일 - Virtual Log File) VLF(가상로그파일 - Virtual Log File) 이란?SQL Server 에서 페이지(Page) 는 데이터 파일 내에서 데이터를 저장하는 가장 작은 저장 단위이다.이처럼 VLF(Virtual Log File) 는  물리적인 트랜잭션 로그 파일(LDF) 내에서 로그 데이터를 관리하는 논리적 단위이다.SQL Server는 로그 파일의 크기에 따라 VLF의 수와 크기를 결정하는데, VLF 는 로그 파일 크기가 확장이 되면 VLF 갯수 역시 증가하게 된다.데이터베이스 복구 프로세스의 초기 단계에서 SQL Server 는 모든 트랜잭션 로그 파일의 모든 VLF 를 검색하고, 목록을 작성한다.VLF 가 많으면 이 단계에서 VLF 를 검색하고, 목록을 작성하는 시간이 그만큼 오래걸리게 된다.VLF 수가 많아지..
[SQL Server / MS-SQL] ROW 모드와 BATCH 모드 (SQL 처리 방식) SQL 을 처리하는 방식에는 ROW 모드와 BATCH 모드가 있다.각각 어떤 방식인지 알아보자. ROW모드란? - ROW 모드는 한 번에 하나의 row 씩 데이터를 처리하는 방식으로, 각 로우에 대한 연산을 순차적으로 수행한다. - ROW 모드는 각각의 트랜잭션이나 쿼리가 작고 빈번할 때 적합하다. 작은 트랜잭션이나 빈번한 쿼리는 보통 데이터 조회나 변경을 소량의 데이터를 대상으로 하므로, ROW 모드의 순차적 처리 방식이 이러한 경우에 빠르고 효율적으로 처리를 가능하게 하기 때문이다. - 또, 각 로우에 대한 LOCK 을 개별적으로 관리할 수 있기 때문에, OLTP 환경에서 적합하며, 높은 동시성과 빠른 속도를 제공한다.BATCH 모드란? - BATCH 모드는 한 번에 여러 row 를 묶어서 처리하는 ..
[SQL Server / MS-SQL] 특정 테이블의 페이지 확인하기 (DBCC IND, DBCC PAGE) DBCC PAGE([DB명],[FileID],[PageID],조회옵션) DBCC PAGE 를 통해 특정 테이블의 페이지가 어떻게 되어있는지 확인해보자.DBCC PAGE 를 실행하기 위해서는 먼저 인덱스의 ID 를 알아야한다.  1. 인덱스ID 확인 인덱스ID 는 아래 쿼리를 통해 확인이 가능하다.SELECT name, index_id, type_descFROM sys.indexesWHERE object_id = OBJECT_ID('테이블명')  위 쿼리를 조회하면 인덱스명, 인덱스ID, 인덱스종류를 확인할 수 있다.인덱스에는 클러스터드 인덱스가 없는 경우와 있는 경우가 있다. 각각의 경우를 조회해보자. 테이블에 클러스터드 인덱스가 없는 경우type_desc 가 HEAP 으로 조회되며, index_id 는..
[SQL Server / MS-SQL] 페이지 및 익스텐트 아키텍처 (FPS, GAM, SGAM, IAM, BCM, DCM) 페이지(Page)SQL Server 의 페이지는 데이터 저장의 기본 단위이며, 하나의 페이지는 8KB 크기를 가진다. (페이지 크기 변경 불가)   *타 DBMS 와 비교!   - Oracle 의 데이터 저장 기본 단위는 '블록(Block)' 이며, 기본 크기는 8KB 이다. (2~32KB 사이로 변경 가능)   - MySQL 의 데이터 저장 기본 단위는 '페이지(Page)' 이며, 기본 크기는 16KB 이다. (4,8,16KB 로 변경 가능)SQL Server 의 데이터 파일(.mdf, .ndf) 은 연속적인 페이지의 집합으로 구성되어 있으며, 디스크 I/O 작업을 수행할 때 이러한 페이지들을 읽고 쓴다.  SQL Server의 데이터 파일은 크게 세 가지 유형의 페이지로 구성된다. 파일 헤더 페이지파..
[SQL Server / MS-SQL] Generate Scripts 이용하여 DB 복사/이관하기 데이터베이스를 복사/이관하는 방법이 여러개 있다.보통 간단하게 DB 를 백업하고 복원하는 식으로 진행하였는데 이번 복사 건은 Azure MI (A 서버) DB -> Azure SQL Database (B 서버) DB 로 복사해야하는 건으로 백업 및 복원이 불가하였다.  그래서 이번에는 SSMS 의 Generate Scripts 를 이용하여 복사해보려고 한다.  1. Tasks > Generate Scripts... 선택  2. 복사/이관을 원하는 object 선택Script entire database and all database objects : 전체 objects 복사Select specific database objects: 선택한 objects 만 복사 나는 Users 정보는 빼고 모두 복사하려..
[SQL Server / MS-SQL] MI database properties error (subquery returned more than 1 value.) 사용자가 진행한 백업과 자동 백업한 백업 정보가 msdb..backupset 테이블에 저장이 되는데동일한 db_id(database_name) 에 대한 여러 database_name 이 존재하여 발생하는 오류이다.  문제가 되는 백업 정보를 조회해보자.-- backupset 정보 조회SELECT DB_ID(database_name) AS dbid, database_name, backup_start_dateFROM msdb.dbo.backupsetWHERE type = 'D'ORDER BY DB_ID(database_name), database_name, backup_start_date 아래와 같이 동일한 dbid 에 database_name 이 여러개 저장되어 있는 것을 볼 수 있다.dbid ..
[SQL Server / MS-SQL] MS-SQL 에서 MySQL Linked Server 연결 1. MySQL 용 ODBC 다운로드https://dev.mysql.com/downloads/connector/odbc/ MySQL :: Download Connector/ODBCSelect Operating System: Select Operating System… Microsoft Windows Ubuntu Linux Debian Linux SUSE Linux Enterprise Server Red Hat Enterprise Linux / Oracle Linux Fedora Linux - Generic Oracle Solaris macOS Source Code Select OS Version: All Windows (x86dev.mysql.com  2. ODBC Data Source Administr..

반응형