SQL Server/SQL Server Tip 662

SQL Server Failover Cluster 구성

SQL Server Failover Cluster 구성 l Version : SQL Server 2019 SQL Server의 고가용성 중 하나인 SQL Server Failover Cluster (장애조치 클러스터) 인스턴스를 구성하는 방법에 대해서 알아본다. SQL Server 장애조치 클러스터를 구성하기 위해서는 Windows Failover Cluster이 먼저 구성되어 있어야 한다. 그리고 디스크 또한 공유 디스크를 사용이 필수이다. 이번 포스트에서는 Windows Failover Cluster 구성이 완료 되어 있다는 가정하에 SQL Server Failover Cluster만 구성하는 방법에 대해서 설명한다. 이번 포스트에서 구성하려는 장애조치 클러스터의 구성은 아래 그림과 같다. DB01 ..

SQL Server DELAYED_DURABILITY 옵션으로 트랜잭션 로그 쓰기 성능 개선 하기

SQL Server DELAYED_DURABILITY 옵션으로 트랜잭션 로그 쓰기 성능 개선 하기 l Version : SQL Server SQL Server 데이터베이스에는 모든 트랜잭션과 각 트랜잭션에 의해 적용된 데이터베이스 수정 내용을 기록하는 트랜잭션 로그가 있다. 트랜잭션 로그는 데이터베이스의 매우 중요한 요소로 시스템 오류가 발생한 경우 데이터베이스를 일관된 상태로 다시 전환하려면 이 로그가 필요하다. l 트랜잭션 로그 아키텍처 : https://learn.microsoft.com/en-us/sql/relational-databases/sql-server-transaction-log-architecture-and-management-guide?view=sql-server-ver16 데이터베이..

SQL Server 에서 AWS S3에 직접 백업하기

SQL Server 에서 AWS S3에 직접 백업하기 l Version : SQL Server 2022 SQL Server 2022부터는 데이터 플랫폼에 통합 오브젝트 스토리지를 도입하여 Azure Storage외에도 AWS S3 호환 오브젝트 스토리지도 사용할 수 있다. 즉, SQL Server에서 AWS S3로 직접 백업을 할 수 있게 되었다. 기존 SQL Server 2019의 경우 Microsoft Azure 저장소만 가능 하였다. SQL Server 2022 부터 도입된 S3 REST API는 SQL Server에서 AWS S3 직접 백업, 복원을 할 수 있어, 백업 후 이동에 따른 프로세스 단축 및 대용량 백업을 진행할 경우에도 로컬 공간이 부족하여도 백업을 진행할 수 있게 되었다. 지원되는 ..

VM 환경의 SQL Server에서 할당된 CPU를 모두 사용하지 못하는 현상

VM 환경의 SQL Server에서 할당된 CPU를 모두 사용하지 못하는 현상 · Version : SQL Server Virtual Machine (VM)의 성능이 향상됨에 따라 많은 시스템들이 Physical 서버에서 VM 머신으로 마이그레이션을 진행하고 있다. 이번 포스트는 Physical머신에서 VM으로 마이그레이션 후 SQL Server에서 할당된 CPU를 모두 사용하지 못하는 성능 문제에 대해서 다룬다. Host Server OS Windows Server 2019 Standard CPU 2 socket (64 Core) RAM 128GB VM Server OS Windows Server 2019 Standard SQL Server SQL Server 2016 Standard CPU 8 Cor..

SQL Server 복원 성능 최적화

SQL Server 복원 성능 최적화 · Version : SQL Server SQL Server에서 백업 파일을 복원할때 빠르게 복원하기 위한 최적화 방법을 소개한다. 이 방법을 사용한다고 해서 무조건 빠르게 복원되지는 않으며, 사용할 수 있는 시스템 리소스에 따라 최적화된 옵션을 제공함으로써 좀 더 빠르게 복원할 수 있게 유도 하는 것이다. 데이터베이스 백업 및 복원에 대한 통계를 확인하기 위해 추적 플래그 3213, 3605를 설정한다. DBCC TRACEON (3213, -1) DBCC TRACEON (3605, -1) 데이터베이스를 복원하면, SQL 이벤트 로그에서 아래와 같은 내용을 확인할 수 있다. 기본 설정을 사용하면 최대 전송크기는 1024K 이고 버퍼수는 6인것을 확인할 수 있다. 이때..

