이상한 점이 있습니다 : BULK INSERT를 실행하여 거대한 텍스트 파일의 테이블에 2 천만 개 정도의 레코드를 추가 할 때 잠시 동안 실행 한 후 2,500,000 개의 행이 있습니다 ... 15 분 후에 다시 봅니다. 2,200,000 개의 행이 있습니다 ... 조금 후에 2,000,000 명이 있습니다. 어떻게 BULK INSERT 중에 레코드 수를 줄일 수 있습니까? 나는 디스크 가득한 경고 몇 개를 알아 차렸다. SQL Server는 드라이브가 꽉 차있을 때 어떻게 든 레코드 삭제를 시작합니까? 도움!SQL Server 레코드가 손실 되었습니까?
답변
나는 2 백만 레코드의 몇 배치에서 이것을 시도 할 것이고 어떤 일이 일어날지를 볼 것이다. 나는 Microsoft's documentation에서이 뽑아 :
성능 고려 페이지 수는 하나의 일괄 처리에서 플러시 내부 임계 값, 풀을 식별하는 데 발생할 수있는 버퍼의 전체 검사를 초과 할 경우
일괄 처리 이 커밋 할 때 플러시 할 페이지 이 전체 검사는 대량 가져 오기 성능을 저하시킬 수 있습니다. 대형 버퍼 풀이 저속 I/O 하위 시스템과 결합 될 때 내부 임계 값을 초과 할 가능성이 있습니다 ( ). 큰 컴퓨터에서 버퍼 오버플로를 피하려면 TABLOCK 힌트 ( 일괄 최적화 제거)를 사용하거나 작은 일괄 처리 크기 ( 일괄 최적화 유지)를 사용하지 마십시오. 컴퓨터가 다양하기 때문에 은 데이터로드가있는 다양한 배치 크기를 으로 테스트하는 것이 가장 좋습니다.
bcp utility을 사용하는 것이 좋습니다.
안녕, dylpickle! 글쎄, 이것은 일반적으로 지금까지 OK, 항상 많은 레코드를 가지고 일하고있다. 디스크가 가득 차서 작동하는지 궁금합니다. 그러나 그것은 여전히 대량 삽입물이 계속 실행되는 것처럼 레코드 수가 줄어들고있는 이유를 설명하지 않습니다 ... ???? !! –
그래, 이상 하네. 나는 Bob Kaufman이 rollback 아이디어를 가지고 있을지도 모른다고 생각한다. 디스크 공간과 로그 크기는 진단하는데 도움이되는 정보가 부족합니다. – dylpickle
SQL Server는 스레드 및 작업 목록을 사용합니다. 벌크 스레드가 일괄 적으로 대량의 삽입 작업을 처리/디스크에 기록한다고 가정 해 보겠습니다. 그런 다음 실제로 디스크에 쓰는 다른 스레드가 있는데, OS가 디스크에 직접 쓰는 것을 기다려야 만합니다. 그런 다음 작업을 수행하여 디스크에 씁니다. 작업에서 오류가 발생하면 오류가 발생하고 정리, 종료 및 다음 쓰기 창을 기다린 후 다음 배치로 반복합니다. 그것이 작업이 동기 상태로 계속 실행되는 방법입니다. 때로는 멈추지도 않고 멈추지도 않습니다. – Tschallacka
- 1. SQL Server - 인덱스 손실 시나리오
- 2. SQL Server 2012의 JOIN에서 T-SQL 손실 레코드
- 3. 참조가 손실 되었습니까?
- 4. 이 업데이트가 손실 되었습니까?
- 5. CURL 인증이 손실 되었습니까?
- 6. changeMode에서 컨트롤이 손실 되었습니까?
- 7. solr 인덱스의 레코드가 누락 되었습니까?
- 8. SQL Server R2에서 중복 레코드가 연결되면
- 9. SQL Server 레코드가 사라지는 원인은 무엇입니까?
- 10. C#에서 SQL Server 로의 정확성 손실
- 11. SQL Server 손실 된 실행 계획
- 12. 로그인 페이지의 데이터가 손실 되었습니까?
- 13. 'this'가 setImmediate 호출에서 손실 되었습니까?
- 14. 여러 어셈블리 - 성능이 손실 되었습니까?
- 15. 다시 그리기 이벤트가 손실 되었습니까?
- 16. C#에서이 참조가 손실 되었습니까?
- 17. 왜 세션에서 데이터가 손실 되었습니까?
- 18. 자바 스크립트 변수가 손실 되었습니까?
- 19. 세션이 예기치 않게 손실 되었습니까?
- 20. SQL Server 쿼리 작성기가 잘못 되었습니까?
- 21. SQL Server 2005 bigint가 누락 되었습니까?
- 22. SQL Server 2012 열 이름이 잘못 되었습니까?
- 23. Sql Server 2005의 효율성이 절감 되었습니까?
- 24. 닫을 때 HBase 레코드가 손실 됨
- 25. Autobahn Server 연결 손실 문제
- 26. 펑 토이 드를 사용하여 SQL Server 테이블에 레코드가 있는지 확인하십시오.
- 27. SQL Server 2000 - 정확한 레코드가 사용자에게 변경된 날짜 찾기
- 28. SQL Server 2000 : 레코드가 반환되지 않을 때 값을 반환하십시오.
- 29. SQL Server 백업을 사용하면 최근 테이블 레코드가 하나의 테이블에서 사라집니다.
- 30. SQL Server 2000 : 레코드가 마지막으로 수정 된시기를 알려주는 방법이 있습니까?
쿼리 할 때마다 드라이브에 얼마나 많은 여유 공간이 있습니까? 또한, 추측의 무언가,하지만 당신이 기대할 수있는 일이'커밋 '되지 않는다고 생각하고 있습니다. [이 질문의 영감을 수 있습니다.] (http://stackoverflow.com/questions/41869/is-sql-server-bulk-insert-transactional) –