当前位置: 首页 > news >正文

做网站用go语言还是phpseo优化网站快速排名

做网站用go语言还是php,seo优化网站快速排名,建设工程合同属于专属管辖吗,wordpress软件主题1. 背景 刚接触ABAP的小伙伴常常会有这样的疑问#xff0c;为什么不直接使用Open SQL直接更新数据库#xff0c;而要把对DB的操作封装到IN UPDATE TASK中呢#xff1f; 对于这个问题#xff0c;比较常见的解释是#xff0c;IN UPDATE TASK的方式会保证数据更新的一致性。…1. 背景 刚接触ABAP的小伙伴常常会有这样的疑问为什么不直接使用Open SQL直接更新数据库而要把对DB的操作封装到IN UPDATE TASK中呢 对于这个问题比较常见的解释是IN UPDATE TASK的方式会保证数据更新的一致性。因为它注册了一个SAP LUW在这个逻辑业务单元中的操作将会一起成功/失败。 这个解释是没问题的但可能还是稍微缺少点直观的感觉。在本篇博客中让我们一起通过几个测试来更深入地理解下IN UPDATE TASK的用法。 2. 测试 2.1 测试1 - Open SQL 与IN UPDATE TASK混合使用 首先让我们测试下如果Open SQL 与 IN UPDATE TASK混合使用会发生什么 建立一个UPDATE Module的Function Module ZUPDATE_MODULE_1. 在这个函数中我们将完成一条数据的插入。 FUNCTION zupdate_module_1.BREAK-POINT.FINAL(ls_spfli) VALUE spfli( carrid LHconnid 456 ).INSERT INTO spfli VALUES ls_spfli.然后让我们在程序ztest_luw中使用Open SQL插入另一条数据同时调用更新模块函数zupdate_module_1。 REPORT ztest_luw.START-OF-SELECTION.FINAL(ls_spfli) VALUE spfli( carrid LHconnid 123 ).INSERT INTO spfli VALUES ls_spfli.CALL FUNCTION ZUPDATE_MODULE_1 IN UPDATE TASK.BREAK-POINT.COMMIT WORK.BREAK-POINT. 在程序中我已经预设了断点让我们看一下运行效果。 当执行到Commit Work后系统会开启一个新的进程用于执行zupdate_module_1而在当前的dialog session中的Open SQL已经完成了数据的更新。 这样做的结果是当前会话进程所提交的数据库更新与IN UPDATE TASK所提交的数据库更新相互独立。带来的后果是两部分数据更新也是相互独立的。 若IN UPDATE TASK更新失败会话进程的更新并不受影响。 整体上看这样实际产生了两个独立的LUW一个是会话进程中OPEN SQL带来的另一个是IN UPDATE TASK带来的。 在SAP的标准代码中会出现类似的场景但不推荐这样用。因为这样做的前提是开发者或业务逻辑的负责人要清楚地知道其影响与后果一次业务操作后可能引发部分操作成功部分操作失败。 而在绝大多数场景中我们最期望的效果是程序运行可以简单直接更新全部成功或全部失败。 2.2 测试2 - COMMIT WORK AND WAIT的效果 我们知道COMMIT WORK AND WAIT的效果是同步更新也即触发新的更新进程但要等到更新进程执行结束后会话进程才会继续。 若在测试1的场景中使用COMMIT WORK AND WAIT替代COMMIT WORK会有什么影响呢 START-OF-SELECTION.FINAL(ls_spfli) VALUE spfli( carrid LHconnid 123 ).INSERT INTO spfli VALUES ls_spfli.CALL FUNCTION ZGG_UPDATE_MODULE_1 IN UPDATE TASK.BREAK-POINT.COMMIT WORK AND WAIT. -------what will happen?BREAK-POINT.其运行效果如下 可见COMMIT WORK AND WAIT的效果和COMMIT WORK的效果是类似的。COMMIT WORK AND WAIT仍会触发新的更新进程并且独立于当前的会话进程会话进程虽然被WAIT阻塞但会话进程中对于数据库的提交并不受影响。 2.3 测试3 - SET UPDATE TASK LOCAL 的效果 通过SET UPDATE TASK LOCAL可以让IN UPDATE TASK不启动新的更新进程让我们测试一下SET UPDATE TASK LOCAL在OPEN SQL与IN UPDATE TASK混用场景中的效果。 改动代码如下 START-OF-SELECTION.FINAL(ls_spfli) VALUE spfli( carrid LHconnid 123 ).INSERT INTO spfli VALUES ls_spfli.SET UPDATE TASK LOCAL. ---set before registeringCALL FUNCTION ZGG_UPDATE_MODULE_1 IN UPDATE TASK.BREAK-POINT.COMMIT WORK AND WAIT.BREAK-POINT.其运行效果如下 可以发现通过SET UPDATE TASK LOCAL将会直接使用当前的会话进程完成对于IN UPDATE TASK注册函数的执行并未触发新的更新进程。 在此例中通过SET UPDATE TASK LOCAL实现了LUW的合并。 OPEN SQL所提交的数据库更新和IN UPDATE TASK提交的数据库更新同属一个LUW会一起成功一起失败。 3. 总结 通过本文中的几个测试我们可以看到IN UPDATE TASK对程序带来的影响。 总结使用经验的话推荐将所有的数据库更新操作统一通过IN UPDATE TASK注册不要在会话进程中通过OPEN SQL提交数据库的更新操作而是将这些操作封装到IN UPDATE TASK中。 但又有小伙伴问了若是所有的数据库更新操作都在当前的会话进程中不也能保证数据的一致性嘛 答案是“肯定的”。这种方式确实是保证了进程中只有一个LUW。但在实际场景中对于数据库的操作其实是“一系列”的动作并非简单一句INSERT或UPDATE。将这些操作封装到IN UPDATE TASK中进行异步更新将会让终端用户的操作更加流畅。 因为当所有的输入信息和校验通过后用户便可以结束当前的会话进程而不必等待所有的数据库更新结束后才能结束会话。 但注意任何事情都不是绝对的如果一个应用程序的逻辑十分简单数据库更新操作的数据量也很小不使用IN UPDATE TASK直接在会话进行中使用OPEN SQL更新数据库也是可以的。 要避免的场景是在会话进程通过OPEN SQL更新数据库与通过IN UPDATE TASK更新数据库在同一程序中的混合使用 以上是本文对于ABAP中使用SQL直接更新数据库与使用IN UPDATE TASK的区别的一些总结希望对你有帮助
http://www.hkea.cn/news/14558114/

