S4中的新的MM数据模型以及HANA的Insert-only特性允许物料凭证的并行处理,提高了相关的吞吐量。由此,数据库锁的应用情况也发生了变化。下文将介绍这些变化(基于S4 1610)。

本文链接:http://www.cnblogs.com/hhelibeb/p/9059153.html

英文原文:Lock strategies in S/4HANA 1610

Key figure模型和Account模型

在SAP S/4 HANA, on-premise edition 1610中,物料估价不再需要排它锁(exclusive locking),这包含所有价格控制为“移动平均价”的和所有特殊库存类型的物料,因为HANA是一个Insert-only数据库,因此它允许物料凭证的并行处理。

因为在S/4HANA OP1610和CE1608中,新的MM-IM数据模型将旧的key figure模型变为了account模型(还添加了53个帮助快速计算/统计的附加列),这允许更细粒度的延迟数量锁定。

下面就是Key figure模型和Account模型的例子,

Key figure模型:

Account模型

对于Key figure模型模型而言,必须在物料和工厂级别上加锁。但是通过Account模型,可以在物料、工厂、存储位置、存储标识、特殊存储标识级别加锁(原则上可以在新模型中任何定义了库存的级别上加锁)。因此,即便是在过去很可能发生锁碰撞的情况下,现在也能并行处理了。

移动平均价的锁

当货物移动改变了库存价值(SALK3)和已估计库存(LBKUM)的时候,移动平均价必须据此调整,这会产生一个V1级别的更新,并且在更新结束前一直需要一个排它锁。数量/价值的变化主要来源于货物移动带来的外部值(比如,来自于采购订单)。然而,如果变化的来源仅仅是舍入差异,移动平均价将不会再调整。

创建批次时的锁(分割评估)

如果创建了物料主数据或者由一个货物移动带来改变时,还是需要排它锁的。如果使用了分割评估,且必须创建新的批次的话,货物移动会创建物料主数据。

对不允许负库存的工厂的延迟共享锁

S/4 HANA OP1610和CE1608引入了一个新的增加吞吐量的选项。这个选项可以在配置中设定,对延迟锁策略(late lock strategy),不允许再使用排它锁,而是使用延迟共享锁(late shared locks),这使得物料凭证的并行处理成为了真正的现实。

库存检查在这种情况下依然是可行的,因为所有的处理进程都会把他们的提取发送到锁服务器,此时,锁服务器将成为库存变更的第二存储(第一存储是数据库),数据的计算会从第一和第二存储进行。

批次主数据变更时的锁

从S/4 HANA OP1610和CE1608开始,为了物料凭证过账时的碰撞率,对于批次物料行项目而言,批次锁只会在批次主数据变更时存在,例如生产日期或best before date变更、且与数据库中现有值不同时

对On-the-fly calculations的优化

由于on-the-fly calculation,聚合数量变化会存储到混合和聚合表中,成为实际库存数据。这使得对这些表的读访问要比Suite on HANA慢。

为了将on-the-fly calculation的劣势转变为优势,S/4 HANA OP1610和CE1608会引入以下特性:

  • 在预读取阶段,只有物料主数据会被读取到内部缓存中,这是通过纯物料主数据视图来从数据库中检索数据的。
  • 行项目处理中库存数量会从数据库的Account模型中读取,并且这只会在库存减少、且禁止负库存的情况下才会进行。

因此,对于S/4 HANA OP1610和CE1608而言,为延迟锁策略的进行的调整允许物料凭证处理的平行处理,而从数据库读取库存数量的策略和库存检查的策略减少了单个物料凭证的处理时间。总之,相较于过去的S/4 HANA OP1511和Suite on HANA,新版本的系统减少了物料凭证的处理时间。

允许负库存的工厂的锁策略

  1. 在延迟锁策略下,不再加任何锁。
  2. 不会再从数据库进行库存判断,也不会再进行库存检查(在两种锁策略下都是)。

转载于:https://www.cnblogs.com/hhelibeb/p/9059153.html

