데이터베이스 개발자 Tip & 강좌

SQLER의 개발자들이 만들어가는 데이터베이스 사용자 Tip & 강좌 게시판입니다. SQL서버, Oracle, MySQL 등 여러 클라우드/오픈소스 기반 데이터베이스 개발 및 운영 관련 팁과 쿼리 노하우를 이곳에서 가장 먼저 접하실 수 있습니다. 많은 도움 되시길 바랍니다.

대량 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

 

 

 


강성욱 / jevida@naver.com
Microsoft SQL Server MVP
Blog : http://sqlmvp.kr
Facebook : http://facebook.com/sqlmvp

No. Subject Author Date Views
1850 프로파일러를 이용한 중첩된 프로시저 디버깅 jevida(강성욱) 2016.10.07 1554
1849 SAN 스토리지 성능 모니터 - SAN 스토리지를 사용하는 경우 성능 카운터를 어떻게 모니터링 할까? jevida(강성욱) 2016.10.07 1731
1848 저장된 Plan Cache 확인 및 활용 jevida(강성욱) 2016.10.07 4569
1847 Xp_fixeddrives 세부 정보 확인하기 jevida(강성욱) 2016.10.07 1730
1846 강제 매개변수화로 인한 성능 저하 사례 jevida(강성욱) 2016.10.07 1559
1845 파라메터 스니핑과 데이터 스큐 jevida(강성욱) 2016.10.07 1528
1844 DBCC CHECKDB 버그 및 해결 방법 jevida(강성욱) 2016.10.07 1539
1843 NOLOCK HINT 이해 jevida(강성욱) 2016.10.07 7808
1842 인증으로부터 분리된 사용자 방지 jevida(강성욱) 2016.10.07 2176
1841 비관리자 계정으로 쿼리 계획 보기 jevida(강성욱) 2016.10.07 1242
1840 SSMS 폴링 간격 구성 jevida(강성욱) 2016.10.07 1771
1839 Deadlock 감지하여 알림하기 jevida(강성욱) 2016.10.07 1777
1838 Suspect_pages 테이블 이해 및 관리 jevida(강성욱) 2016.10.07 1371
1837 SSRS SocketException jevida(강성욱) 2016.10.07 1472
1836 파티션 분할 시 I/O 최소화 하기 jevida(강성욱) 2016.10.07 1858
» 대량 BCP 작업 시 발생하는 오류 (665, 1450, 33) jevida(강성욱) 2016.10.07 1648
1834 기본 추적(default tace) 활성화 및 로그 확인 jevida(강성욱) 2016.10.07 1390
1833 SQL Server ALTER TABLE syntax diagrams jevida(강성욱) 2016.10.07 1161
1832 SQL Server Performance Counter Guidance jevida(강성욱) 2016.09.30 2506
1831 SQL Server CREATE TABLE syntax diagrams jevida(강성욱) 2016.09.30 1421





XE Login