Management Studio에서 다량의 스크립트를 수행하면 아래와 같은 에러가 생긴다.
스크립트를 실행할 수 없습니다.
'System.OutOfMemoryException' 형식의 예외가 Throw되었습니다. (mscorlib)
30000개의 지문데이터를 입력하려는데 에러가 났다.
사실 3만 레코드는 큰데이터는 아니었으나 지문 데이터 자체가 바이너리에 있다보니 메모리에 수행하는데 제약이 있는 것 같다. 이분법하여 얼마나 메모리에 올릴 수 있나 테스트를 해보았다.
30000개 : 74.1MB (77,759,999 바이트) 실패
20000개 : 49.4MB (51,840,000 바이트) 실패
10000개 : 24.7MB (25,920,000 바이트) 성공/실패 : 2분 12초 걸림
10000개를 두 번째 수행할 때는 다음과 같은 에러가 나면서 실패했다. (10초 경과후)
메시지 701, 수준 17, 상태 123, 줄 8312
리소스 풀 'internal'에 시스템 메모리가 부족하여 이 쿼리를 실행할 수 없습니다.
절대적인 수치는 아니니 크기에 제약이 있다는 것을 기억하기 위해 기록해놓는 것이니 참고만 하길.
사양: 메모리 2GB, Microsoft SQLServer 2008
세줄 요약
1. 레코드의 수보다는 스크립트의 크기에 따라 대량 스크립트 실행 가능 여부가 달라진다.
2. 여러 문장은 하나의 트랜잭션으로 실행된다. 실패시 all or nothing
3. 시스템의 사양에 따라 달라질 수 있다.
'DB > MS SQL Server' 카테고리의 다른 글
MS SQL Server 2012에서 생긴 Sequence 써야할까? (0) | 2014.08.11 |
---|---|
SQL Server 2008 설치된 곳에 80포트 404에러 (1) | 2012.09.06 |
뷰 관련 (0) | 2012.09.06 |
Management Studio 2008 (0) | 2012.09.05 |
xp_cmdshell 권한 (0) | 2012.09.05 |