S/4 HANA 中的資料庫鎖策略

SAPmatinal發表於2020-02-13

S4 中的新的 MM 資料模型以及 HANA 的 Insert-only 特性允許物料憑證的並行處理, 提高了相關的吞吐量.  由此, 資料庫鎖的應用情況也發生了變化.  下文將介紹這些變化(基於 S4 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 模型:

S/4 HANA 中的資料庫鎖策略

Account 模型

S/4 HANA 中的資料庫鎖策略

對於 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, 新版本的系統減少了物料憑證的處理時間.

允許負庫存的工廠的鎖策略

在延遲鎖策略下, 不再加任何鎖.

不會再從資料庫進行庫存判斷, 也不會再進行庫存檢查(在兩種鎖策略下都是).


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901557/viewspace-2675436/,如需轉載,請註明出處,否則將追究法律責任。

相關文章