他两最简单最直接的区别:COMMIT WORK 异步;COMMIT WORK AND WAIT 同步。
下面是ChampaignWolf给出的深层解释:
首先说明一点:更新是异步的,更新是由SAP中UPD1和UPD2两个进程执行的,关于这两个进程各负责什么再说明一下
UPD1先执行,主要是用于数据库表的更新,比如说写表
UPD2后执行,主要是用于一些数据的收集统计等的更新,比如说为BW收集一下数据等等
同时这个是可以在SM13看到的,如果看到日志中UPD1成功,UPD2失败,如有BW的取数,那肯定会丢数据的,所以说COMMIT WORK是异步的,为了使其同步,所有就有了COMMIT WORK AND WAIT。对于COMMIT WORK AND WAIT 来说,是可以判断是否更新成功的,SY-SUBRC NE 0就是有问题的。
上面是最简单的区别,再有:
由于系统中COMMIT WORK的数量是有限的,比如说我们系统是4000个,同时只能提交4000个更新进程,对于COMMIT WORK来说,执行完就释放了,可以为后面的COMMIT WLRK继续使用;而对于COMMIT WORK AND WAIT是要执行完才释放的,所以对于没有必要同步更新的,也尽快使用异步,使得资源得到释放。
下面是ChampaignWolf给出的深层解释:
首先说明一点:更新是异步的,更新是由SAP中UPD1和UPD2两个进程执行的,关于这两个进程各负责什么再说明一下
UPD1先执行,主要是用于数据库表的更新,比如说写表
UPD2后执行,主要是用于一些数据的收集统计等的更新,比如说为BW收集一下数据等等
同时这个是可以在SM13看到的,如果看到日志中UPD1成功,UPD2失败,如有BW的取数,那肯定会丢数据的,所以说COMMIT WORK是异步的,为了使其同步,所有就有了COMMIT WORK AND WAIT。对于COMMIT WORK AND WAIT 来说,是可以判断是否更新成功的,SY-SUBRC NE 0就是有问题的。
上面是最简单的区别,再有:
由于系统中COMMIT WORK的数量是有限的,比如说我们系统是4000个,同时只能提交4000个更新进程,对于COMMIT WORK来说,执行完就释放了,可以为后面的COMMIT WLRK继续使用;而对于COMMIT WORK AND WAIT是要执行完才释放的,所以对于没有必要同步更新的,也尽快使用异步,使得资源得到释放。