sas优化技巧(1) 追踪资源使用情况选项,控制内存使用情况bufsize、bufno、sasfile、ibufsize

CPU time:the amount of time the central processing unit (CPU) uses to perform requested tasks such as calculations, reading and writing data, conditional logic, and iterative logic.CPU time is measured when data must be processed in the program data vector.

I/O:a measurement of the read and write operations that are performed as data and programs are copied from a storage device to memory (input) or from memory to a storage or display device (output).

1:用sas选项来追踪资源使用情况

选项关键词前面加NO,可以取消该选项。

2:控制内存使用情况

2.1:Measuring I/O

Improvement in I/O can come at the cost of increased memory consumption

用一张图展示缓冲区也就是memory的那块与I/O的关系

I/O的计算是在从数据集到缓冲区和从缓冲区到数据集这两部分组成

2.1:如何改变单次I/O读入数据的大小?

2.1.1 page size

在sas中page size和buffer size是一个意思,那么增加size就会减少I/O也是一个很自然的道理,但是这样的代价就是memory consumption的消耗增加

sas通过一系列算法来给定一个默认的page size,对于多任务的sas程序很实用,但是需要手动改变page size也是可以的。

一般不用min,会出现不可预见的问题。

如果用copy过程拷贝数据集,原有的page size不会保留

2.1.2 page no

BUFNO= control the number of buffers that are available for reading or writing a SAS data set with each I/O transfer

建议使用10

总结:对于小数据集,尽可能的一次性分配可以足够读取数据集的buffer

3:使用sasfile语句

sasfile语句可以将数据集hold在内存中,减少open/close操作,包括释放和分配内存

在data步或proc步,sas会自动释放buffer,在这个程序中如果不用sasfile,company.sales则要被读取两次,浪费了资源sasfile company.sales load;
proc print data=company.sales;
var Customer_Age_Group;
run;
proc tabulate data=company.sales;
class Customer_Age_Group;
var Customer_BirthDate;
table Customer_Age_Group,Customer_BirthDate*(mean median);
run;
sasfile company.sales close;

总结

1:If you need to repeatedly process a SAS data file that will fit entirely in memory,use the SASFILE statement to reduce I/O and some CPU usage

2:If you use the SASFILE statement and the SAS data file will not fit entirely in memory, the code will execute, but there might be a degradation in performance

3:如果只要反复文件的一部分,则最好用sasfile,这样提升效率

4:用IBUFSIZE=改变索引缓存的大小

这对于经常用索引的程序有改善,但是改变大小后要重新建立索引

IBUFSIZE=0重新设置为系统默认大小

时间: 2024-08-10 19:14:44

sas优化技巧(1) 追踪资源使用情况选项,控制内存使用情况bufsize、bufno、sasfile、ibufsize的相关文章

sas优化技巧(2),缩减数据存储空间、length、compress、reuse、data步视图

1:控制sas数据存储空间大小 1.1:缩减字符变量存储空间 sas怎么存储字符变量? 对于赋值情况的字符型变量,变量的长度依据第一个值得长度 比如name=yi(那么name的长度即为2),然后再给其赋值name=can,那么只会读入ca 对于datalines读入或从外部数据集中读入的数据,sas默认为字符变量长度为8. 用length语句改变长度,data语句中要出现在变量前才有用. 1.2:缩减数值变量存储空间 sas怎么存储数值变量 sas默认数值变量长度为8 length改变长度,以

sas优化技巧(3)排序

1:防止不必要的排序 下面四种方式可以防止排序的进行 ??1.1:BY-group processing with an index to avoid a sort 在以下情况下,by语句不会用索引 the BY statement includes the DESCENDING or NOTSORTED option or if SAS detects that the data file is physically stored in sorted order on the BY varia

Windows查看Java内存使用情况

Windows查看Java程序运行时内存使用情况 1.在cmd命令窗口输入 jconsole  ,弹出Java监视和管理控制台窗口 2.连接本地进程,首先需要知道想查看的进程ID ( pid ) 在cmd命令窗口中输入  netstat -ano | findstr 8080   (端口号是你的程序正在使用的port ,我这里跑的是saiku ,默认端口号为 8080) 得到进程ID为  19260 3 根据步骤2查询出的进程号(pid),在Java监视和管理控制窗口中选中 PID为 19620

