2014-02-28 25 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;