SQL Server 트랜잭션 로그 복원시 복원 시간이 오래 걸리는 현상

SQL Server 트랜잭션 로그 복원시 복원 시간이 오래 걸리는 현상 · Version : SQL Server 2016 Enterprise Edition SQL Server에서 트랜잭션 로그를 사용하여 데이터를 복원시, 평소와 다르게 매우 오래 걸리는 현상이 발생하였다. 처음에는 I/O 서브 시스템을 의심하고 물리장비 까지 교체하였으나, 증상을 동일하였다. 여러가지 가설을 세웠고, 원인 분석 결과, Slow query가 트랜잭션 로그의 복원시간과 관련이 있다는 것을 발견할 수 있었다. 필자의 운영 환경은 10분 마다 트랜잭션 로그 백업을 진행하고, 백업된 로그는 다른 서버에서 Read Only(STAND BY)로 복원하여 각 부서에서 사용할 수 있도록 로그 쉬핑을 구성하였다. 10분 마다 발생하는 로그..

SQL Server 2019 temp table을 사용한 워크로드에서 recompile 감소

SQL Server 2019 temp table을 사용한 워크로드에서 recompile 감소 · Version : SQL Server 2019 SQL Server 2019에는 응용프로그램 코드에 필요한 변경을 최소화 하면서 성능을 향상시키는 몇 가지 성능 최적화가 도입 되었다. 이번 포스트에서는 SQL Server 2019 성능 개선 사항 중 하나인 temp 테이블을 사용한 작업 부하에 대해 리컴파일 감소로 인한 성능 향상을 설명한다. · Intelligent query processing in SQL databases : https://docs.microsoft.com/en-us/sql/relational-databases/performance/intelligent-query-processing?vie..

Azure SQL Managed Instance 및 SQL Server 2016 Later에서 대기 통계 분석

Azure SQL Managed Instance 및 SQL Server 2016 Later에서 대기 통계 분석 · Version : Azure SQL, SQL Server 2016 Later 대기 통계(Wait Statistics)는데이터베이스 엔진에서 무언가를 기다리는 쿼리를 식별하는데 도움이 되며 쿼리 지속시간이 긴 이유를 분석할 수 있는 정보를 나타낸다. 이번 포스트에서는 워크로드가 대기하는 이유와 일부 리소스에서 대기중인 쿼리를 식별하는 방법에 대해서 살펴본다. Azure SQL Managed Instance를 사용하면 아래 DMV를 사용하여 쿼리가 리소스를 대기하는 이유를 찾을 수 있다. · sys.dm_os_wait_stats : 인스턴스 레벨에서 대기 정보 반환 · sys.query_stor..

SQL Server 2019에서 동기 통계 업데이트시 발생하는 쿼리 Blocking 확인

SQL Server 2019에서 동기 통계 업데이트시 발생하는 쿼리 Blocking 확인 · Version : SQL Server 2019 SQL Server에서 통계정보는 옵티마이저가 실행 계획을 생성할 때 참고하는 중요한 지표이다. 통계 자동 업데이트가 true 로 설정된 경우, 데이터의 변경이 특정 임계치 이상되면 자동으로 통계 정보를 업데이트 한다. · SQL Server Statistics : http://sqlmvp.kr/140165557766 이때 통계 정보를 업데이트하면서 블럭킹이 발생하는데 이전까지는 블럭킹이 발생한것에 대해서 확인할 방법이 없었다. SQL Server 2019 부터는 이러한 문제를 해결하기 위해 새로운 진단 데이터가 도입되었다. 통계 업데이트시 블럭킹을 발생하는 것을 재..

SQL Server 2019 Log Writer Workers

SQL Server 2019 Log Writer Workers · Version : SQL Server 2014, SQL Server 2016, SQL Server 2017, SQL Server 2019 SQL Server 2017은 숨겨진 스케줄러에서 최대 4개의 Log Writer Worker를 활용하여 트랜잭션 로그 처리 활동을 지원한다. SQL Server 2019 버전부터는 하드웨어 성능에 따라 최대 Log Writer Worker 수가 최대 8개까지 증가한다. ;with kgroups AS (SELECT kgroup_count = COUNT(DISTINCT processor_group) FROM sys.dm_os_nodes osn) SELECT SQLServer_version = SERVERP..