1
我有一個主表(大約1TB),它是所有其他程序的主要數據源。當我提交6個程序同時運行時,它會導致鎖定在主表上,其他程序無法運行。數據集在運行多個程序時被鎖定
有沒有辦法確保所有程序都可以訪問主表?一些輔助程序正在從主表中生成一個樣本,而其他一些正在運行一些聚合功能以創建新的數據集。
我有一個主表(大約1TB),它是所有其他程序的主要數據源。當我提交6個程序同時運行時,它會導致鎖定在主表上,其他程序無法運行。數據集在運行多個程序時被鎖定
有沒有辦法確保所有程序都可以訪問主表?一些輔助程序正在從主表中生成一個樣本,而其他一些正在運行一些聚合功能以創建新的數據集。
SAS在讀取時不會鎖定數據集。你如何閱讀桌子(請顯示代碼)?
如果您對數據集進行了任何修改,將會對其進行鎖定。根據修改的類型,可以使用CNTLLEV數據集選項鎖定行級別而不是表級鎖定,例如在追加新行時。
請注意您的數據步驟未鎖定表格。例如,當您運行
data mydataset;
set mydataset;
put _all_;
run;
除了把所有變量日誌,該塊還寫道行回數據集即使他們並沒有改變。它運行時抓取表級鎖。相反,你應該這樣做:
data _null_;
set mydataset;
put _all_;
run;
您是否嘗試過將libname設置爲只讀? – Joe
假設程序是IO限制的(即它的大部分時間都花在等待HDD上的數據上),那麼按順序運行程序可能會更好。在隨機訪問條件下,硬盤驅動器會變得更慢,同時運行程序會讓您嘗試在不同位置多次訪問同一數據集。 – orh