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

Sas 运行多个程序时数据集被锁定,sas,Sas,我有一个主表(大约1TB大小),它是所有其他程序的主要数据源。当我提交6个程序同时运行时,会导致主表被锁定,其他程序无法运行 有没有办法确保所有程序都可以访问主表?一些辅助程序正在从主表生成样本,而另一些程序正在从主表运行一些聚合函数以创建新的数据集。SAS在读取数据集时不会锁定数据集。您是如何阅读表格的(请出示代码) 如果要对数据集进行任何修改,将锁定它。根据修改的类型,通过使用dataset选项,可以使用行级锁而不是表级锁进行锁定;例如,在追加新行时 请注意,数据步骤没有锁定表。例如,当你跑

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


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

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

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

请注意,数据步骤没有锁定表。例如,当你跑步时

data mydataset;
  set mydataset;
  put _all_;
run;
除了将所有变量放入日志之外,此块还将行写回数据集,即使它们没有更改。运行时,它会获取一个表级锁。相反,您应该这样做:

data _null_;
  set mydataset;
  put _all_;
run;

您是否尝试过将libname设置为只读?假设程序是IO绑定的(即它大部分时间都在等待来自HDD的数据),您最好按顺序运行程序。在随机访问条件下,硬盘速度要慢得多,同时运行这些程序会让您在不同的位置多次尝试访问同一数据集。