运行多个程序时数据集已锁定

时间:2014-02-28 20:09:47

标签: sas

我有一个主表(大小约1TB),这是所有其他程序的主要数据源。当我提交6个程序同时运行时,它会导致主表上的锁定而其他程序无法运行。

有没有办法确保所有程序都可以访问主表?一些辅助程序正在从主表中生成一个样本,而其他程序正在运行一些聚合函数,以便创建新的数据集。

1 个答案:

答案 0 :(得分:0)

SAS在阅读时不会锁定数据集。你是如何阅读表格的(请显示代码)?

如果您正在对数据集进行任何修改,那么将锁定它。根据修改的类型,可以使用CNTLLEV数据集选项锁定行级而不是表级锁;例如,在追加新行时。

请注意,您的数据步骤不会锁定表格。例如,当你运行

data mydataset;
  set mydataset;
  put _all_;
run;

除了将所有变量都放入日志之外,此块还会将行写回数据集,即使它们没有更改。它运行时会抓取表级锁。相反,你应该这样做:

data _null_;
  set mydataset;
  put _all_;
run;