성능 최대화

이 항목에는 DB2용 데이터 공급자를 사용할 때 성능을 최대화하는 데 도움이 되는 다음 섹션이 포함되어 있습니다.

성능 구성

성능을 향상시키려면 다음과 같은 방법으로 공급자를 구성합니다.

연결 시작 시간을 줄이기 위한 풀 공급자 리소스

연결 풀링(Connection Pooling)은 클라이언트 컴퓨터의 메모리 사용률을 줄이면서 연결 시작 시간을 줄이는 클라이언트 쪽 최적화입니다. ADO.NET 공급자, OLE DB 공급자, 엔터티 공급자 및 BizTalk 어댑터는 연결 풀링을 지원합니다. ADO.NET 연결 문자열 또는 OLE DB 데이터 원본 초기화 문자열(연결 풀링=True)을 사용하여 풀링을 지정할 수 있습니다. 또한 데이터 원본 마법사의 고급 대화 상자와 데이터 링크의 모든 대화 상자를 사용하여 풀링을 구성할 수 있습니다.

공급자는 Max Pool Size 속성을 기반으로 연결 캐시를 유지 관리합니다. 기본 풀 크기는 데이터 원본 마법사 또는 데이터 링크의 모든 대화 상자를 사용하여 조정할 수 있는 100개의 연결(최대 풀 크기=100)입니다. 최대 풀 크기 속성에 대한 상한은 없습니다. Max Pool Size 속성에 대해 0보다 작은 값을 구성하는 경우 기본값 100이 사용됩니다.

필요에 따라 몇 초를 지정하여 데이터 공급자가 클라이언트 쪽 풀링을 사용하여 연결을 설정할 때까지 기다리도록 지시할 수 있습니다. 풀의 모든 연결이 사용 중이고 시간 제한 기간이 만료되면 데이터 공급자는 데이터 소비자에게 오류를 반환합니다("연결을 사용할 수 없음"). 기본값은 15초(Connect Timeout=15)이며, 데이터 원본 마법사 또는 데이터 링크의 모든 대화 상자를 사용하여 조정할 수 있습니다. Connect Timeout 속성에 대한 상한은 없습니다. 데이터 공급자가 클라이언트 쪽 연결 풀에서 열린 연결을 무기한 대기하도록 지시하는 -1 지정합니다.

데이터를 가져오는 경우 행 집합 캐시 최적화

RowsetCacheSize 속성은 동시에 행을 처리하고 데이터 소비자에게 반환하는 동안 DB2에서 행을 미리 가져오도록 데이터 공급자에게 지시합니다. 이 기능은 다중 프로세서 또는 다중 코어 컴퓨터에서 대량 읽기 전용 작업의 성능을 향상시킬 수 있습니다. 이 속성의 기본값은 0(RowsetCacheSize=0)이며, 이는 선택적 프리페치 기능이 "off"임을 나타냅니다. 데이터 원본 마법사 또는 데이터 링크의 모든 대화 상자를 사용하여 조정할 수 있는 초기 권장 값이 10인 10에서 100 사이의 값을 설정하는 것이 좋습니다. 이 속성은 데이터 공급자의 행 집합 캐시에 저장된 지정된 행 일괄 처리 수까지 미리 가져오도록 데이터 공급자에게 지시합니다. 행 일괄 처리의 크기는 소비자가 지정한 OLE DB IRowset::GetNextRows 인터페이스의 cRows 값에 따라 자동으로 결정됩니다.

실행될 때까지 매개 변수를 사용하여 명령 준비 지연

준비 연기는 매개변수가 포함된 INSERT, UPDATE, DELETE 및 SELECT 명령어의 처리를 최적화하고 준비 과정을 연기하도록 데이터 공급자에게 지시합니다. ADO.NET 연결 문자열 또는 OLE DB 데이터 원본 초기화 문자열(Defer Prepare=True)을 사용하여 이 옵션을 지정할 수 있습니다. 또한 데이터 원본 마법사의 고급 대화 상자와 데이터 링크의 모든 대화 상자를 사용하여 풀링을 구성할 수 있습니다. INSERT, UPDATE 및 DELETE 명령의 경우 데이터 공급자는 준비, 실행 및 커밋 명령을 하나의 네트워크 흐름에서 원격 데이터베이스로 결합합니다. SELECT 명령의 경우 데이터 공급자는 준비 및 실행 명령을 하나의 네트워크 흐름으로 결합합니다. 이렇게 하면 네트워크 트래픽이 최소화되고 전반적인 성능이 향상되는 경우가 많습니다.

단일 작업 단위로 여러 행 보내기

DB2용 데이터 공급자는 소비자가 TCP/IP 네트워크 패킷을 더 잘 사용하고 전반적인 성능을 향상시키는 최적화된 일괄 처리에서 여러 INSERT 문을 실행할 수 있도록 하는 대량 삽입 작업을 지원합니다. 개발자는 ADO.NET 공급자를 사용하여 MsDb2Client.BulkCopy 인터페이스를 사용할 수 있습니다. 개발자는 OLE DB 공급자를 사용하여 SQL Server 2012 Integration Services OLE DB 대상과 함께 OLE DB IRowsetFastLoad 인터페이스를 사용할 수 있습니다. 개발자는 DB2용 BizTalk 어댑터를 사용하여 송신 포트 업데이트그램을 사용할 수 있습니다.

장기 실행 쿼리를 종료하는 명령 제한 시간

ADO.NET DB2용 데이터 공급자 및 DB2용 OLE DB 공급자는 개발자가 성능에 부정적인 영향을 줄 수 있는 장기 실행 쿼리를 자동으로 종료할 수 있도록 명령 시간 제한 속성을 제공합니다.

ADO.NET Command.CommandTimeout 속성의 기본값은 30초이므로 공급자가 명령이 실행되기까지 30초를 기다리도록 지시합니다. OLE DB 행 집합 DBPROP_COMMANDTIMEOUT 기본값은 0입니다. 즉, 시간 제한이 없습니다. SQL Server 2008 R2와 같은 여러 소비자에서 명령 시간 제한 값을 지정할 수 있습니다.

성능 측정

성능을 측정하기 위해 데이터 공급자는 성능 카운터를 제공합니다. 기본적으로 성능 카운터는 꺼져 있습니다. 다음 레지스트리 키의 값을 1로 변경하여 설정할 수 있습니다.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Host Integration Server\Data Integration\UpdateCounters = 1

데이터 공급자 성능 카운터는 열린 연결, 열린 문, 패킷 및 수신된 바이트, 평균 호스트(DB2 서버) 처리 시간, 명령 실행, 데이터 페치 및 트랜잭션 커밋/롤백에 대한 정보를 캡처합니다.

또한 참조하십시오

성능 문제
데이터 통합(작업)