사전 구성 데이터베이스 최적화
SQL Server 모든 BizTalk Server 환경에서 중요한 역할을 하므로 최적의 성능을 위해 구성/조정해야 SQL Server 것이 가장 중요합니다. SQL Server 잘 수행되도록 조정되지 않으면 BizTalk Server 사용하는 데이터베이스가 병목 상태가 되고 BizTalk Server 환경의 전반적인 성능이 저하됩니다. 이 항목에서는 BizTalk Server 설치하고 BizTalk Server 데이터베이스를 구성하기 전에 따라야 하는 몇 가지 SQL Server 성능 최적화에 대해 설명합니다.
NTFS 파일 할당 단위 설정
SQL Server 물리적으로 연속된 8K 페이지 또는 64KB의 컬렉션인 Extents에 데이터를 저장합니다. 따라서 디스크 성능을 최적화하려면 사전 배포 I/O 모범 사례의 "디스크 구성 모범 사례"에 설명된 대로 NTFS 할당 단위 크기를 64KB로 설정합니다.
SQL Server 버전 및 버전에 대한 고려 사항
다양한 버전의 SQL Server BizTalk Server 환경의 성능에 영향을 줄 수 있는 다양한 기능을 제공합니다. 예를 들어 부하가 높은 조건에서 32비트 버전의 SQL Server 사용할 수 있는 데이터베이스 잠금 수를 초과할 수 있으며 이는 BizTalk 솔루션의 성능에 해롭습니다. 테스트 환경에서 "잠금 해제" 오류가 발생하는 경우 64비트 버전의 SQL Server MessageBox 데이터베이스를 보관하는 것이 좋습니다. 64비트 버전의 SQL Server에서는 사용 가능한 잠금 수가 크게 증가합니다.
BizTalk 환경에 필요한 데이터베이스 엔진 기능을 결정할 때 다음 표를 고려합니다. 클러스터링 지원, BizTalk Server 로그 전달 지원 또는 Analysis Services 지원이 필요한 대규모 엔터프라이즈 수준 솔루션의 경우 SQL Server 데이터베이스를 호스트하려면 SQL Server Enterprise Edition이 필요합니다.
SQL Server 버전에서 지원하는 기능의 전체 목록은 SQL Server Edition 및 지원되는 기능을 참조하세요.
데이터베이스 계획 고려 사항
빠른 스토리지(예: 빠른 SAN 디스크 또는 빠른 SCSI 디스크)에서 SQL Server 데이터베이스를 호스트하는 것이 좋습니다. RAID 5는 쓰기 속도가 느리기 때문에 RAID 5 대신 RAID 10(1+0)을 사용하는 것이 좋습니다. 최신 SAN 디스크에는 매우 큰 메모리 캐시가 있으므로 이러한 경우 raid 선택도 중요하지 않습니다. 성능을 높이기 위해 데이터베이스와 해당 로그 파일은 서로 다른 실제 디스크에 상주할 수 있습니다.
또한 SAN(스토리지 영역 네트워크)을 사용하는 경우 HBA(호스트 버스 어댑터) 큐 깊이를 조정하는 것이 좋습니다. 이는 I/O 처리량에 큰 영향을 미칠 수 있으며 기본 제공 값은 SQL Server 충분하지 않을 수 있습니다. 큐 깊이가 64이면 일반적으로 특정 공급업체 권장 사항이 없는 경우 좋은 시작점으로 받아들여지지만 최적의 값을 결정하려면 테스트가 필요합니다.
SQL Server 대한 최신 서비스 팩 및 누적 업데이트 설치
최신 서비스 팩 및 SQL Server 대한 최신 누적 업데이트와 최신 .NET Framework 서비스 팩을 설치합니다.
BIZTALK SERVER 및 SQL Server 모두에 SQL 서비스 팩 및 누적 업데이트를 설치합니다.
SQL Server 대한 서비스 팩 또는 누적 업데이트를 설치하는 경우 BizTalk Server 컴퓨터에 서비스 팩 또는 누적 업데이트도 설치합니다. BizTalk Server SQL Server 서비스 팩 및 누적 업데이트로 업데이트되는 SQL 클라이언트 구성 요소를 사용합니다.
빠른 SSD(반도체 드라이브)를 사용하여 SQL Server tembdb를 보관하는 것이 좋습니다.
하나 이상의 SSD(반도체 디스크) 드라이브를 사용하여 TempDB를 보관하는 것이 좋습니다. SSD 드라이브는 기존 하드 드라이브에 비해 상당한 성능 이점을 제공하며 주류 시장에 진입하면서 가격이 빠르게 하락하고 있습니다. TempDB 성능이 전반적인 SQL Server 성능의 핵심 요소인 경우가 많기 때문에 드라이브의 추가 초기 비용은 특히 SQL Server 성능이 중요한 엔터프라이즈 애플리케이션을 실행하는 경우 전반적인 향상된 SQL Server 성능에 의해 신속하게 회수되는 경우가 많습니다.
SQL Server 2008 R2 데이터 수집기 및 관리 Data Warehouse 구현하는 것이 좋습니다.
SQL Server 2008 R2는 새로운 데이터 수집기 및 관리 Data Warehouse 사용하여 테스트 및 추세 분석을 위해 환경/데이터베이스 성능 관련 데이터를 수집합니다. 데이터 수집기는 수집된 모든 데이터를 지정된 관리 Data Warehouse 유지합니다. 성능 최적화는 아니지만 성능 문제를 분석하는 데 유용합니다.
Windows Lock Pages in Memory 권한을 SQL Server 데 사용되는 계정 부여
SQL Server 서비스 계정에 Windows Lock Pages in Memory 권한을 부여합니다. 이 작업은 Windows 운영 체제가 물리적 메모리의 버퍼 풀에 할당된 메모리를 잠금하여 SQL Server 프로세스의 버퍼 풀 메모리를 페이징하지 않도록 해야 합니다.
랩 환경에서 Windows 정책 메모리의 페이지 잠금 옵션은 기본적으로 사용하도록 설정되었습니다. 메모리에서 페이지 잠금 옵션을 참조하세요.
중요
특정 제한 사항은 SQL Server 서비스 계정에 Windows Lock Pages in Memory 권한을 부여할 때 적용됩니다. 다음을 참조하세요.
SQL Server 서비스 계정에 SE_MANAGE_VOLUME_NAME 권한을 부여합니다.
SQL Server 서비스를 실행하는 계정에 '볼륨 유지 관리 작업 수행' Windows 권한이 있는지 확인하거나 해당 권한이 있는 그룹에 속하는지 확인합니다. 이렇게 하면 인스턴스 파일 초기화를 통해 데이터베이스가 자동 증가해야 하는 경우 최적의 성능을 보장할 수 있습니다.
최소 및 최대 서버 메모리 설정
BizTalk Server 데이터베이스를 호스트하는 SQL Server 실행하는 컴퓨터는 실행 SQL Server 전용이어야 합니다. BizTalk Server 데이터베이스를 호스트하는 SQL Server 실행하는 컴퓨터가 SQL Server 실행 전용인 경우 각 SQL Server instance '최소 서버 메모리' 및 '최대 서버 메모리' 옵션을 설정하여 할당할 고정 메모리 양을 지정하는 것이 좋습니다. SQL Server. 이 경우 "최소 서버 메모리" 및 "최대 서버 메모리"를 동일한 값(SQL Server 사용할 최대 실제 메모리 양과 같음)으로 설정해야 합니다. 이렇게 하면 이러한 값을 동적으로 관리하는 SQL Server 사용되는 오버헤드가 줄어듭니다. SQL Server 실행하는 각 컴퓨터에서 다음 T-SQL 명령을 실행하여 SQL Server 할당할 고정 메모리 양을 지정합니다.
sp_configure ‘Max Server memory (MB)’,(max size in MB)
sp_configure ‘Min Server memory (MB)’,(min size in MB)
SQL Server 메모리 양을 설정하기 전에 총 실제 메모리에서 Windows Server에 필요한 메모리를 빼 적절한 메모리 설정을 결정합니다. 이는 SQL Server 할당할 수 있는 최대 메모리 양입니다.
참고
BizTalk Server 데이터베이스를 호스트하는 SQL Server 실행하는 컴퓨터도 Enterprise Single Sign-On Master Secret Server를 호스트하는 경우 Enterprise Single Sign-On Service를 실행할 수 있는 메모리가 충분한지 확인하기 위해 이 값을 조정해야 할 수 있습니다. 마스터 비밀 서버에 고가용성을 제공하기 위해 SQL Server 클러스터에서 Enterprise Single Sign-On 서비스의 클러스터형 instance 실행하는 것은 드문 일이 아닙니다. 마스터 비밀 서버 클러스터링을 참조하세요.
tempdb 데이터베이스를 BizTalk Server 사용하는 각 SQL Server instance 크기가 같은 여러 데이터 파일로 분할합니다.
SQL Server 사용하는 비례 채우기 알고리즘은 데이터 파일의 크기를 기반으로 하기 때문에 tempdb에 사용되는 데이터 파일의 크기가 같은지 확인하는 것이 중요합니다. 데이터 파일이 같지 않은 크기로 만들어지면 비례 채우기 알고리즘은 모든 파일 간에 할당을 분산하는 대신 GAM 할당에 가장 큰 파일을 더 많이 사용하므로 여러 데이터 파일을 만드는 목적이 무효화됩니다. tempdb 데이터 파일의 최적 수는 tempdb에 표시되는 래치 경합의 정도에 따라 달라집니다. 일반적으로 데이터 파일 수는 CPU 수가 8개 이하인 프로세서 코어/CPU 수와 같아야 합니다. CPU가 8개 이상인 서버의 경우 CPU 수의 절반에 해당하는 데이터 파일을 만듭니다(다시 말하지만 래치 경합만 포함).
랩 환경에서는 아래 스크립트를 사용하여 각각 100MB 증가의 파일 크기가 1024MB이고 로그 파일이 100MB 증가하여 512MB인 8개의 TempDB 데이터 파일을 만들었습니다. 데이터 파일은 H: 드라이브로 이동되고 로그 파일은 드라이브 I:로 이동됩니다.
중요
이 스크립트는 "있는 그대로" 제공되며 데모 또는 교육용으로만 제공되며 사용자 고유의 위험에서 사용됩니다. 이 스크립트의 사용은 Microsoft에서 지원되지 않으며 Microsoft는 이 스크립트의 적합성을 보장하지 않습니다.
--<<<<<<<<<<----------------------------------------------------------------->>>>>>>>>>--
-- Use of included script samples are subject to the terms specified at
-- http://www.microsoft.com/info/cpyright.htm
--<<<<<<<<<<----------------------------------------------------------------->>>>>>>>>>--
--***Instructions***
-- 1. If running the script from a remote server, change the context in SSMS to target instance
-- 2. Enable SQLCMD mode (add & click toolbar button or toggle by clicking Query > SQLCMD Mode)
-- 3. Commence execution of scripts (recommend running statements discretely to more easily remedy potential problems)
-- 4. Examine servername & temp configuration
-- 5. If necessary, 1) Replace instance name in path to reflect target instance *all throughout script*
-- 2) Modify root drives to reflect drives designated for data & log (folder creation *and* ALTER DB statements)
-- 6. Resume script execution
-- 7. If necessary, create new folders
-- 8. Modify/Add data & log files
-- 9. Recycle SQL service using sqlservermanager10.msc
--10. Examine results & if appropriate, delete original tempdb data log files
--(if they were "moved", the original files aren't automatically deleted)
--<<<<<<<<<<----------------------------------------------------------------->>>>>>>>>>--
--1. If running the script from a remote server, change the context in SSMS to target instance
--2. Enable SQLCMD mode (add & click toolbar button or toggle by clicking Query > SQLCMD Mode)
--3. Commence execution of scripts (recommend running statements discretely to more easily remedy potential problems)
--4. Examine servername & temp configuration
SELECT @@SERVERNAME
EXEC dbo.sp_helpdb tempdb
--tempdev 1 C:\tempdb.mdf PRIMARY 8192 KB Unlimited 10% data only
--templog 2 C:\templog.ldf NULL 512 KB Unlimited 10% log only
GO
--5. If necessary, 1) Replace instance name in path to reflect target instance *all throughout script*
-- 2) Modify root drives to reflect drives designated for data & log (folder creation *and* ALTER DB statements)
--6. Resume script execution
--7. If necessary, create new folders
--!!md H:\MSSQL10.<instance>
--!!md H:\MSSQL10.<instance>\MSSQL
--!!md H:\MSSQL10.<instance>\MSSQL\DATA
GO
-- 8. Modify/Add data & log files
--note: even if the out-of-box mdf is already where it needs to be,
--the first command is necessary to modify size & filegrowth
ALTER DATABASE tempdb MODIFY FILE (NAME = tempdev , FILENAME = 'H:\tempdb.mdf' , SIZE = 1024MB , FILEGROWTH = 100MB)
ALTER DATABASE tempdb ADD FILE (NAME = tempdat2 , FILENAME = 'H:\tempdat2.ndf' , SIZE = 1024MB , FILEGROWTH = 100MB)
ALTER DATABASE tempdb ADD FILE (NAME = tempdat3 , FILENAME = 'H:\tempdat3.ndf' , SIZE = 1024MB , FILEGROWTH = 100MB)
ALTER DATABASE tempdb ADD FILE (NAME = tempdat4 , FILENAME = 'H:\tempdat4.ndf' , SIZE = 1024MB , FILEGROWTH = 100MB)
ALTER DATABASE tempdb ADD FILE (NAME = tempdat5 , FILENAME = 'H:\tempdat5.ndf' , SIZE = 1024MB , FILEGROWTH = 100MB)
ALTER DATABASE tempdb ADD FILE (NAME = tempdat6 , FILENAME = 'H:\tempdat6.ndf' , SIZE = 1024MB , FILEGROWTH = 100MB)
ALTER DATABASE tempdb ADD FILE (NAME = tempdat7 , FILENAME = 'H:\tempdat7.ndf' , SIZE = 1024MB , FILEGROWTH = 100MB)
ALTER DATABASE tempdb ADD FILE (NAME = tempdat8 , FILENAME = 'H:\tempdat8.ndf' , SIZE = 1024MB , FILEGROWTH = 100MB)
GO
ALTER DATABASE tempdb MODIFY FILE (NAME = templog , FILENAME = 'I:\templog.ldf', SIZE = 512MB , FILEGROWTH = 100MB)
GO
--8b. Modify log file: modify drive & instance name to reflect designated destination for tempdb log
--!!md I:\MSSQL10.<instance>
--!!md I:\MSSQL10.<instance>\MSSQL
--!!md I:\MSSQL10.<instance>\MSSQL\DATA
GO
-- 9. Recycle SQL service in SQL Server Services node of sqlservermanager10.msc
--note, if running script from a UNC share, SSMS will report an error,
--but SQL Server Configuration Manager will open if its location is in %path%
!!sqlservermanager10.msc
--10. Examine results & if appropriate, delete original tempdb data log files
--(if they were "moved", the original files aren't automatically deleted)
EXEC dbo.sp_helpdb tempdb
--!!del C:\tempdb.mdf
--!!del C:\templog.ldf
GO
SQL Server 2008 활동 모니터 또는 모니터링 SQL Server 성능에 설명된 SQL Server 2005 성능 대시보드 보고서를 사용하여 래치 경합 문제를 식별합니다.
수동으로 SQL Server 프로세스 선호도 설정
프로세스 선호도 옵션은 CPU가 16개 이상인 비 NUMA 컴퓨터에서 실행되는 고급 엔터프라이즈 수준 SQL Server 환경에서 성능 향상을 제공할 수 있습니다. 이는 MessageBox 데이터베이스의 공유 테이블에 대한 경합이 있는 처리량이 높은 BizTalk 환경에서 특히 그렇습니다. 랩 환경에서 사용된 SQL Server 컴퓨터는 NUMA를 사용할 수 없으며 16개의 코어가 있으므로 성능을 최적화하기 위해 아래 명령을 사용하여 프로세스 선호도를 설정했습니다.
SQL Server 프로세스 선호도를 0에서 15로 수동으로 설정하려면
ALTER SERVER CONFIGURATION
SET PROCESS AFFINITY CPU = 0 to 15
자세한 내용은 ALTER SERVER CONFIGURATION(Transact-SQL)을 참조하세요.
MSDTC 구성
SQL Server 및 BizTalk Server 간의 트랜잭션을 용이하게 하려면 MS DTC(Microsoft Distributed Transaction Coordinator)를 사용하도록 설정해야 합니다. SQL Server MSDTC를 구성하려면 운영 체제 성능 개선을 위한 일반 지침 항목을 참조하세요.
추적 플래그 T1118을 SQL Server 모든 인스턴스에 대한 시작 매개 변수로 사용하도록 설정
추적 플래그 –T1118을 구현하면 거의 모든 단일 페이지 할당을 제거하여 SQL Server 인스턴스 간 경합을 줄일 수 있습니다. 자세한 내용은 KB 328551: PRB: tempdb 데이터베이스에 대한 동시성 향상을 참조하세요.
최대 병렬 처리 수준, SQL Server 통계 또는 데이터베이스 인덱스 다시 작성 및 조각 모음에 대한 기본 SQL Server 설정을 변경하지 마세요.
SQL Server instance BizTalk Server 데이터베이스를 보관하는 경우 변경해서는 안 되는 특정 SQL Server 설정이 있습니다. 특히 SQL Server 최대 병렬 처리 수준, MessageBox 데이터베이스의 SQL Server 통계 및 데이터베이스 인덱스 다시 작성 및 조각 모음에 대한 설정을 수정해서는 안 됩니다. 변경해서는 안 되는 SQL Server 설정을 참조하세요.