解决ABAP获取大量数据而被占用过多内存等问题
来源:互联网 发布:p2p网络摄像机app 编辑:程序博客网 时间:2024/05/23 13:07
1.最主要的是尽量减少I/O操作,然后是内存占用,在再就是CPU的负载。类似对硬盘的读写的I/O操作是最耗费时间的。
如果对内存的操作不加以控制,可能有些时候不得不对硬盘的交换空间操作,这样就增加了对磁盘的I/O读写操作。
CPU的负载可以通过优化程序来改善,在程序中尽量使用诸如SUM(SQL语句)或者COLLECT(ABAP语句)。
2.Field-groups对于多层次的排序和显示是非常有用的。它是将数据写入系统的页面文件,而不是内存(内表是使用内存的)。
基于这个原因,field-groups比较适合于处理大量数据的列表(一般超过50000条记录)。如果涉及大量的数据处理,
应该首先和系统管理员协商来决定这个程序最多能使用多少内存,以计算这个程序需要使用多少资源。
然后你就可以决定是把数据写入内存还是交换空间。
3.尽可能多地使用表的键值作为WHERE分句的条件选项。尽可能让程序只读取一定范围内的记录
(比如说,你只准备操作一个月之内的业务数据,那么对于这一个月的业务就应该有一定的范围取值,如1000~2000。)
4.尽量使用这样的选择语句SELECT A B C INTO TABLE ITAB。
5.尽量把更多选择项放在用户选择界面上,以避免程序一次选出大量的数据。
6.用OCCURS NUM_RECS声明内表,NUM_RECS参数是你估计(或希望)使用到的数据条数。
如果使用到的记录条数超出NUM_RECS参数的限制,数据将被存放在硬盘上的交换空间(不是内存)。
7.尽量使用SELECT A B C INTO TABLE ITAB这样的语句。这个操作会将所有符合条件的数据一次性地读进内表,
这比在SELECT A B C INTO ITAB... ENDSELECT的循环中添加数据到内表要快。请注意,这里声明的内表还应该符合第6条的条件。
8.如果读出的记录条数在持续增长,你应该把这些数据分割成几个固定大小的数据块。比如说,你想调出一年的数据,
就可以按照月份把一年的数据分成12个月调出。这样做能减少I/O的操作。
9.学会用效率比较高的COLLECT语句。
10.尽可能使用SELECT SINGLE语句。
11.许多表包括TOTAL字段(比如GLT0表,包含了各科目按财务期间存放的改期借方和贷方的发生额)。
使用这些表可以省去在程序中计算和值的过程。
如果对内存的操作不加以控制,可能有些时候不得不对硬盘的交换空间操作,这样就增加了对磁盘的I/O读写操作。
CPU的负载可以通过优化程序来改善,在程序中尽量使用诸如SUM(SQL语句)或者COLLECT(ABAP语句)。
2.Field-groups对于多层次的排序和显示是非常有用的。它是将数据写入系统的页面文件,而不是内存(内表是使用内存的)。
基于这个原因,field-groups比较适合于处理大量数据的列表(一般超过50000条记录)。如果涉及大量的数据处理,
应该首先和系统管理员协商来决定这个程序最多能使用多少内存,以计算这个程序需要使用多少资源。
然后你就可以决定是把数据写入内存还是交换空间。
3.尽可能多地使用表的键值作为WHERE分句的条件选项。尽可能让程序只读取一定范围内的记录
(比如说,你只准备操作一个月之内的业务数据,那么对于这一个月的业务就应该有一定的范围取值,如1000~2000。)
4.尽量使用这样的选择语句SELECT A B C INTO TABLE ITAB。
5.尽量把更多选择项放在用户选择界面上,以避免程序一次选出大量的数据。
6.用OCCURS NUM_RECS声明内表,NUM_RECS参数是你估计(或希望)使用到的数据条数。
如果使用到的记录条数超出NUM_RECS参数的限制,数据将被存放在硬盘上的交换空间(不是内存)。
7.尽量使用SELECT A B C INTO TABLE ITAB这样的语句。这个操作会将所有符合条件的数据一次性地读进内表,
这比在SELECT A B C INTO ITAB... ENDSELECT的循环中添加数据到内表要快。请注意,这里声明的内表还应该符合第6条的条件。
8.如果读出的记录条数在持续增长,你应该把这些数据分割成几个固定大小的数据块。比如说,你想调出一年的数据,
就可以按照月份把一年的数据分成12个月调出。这样做能减少I/O的操作。
9.学会用效率比较高的COLLECT语句。
10.尽可能使用SELECT SINGLE语句。
11.许多表包括TOTAL字段(比如GLT0表,包含了各科目按财务期间存放的改期借方和贷方的发生额)。
使用这些表可以省去在程序中计算和值的过程。
- 解决ABAP获取大量数据而被占用过多内存等问题
- 如何解决PHP查询大量数据内存耗尽的问题
- 如何解决PHP查询大量数据内存耗尽的问题
- 通过接口获取大量数据,内存溢出的问题
- 解决tomcat 等一些服务端口被占用的问题
- 解决端口被占用问题
- 解决adb被占用问题
- 解决端口被占用问题
- 解决端口被占用问题
- 大量数据生成excel时候造成jvm内存泄漏问题的解决与测
- 大量数据生成excel时候造成jvm内存泄漏问题的解决与测
- 解决mysqldb查询大量数据导致内存使用过高的问题
- 如何解决PHP里大量数据循环时内存耗尽的问题
- 如何解决PHP里大量数据循环时内存耗尽的问题
- 如何解决PHP里大量数据循环时内存耗尽的问题
- 如何解决PHP里大量数据循环时内存耗尽的问题
- 如何解决PHP里大量数据循环时内存耗尽的问题
- 如何解决PHP里大量数据循环时内存耗尽的问题
- grub2下启动ISO
- 程序被其他程序翻译成不同的格式
- 带过滤功能的两种RSS阅读器使用评测
- 从web三层架构解析软件错误
- 《松本行弘的程序世界》精彩书摘
- 解决ABAP获取大量数据而被占用过多内存等问题
- Unix常用命令
- GNU make中文手册(mark)
- 团队开发中BUG和Feature
- 学习鸟哥vim笔记
- 电影资源
- I Davinci DM6446开发攻略——开发环境搭建
- smarty使用变量
- OpenJTAG——Jlink的强劲对手