【转】101个MySQL调试和优化技巧

MySQL是一个功能强大的开源数据库.随着越来越多的数据库驱动的应用程序,人们一直在推动MySQL发展到它的极限.这里是101条调节和优化MySQL安装的技巧.一些技巧是针对特定的安装环境的,但这些思路是通用的.我已经把他们分成几类,来帮助你掌握更多MySQL的调节和优化技巧. MySQL 服务器硬件和操作系统调节: 1. 拥有足够的物理内存来把整个InnoDB文件加载到内存中——在内存中访问文件时的速度要比在硬盘中访问时快的多. 2. 不惜一切代价避免使用Swap交换分区 – 交换时是从硬盘读

【转载:Mysql 优化】101个mysql优化技巧

MySQL是一个功能强大的开源数据库. 随着越来越多的数据库驱动的应用程序,人们一直在推动MySQL发展到它的极限. 这里是101条调节和优化MySQL安装的技巧. 一些技巧是针对特定的安装环境的,但这些思路是通用的. 我已经把他们分成几类,来帮助你掌握更多MySQL的调节和优化技巧. MySQL 服务器硬件和操作系统调节: 1. 拥有足够的物理内存来把整个InnoDB文件加载到内存中--在内存中访问文件时的速度要比在硬盘中访问时快的多. 2. 不惜一切代价避免使用Swap交换分区 – 交换时是

101个MySQL的调节和优化技巧

MySQL是一个功能强大的开源数据库.随着越来越多的数据库驱动的应用程序,人们一直在推动MySQL发展到它的极限.这里是101条调节和优化MySQL安装的技巧.一些技巧是针对特定的安装环境的,但这些思路是通用的.我已经把他们分成几类,来帮助你掌握更多MySQL的调节和优化技巧. MySQL 服务器硬件和操作系统调节: 1. 拥有足够的物理内存来把整个InnoDB文件加载到内存中——在内存中访问文件时的速度要比在硬盘中访问时快的多. 2. 不惜一切代价避免使用Swap交换分区 – 交换时是从硬盘读

让数据库飞起来 十大DB2优化技巧

DB2是IBM出口的一系列关系型数据库管理系统,分别在不同的操作系统平台上服务.下文中将为大家讲解DB2十大优化技巧. 为了帮助DB2 DBA 避免性能灾难并获得高性能,我为我们的客户.用户和 DB2 专家同行总结了一套故障诊断流程.以下详细说明在 Unix.Windows 和 OS/2 环境下使用 DB2 UDB 的电子商务OLTP 应用程序的10 条最重要的性能改善技巧,希望下文中涉及到的内容对大家能够有所帮助. 一. 监视开关 确保已经打开监视开关.如果它们没有打开,您将无法获取您需要的性

SQL Server 聚合函数算法优化技巧

Sql server聚合函数在实际工作中应对各种需求使用的还是很广泛的,对于聚合函数的优化自然也就成为了一个重点,一个程序优化的好不好直接决定了这个程序的声明周期.Sql server聚合函数对一组值执行计算并返回单一的值.聚合函数对一组值执行计算,并返回单个值.除了 COUNT 以外,聚合函数都会忽略空值. 聚合函数经常与 SELECT 语句的 GROUP BY 子句一起使用. v1.写在前面 如果有对Sql server聚合函数不熟或者忘记了的可以看我之前的一片博客.sql server 基

SQL优化技巧(Oracle)

SQL优化技巧(1): Where子句中的连接顺序:oracle采用自下而 上的顺序解析where子句,根据这个原理,表 之间的连接必须写在其他where条件之前,那些可以过滤掉大量记录的条件 必须写在where子句的末尾. 例如 低效:select * from report_sale_account e where hsje>5000 and dzxl = '000001' and 25<(select count(*) from report_sale_account where cod