相关文章:

  • 建设一个电子文学网站资金多少销售网络建设应该如何着手
  • 张家界市住房和城乡建设局网站小型互联网公司市值排名
  • 商城网站建设怎么收费公司企业名录大全
  • 树莓派做网站服务器性能怎么样东莞培训机构
  • 网站网站在国外兰州装修公司报价明细表
  • 郑州网站 建设济南网站搜索排名
  • 皮具网站源码淘宝做代销在哪个网站上进货比较好
  • 花桥网站建设.加强网站安全建设
  • 前端网站开发总结松滋网络推广
  • 网站建设 51下拉平台wordpress企业插件
  • 网站做图尺寸大小WordPress完整安裝包
  • 哪些网站可以做gif网站产品展示模板
  • 茶叶门户网站建立wordpress娱乐网
  • 制作查询网站专业做婚庆的网站
  • 惠州网站开发公司多用户商城app
  • 网站蓝色沈阳企业定制网站建设
  • asp.net 开发网站开发微信分享网站短链接怎么做的
  • 网站上线具体流程苏州市高新区建设局网站
  • 中文网站做google广告好吗呢图网站
  • 做网站的把网站写成一行上海优化排名推广
  • 网站外包开发网络科技网站建设
  • wordpress怎么制作网站主页网上做网站过程
  • 沧州建设网站的公司石柱网站制作
  • 中国信用网企业查询系统优化裁员
  • 青海网站设计高端博客网站开发流程
  • 西安建设集团网站在线oa
  • 免费建站推广随州做网站
  • 北京网站建设公司报价网站建设方案之目标
  • 虚拟技术对网站建设维护的影响微信app下载安装旧版本
  • 海外网站加速器下载青岛万科蓝山设计公司