S/4 HANA中的数据库锁策略相关推荐

  1. [系统审计]SAP HANA 中的系统审计策略管理

    基本语法: CREATE AUDIT POLICY <policy_name> AUDITING <audit_status_clause><audit_actions& ...

  2. mysql数据库支持的锁粒度包括_1. Mysql的并发(锁策略、锁粒度、事务)

    并发控制 在处理并发读或者写时,可以通过实现一个由两种类型的锁组成的锁系统来解决问题.这俩种系统的锁通常被称为共享锁(shared lock)和排他锁(exclusive lock),也叫读锁(rea ...

  3. 数据库中的乐观锁与悲观锁详解

    目录 悲观锁 乐观锁 悲观锁实现方式 乐观锁实现方式 如何选择 悲观锁 当我们要对一个数据库中的一条数据进行修改的时候,为了避免同时被其他人修改,最好的办法就是直接对该数据进行加锁以防止并发. 这种借 ...

  4. mysql是表级锁还是行级锁_带你了解MySQL数据库中的全局锁、表级锁、行级锁

    在 MySQL 数据库中,有很多各种各样的锁,这些锁大致可以分为三类:全局锁.表级锁.行级锁.这篇文章小编就带你简单了解一下这三种锁. 1. 全局锁 全局锁是粒度比较大的锁,基本上也使用不上,就像我们 ...

  5. 常见的锁策略、synchronized中的锁优化机制

    一.常见的锁策略 锁策略,和普通程序猿基本没啥关系,和 "实现锁" 的人才有关系的 这里所提到的锁策略,和 Java 本身没关系,适用于所有和 "锁" 相关的情 ...

  6. 聊一聊 MySQL 数据库中的那些锁

    在软件开发中,程序在高并发的情况下,为了保证一致性或者说安全性,我们通常都会通过加锁的方式来解决,在 MySQL 数据库中同样有这样的问题,一方面为了最大程度的利用数据库的并发访问,另一方面又需要保证 ...

  7. 数据库中的乐观锁与悲观锁

    悲观锁 当我们要对一个数据库中的一条数据进行修改的时候,为了避免同时被其他人修改,最好的办法就是直接对该数据进行加锁以防止并发. 这种借助数据库锁机制在修改数据之前先锁定,再修改的方式被称之为悲观并发 ...

  8. Mysql数据库中的各种锁

    目录 概述 MyIsam 如何加表锁 并发锁 MyISAM的锁调度 InnoDB 事务(Transaction)及其ACID属性 并发事务带来的问题 InnoDB都有哪些锁? InnoDB的行锁模式及 ...

  9. 聊聊数据库中的那些锁

    背景 数据库中有一张叫后宫佳丽的表,每天都有几百万新的小姐姐插到表中,光阴荏苒,夜以继日,日久生情,时间长了,表中就有了几十亿的小姐姐数据,看到几十亿的小姐姐,每到晚上,我可愁死了,这么多小姐姐,我翻 ...

  10. 数据库中的行锁和表锁

    一.事务并发调度的问题 脏读:A事务读取B事务尚未提交的更改数据,并在这个数据基础上操作.如果B事务回滚,那么A事务读到的数据根本不是合法的,称为脏读.在oracle中,由于有version控制,不会 ...

最新文章

  1. 20多岁大专生吐槽:面试39岁同济大学毕业的测试专家,对方却连简单编程题都不会!...
  2. java 循环读取文件_您如何用Java连续读取文件?
  3. 自组织神经网络的实现
  4. 一:Greenplum5.10.2 生产环境安装配置 (系统初始化、安装准备)
  5. 实战项目:考勤系统的需求分析
  6. 公共技术点之 Java 注解 Annotation
  7. html自动识别循环列表元素,动态添加的元素,怎么遍历它们的功能及内容
  8. 数据科学 IPython 笔记本 8.11 多个子图
  9. Docker学习总结(64)——快速理解 Docker 底层原理
  10. Java中函数参数不固定的问题
  11. Unity Android DLL热更
  12. Jsf + Spring + Hibernate项目中引用的包
  13. 传统机器学习和深度神经网络对比
  14. 微信小程序弹框的使用
  15. mac电脑如何装双系统Linux,苹果电脑双系统怎么装【详细教程分享】
  16. ES 关于text和keyword两种类型数据搜索区别
  17. Linux系统下detectron2安装(cuda11为例)
  18. 农信社计算机类试卷,农信社真题:开封农村信用社计算机考试试题合集
  19. 基于matlab的磁悬浮控制系统,基于MATLAB的磁悬浮球系统PID控制器设计与实现
  20. 网络规划设计师复习笔记--网络需求分析

热门文章

  1. 杭州29岁IT男凌晨突发脑出血!老父亲面对医生急的差点跪下
  2. 中国顶级程序员有多牛?一个弄哭韩国,一个堪称阿里“扫地僧”
  3. 2018年双十一:计算机品类纸质书籍销量冠军
  4. 2019互联网公司端午礼盒大PK!
  5. 20 道 Redis 面试题,面试官能问的都被我找到了
  6. Linux运维的黑客之路
  7. 线下见面会,下一站定啦!
  8. 从0开始学习 GitHub 系列之「02.加入 GitHub」
  9. shell基础之EOF的用法
  10. shopnc数据库 批量修改商品价格