萍聚社区-德国热线-德国实用信息网

 找回密码
 注册

微信登录

微信扫一扫,快速登录

萍聚头条

查看: 4786|回复: 102

[职业生涯] 探讨一个SAP Dynpro编程的问题: Dynpro切换时,貌似会做隐式数据库Commit,原因何在?

[复制链接]
发表于 2012-9-12 21:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册 微信登录

x
本帖最后由 雪候鸟 于 2012-9-12 23:03 编辑

虽然可以通过其他方法延迟提交增删改的数据,但是为什么不从根本上取消这个隐含的DB Commit? 问了些单位搞了多年ABAP开发的同事居然说没听说过, 难道是我理解错了?
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2012-9-12 22:09 | 显示全部楼层
不懂SAP的帮顶

点评

谢!  发表于 2012-9-12 22:11
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2012-9-12 22:21 | 显示全部楼层
这是SAP的Standardverhältnis,一个Datenbank-LUW结束的时候自动执行隐式DB Commit,这标志着一个Workprozess的结束。不需要也不要试图取消。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2012-9-12 22:31 | 显示全部楼层
adgjl 发表于 2012-9-12 23:21
这是SAP的Standardverhältnis,一个Datenbank-LUW结束的时候自动执行隐式DB Commit,这标志着一个Work ...

大部分情况下一套Dynpro序列是完成的一件事情, 如果在每个Dynpro之间切换就发出一个DB Commit, 很容易破坏整个事务的完整性. Workprocess这个概念我也读到过,感觉是个很重量级的资源, 所以需要赶快释放掉. 但是SAP在设计的时候为什么不把这个workprocess搞成轻量级, 其实频繁的DB Commit在一些数据库上容易引发很多性能问题.
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2012-9-12 22:44 | 显示全部楼层
借贴问一下,SAP中HANA In-Memory Datenbank是什么东东?求给扫盲一下呗
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2012-9-12 22:45 | 显示全部楼层
本帖最后由 adgjl 于 2012-9-12 22:51 编辑

你可能有误解,以为在Dynpro 100上的每个改动都立刻update到DB,然后切换Dynpro到200的时候通过隐式Commit就已经被写入DB了。其实改动不是被立刻执行update的,只是在内存中保存更改的字段,这时候你切换Dynpro根本没有任何DB数据被修改,你可以随意切换Dynpro直到点保存为止,这时候数据改动同步或者异步写入DB。

没有数据更改的情况下,隐式Commit根本不触发DBMS,所以不会引起数据库性能问题。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2012-9-12 22:50 | 显示全部楼层
sbtree 发表于 2012-9-12 22:44
借贴问一下,SAP中HANA In-Memory Datenbank是什么东东?求给扫盲一下呗

是个软硬件结合的数据库性能优化技术。说白了就是,硬件上保证把潜在要读的数据提前读到Memory里。对于程序员来说,他的程序基本不变(其实也要针对HANA做一定的改动),本应该从DB读取的数据由SAP从Memory里读出。由于Memory读取速度比DB高N个数量级,所以数据访问会大大加快。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2012-9-12 22:55 | 显示全部楼层
adgjl 发表于 2012-9-12 23:45
你可能有误解,以为在Dynpro 100上的每个改动都立刻update到DB,然后切换Dynpro的时候通过隐式Commit就被写 ...

Sollen Datenbankänderungen direkt aus dem Dialogprogramm heraus
(Inline-Änderungen) durchgeführt werden, müssen Sie alle zusammengehörigen
Änderungen auf einen Dialogschritt (i. A. der letzte Dialogschritt) beschränken.
Nur dann ist die Durchführung der Datenbankänderungen als Ganzes (mit dem
Alles-oder-Nichts-Prinzip) gewährleistet.

我当时的理解就是在Bildwechsel的时候会自动提交, 当时还作了一个两个Dynpro切换的实验,发现修改进数据库了. 可能测试的有错误,我回来再看看
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2012-9-12 22:58 | 显示全部楼层
adgjl 发表于 2012-9-12 23:45
你可能有误解,以为在Dynpro 100上的每个改动都立刻update到DB,然后切换Dynpro到200的时候通过隐式Commit就 ...

如果不是在内存中的修改呢,

如果我在第一个dynpro中执行一个update语句,然后切换到下一个dynpro. 这时候这个update修改的应该会被提交吧
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2012-9-12 22:59 | 显示全部楼层
本帖最后由 adgjl 于 2012-9-12 23:02 编辑

你如果Bildwechsel之前执行了Insert,Update之类的当然会被提交。关键在于,你不应该把每个更改都直接提交修改。而应该把所有的改动都在内存中的全局字段中保存,在用户点保存的时候再提交。重要的是你理解SAP的工作方式之后遵循同样的流程编程。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
您需要登录后才可以回帖 登录 | 注册 微信登录

本版积分规则

手机版|Archiver|AGB|Impressum|Datenschutzerklärung|萍聚社区-德国热线-德国实用信息网

GMT+1, 2024-12-26 07:56 , Processed in 0.061824 second(s), 16 queries , MemCached On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表