본문 바로가기

SQL Server

(28)
[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 를 묶어서 처리하는 ..
[Azure] Blob Storage 의 Credential 및 SAS 생성 (DATABASE BACKUP 오류 발생) 데이터베이스 백업 파일을 Azure Blob Storage 에 저장하려고 하니 아래와 같은 오류가 발생한다.Msg 3201, Level 16, State 1, Line 4Cannot open backup device 'https://.blob.core.windows.net///.bak'.Operating system error 50(The request is not supported.).Msg 3013, Level 16, State 1, Line 4BACKUP DATABASE is terminating abnormally. 이는 백업 하려는 Blob Storage 의 Credential 이 없어서 발생하였다.Azure Blob Storage 에 백업 파일을 저장하기 위해서는 Credential 및 SAS..
[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] 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 ..
[AWS] RDS SQL Server(MS-SQL) Agent Jobs 삭제 AWS RDS SQL Server 환경에서 SSMS 를 사용하여 SQL Server 에이전트 작업을 삭제할 수 없다. SSMS 에서 에이전트 작업을 삭제하려고 하면 아래와 같은 오류가 발생한다.The EXECUTE permission was denied on the object 'xp_regread', database 'mssqlsystemresource', schema 'sys'. AWS RDS는 Windows 레지스트리에 액세스하는 프로시저의 실행을 제한하는데,SSMS는 RDS에 의해 권한이 부여되지 않은 프로세스(xp_regread)를 실행하려고 시도한다. SQL Server 에이전트 작업은 msdb 의 sp_delete_job 저장 프로시저를 사용하여 삭제할 수 있다.-- 에이전트 작업 삭제EXE..
[SQL Server / MS-SQL] 특정 IP 주소별 국가(코드) 조회 특정 IP 주소를 가지고 국가코드(혹은 국가) 를 조회하려고 한다.하지만 IPv4 형식으로 DB 에서 조회 시 원하는 데이터를 얻을 수 없다. 이는 IP 주소를 정수형으로 변환하여 해결 할 수 있으며, 아래의 3가지 작업이 필요하다. 1. 국가별 IP 대역 테이블 생성2. IP 주소 정수화 변환 함수 생성3. IP 주소별 국가 코드 조회 SP 생성 (이건 필요에 따라 생성해도 되고 안해도 됨!)  우선, 국가별 IP 대역 데이터를 가져오자.국가별 IP 대역 데이터는 한국인터넷정보센터(KRNIC) 에서 가져올 수 있다.https://xn--3e0bx5euxnjje69i70af08bea817g.xn--3e0b707e/jsp/statboard/IPAS/ovrse/natal/IPaddrBandCurrent.js..
[SQL Server / MS-SQL] Msg 5030, The database could not be exclusively locked to perform the operation. (DB Collation 데이터 정렬 변경) 1. 오류 발생ALTER DATABASE [platform] COLLATE Korean_Wansung_CI_ASGO DB 의 Collation 을 변경하려고 하니, 아래와 같은 오류가 발생했다.The database could not be exclusively locked to perform the operation.작업을 수행하기 위해 데이터베이스를 단독으로 잠글 수 없습니다.  2. 오류 원인Collation 을 변경하려는 DB 가 다중 연결이 되어 있어 DB 의 Collation 을 변경 할 수 없기때문에 오류가 발생했다.  3. 오류 해결해당 데이터베이스를 SINGLE_USER 모드로 변경하여 모든 연결을 종료한 후, Collation 을 변경을 진행한다. -- SINGLE_USER 모드로 변경 ..

반응형