SQL Server/SQL Server Tip

대량 BCP 작업 시 발생하는 오류 (665, 1450, 33)

SungWookKang 2015. 7. 22. 10:35
반응형

대량 BCP 작업 시 발생하는 오류 (665, 1450, 33)

 

  • Version : SQL Server 2005, 2008, 2008R2, 2012

 

SQL Server에서 특정 테이블의 데이터를 내려받고 싶을 때(특히 대량의 데이터) 일반적으로 많이 사용하는 방법이 BCP를 이용한 방법이다.

 

BCP를 이용하여 데이터를 내려 받을 때 한계용량은 얼마일까? 테이블 크기만큼 똑같이 내려 받을 수 있을까?

 

다음 사례는 CSS SQL Server Engineer 팀 블로그에 게재된 내용으로 대량의 데이터를 BCP로 내려 받을 때 발생하는 오류 및 원인을 설명 한다. 필자가 이해한 내용을 바탕으로 요약 하였으며 번역의 오류나 기술적 오류가 있음을 인지 한다.

 

최근 고객 데이터베이스로부터 BCP를 사용하여 데이터를 내려받는 중 665 문제가 발생하였다. BCP를 사용하였을 때 첫 번째 인스턴스는 문제가 없었으나 두 번째 인스턴스에서 오류가 발생 하였다.

분석 결과 오류번호 665는 writeFile을 호출하는 동안 파일 시스템 제한 문제였다.

NTFS File Growth : http://blogs.technet.com/b/askcore/archive/2009/10/16/the-four-stages-of-ntfs-file-growth.aspx

 

요약하면 하나의 NTFS파일이 최대 할당 상태에 있을 때 포인트 속성 목록 항목에 대한 MTF 할당(1K)한다. 자식레코드(1K 할당) 고정 정보는 시작 물리적 클러스터와 인접 클러스터의 세그먼트 파일에 할당되는데 실행한 BCP 작업은 이들 작업보다 더 많은 조각난 파일을 할당한다.

 

조가화의 예는 다음과 같다.

  • Mapping Pair (Physical Cluster, ## of Clusters From Physical)
  • The file segment starts at physical cluster 100 and used 8 clusters.
  • The entry is 100, 8

 

클러스터 크기와 MTF 크기는 NTFS 파일을 수용 할 수 있는 최대 크기를 결정한다. NTFS에 대한 자세한 내용은 다음 링크를 참고 한다.

 

 

 

이번 BCP 시나리오에서는 많은 인스턴스들의 BCP 작업은 빠른 속도로 파일 시스템 제한을 발생 하였다. 동일한 디스크 LUN에서 일어나는 많은 할당은 조각화 수준의 가능성을 제기하고 내부적으로 매핑 쌍 공간에 압력을 발생한다.

 

BCP 쓰기는 4K 버퍼를 사용한다. BCP는 버퍼를 채우고 반복해서 쓴다. 시스템이 4K 클러스터를 정렬을 사용하면 동일한 물리적 매체에 있는 여러 개의 복사본 사이에서 클러스터 4K 접촉을 허용한다.

 

빅데이터 작업을 처리하기 위한 몇 가지 방법을 소개한다.

QEF 사용

  • 4K의 MTF를 할당 할 수 있는 QFE를 제공한다. MTF의 크기를 늘리면 모든 파일은 물리적 스토리지의 4K를 필요로 한다.

NTFS 압축 방지

  • 대상 파일에 대한 NTFS 압축을 사용하지 말라. NTFS 압축은 더 많은 매핑 쌍을 사용한다.

64K 클러스터 사용

  • 각 클러스터에 대해 더 큰 할당을 추적 할 수 있다.

조각모음

  • 물리적 조각모음은 도움이 된다.

BCP

  • 가능한 별도의 물리적 경로를 사용하여 조각화를 일으키는 원인을 피한다.
  • 한계치를 방지하기 위해 합리적인 파일 크기와 데이터 청크를 구성한다

백업

  • 백업 시 압축을 사용한다.
  • 물리적 I/O를 분리한다.

MDF/NDF/LDF

  • 자동증가 작업을 피한다.
  • 물리적 조각화에 대해 낮은 드라이브 사용한다.
  • NTFS 압축 볼륨의 읽기 전용 데이터베이스에 주의한다.

 

[이벤트 오류]

  • 33 – 다른 프로세스가 참조하는 파일의 일부를 잠궈 프로세스가 파일을 액세스 할 수 없다. NTFS 압축이 활성화 될 때 일반적으로 발생한다.
  • 665 – 요청한 작업으로 인해 파일 시스템 제한을 완료 할 수 없다.
  • 1450 – 시스템 리소스가 부족하기 때문에 요청한 서비스를 완료 할 수 없다.

 

 

[참고자료]

CSS SQL Server Engineer : http://blogs.msdn.com/b/psssql/archive/2012/07/25/how-it-works-sql-server-bcp-database-i-o-backup-restore-reports-operating-system-error-665-1450-or-33-when-writing-to-the-file-big-data.aspx

 

 

 

2013-08-14 / 강성욱 / http://sqlmvp.kr

 

 

 

반응형