2014-02-28 3 views
1

다른 모든 프로그램의 주 데이터 원본 인 마스터 테이블 (약 1TB 크기)이 있습니다. 동시에 6 개의 프로그램을 실행하여 마스터 테이블을 잠그면 다른 프로그램이 실행되지 않습니다.여러 프로그램을 실행하는 동안 데이터 세트 잠김

모든 프로그램에서 마스터 테이블에 액세스 할 수있는 방법이 있습니까? 일부 보조 프로그램은 기본 테이블에서 샘플을 생성하고 다른 일부는 새 데이터 세트를 작성하기 위해 일부 집계 기능을 실행합니다.

+1

읽기 전용으로 libname 설정을 시도 했습니까? – Joe

+0

프로그램이 IO 바운드 인 경우 (즉, 대부분의 시간을 HDD의 데이터를 기다리는 데 소비하는 경우) 순차적으로 프로그램을 실행하는 것이 좋습니다. 하드 드라이브는 무작위 액세스 조건 하에서 훨씬 느리게 진행되며 프로그램을 동시에 실행하면 다른 위치에서 동일한 데이터 세트에 여러 번 액세스하려고합니다. – orh

답변

0

SAS는 읽을 때 데이터 세트를 잠그지 않습니다. 어떻게 테이블을 읽으십니까? (코드를 보여주십시오)?

데이터 세트를 수정하는 경우 데이터 세트가 잠길 수 있습니다. 수정 유형에 따라 CNTLLEV 데이터 집합 옵션을 사용하여 테이블 수준 잠금 대신 행 수준으로 잠글 수 있습니다. 예를 들어 새 행을 추가 할 때

데이터 단계가 테이블을 잠그지 않도록주의하십시오. 그들이을 변경하지 않은 경우에도 예를 들어, 당신이 로그에 모든 변수를 넣어뿐만 아니라

data mydataset; 
    set mydataset; 
    put _all_; 
run; 

를 실행,이 블록은 데이터 세트 다시 행을 기록합니다. 이것이 실행될 때 테이블 수준 잠금을 가져옵니다. 대신, 당신은 이것을해야한다 :

data _null_; 
    set mydataset; 
    put _all_; 
run; 
관련 문제