Adobe Commerce Cloud中訂單的非循序增加ID
在Adobe Commerce Cloud Pro中,訂單、發票、出貨和其他實體增量ID會以步驟(例如100000001 → 100000004 → 100000007)增加,而不是以1增加。 Cloud Pro環境中使用的Galera多節點資料庫架構會導致此行為。 若要修正此問題,請將增量ID僅視為唯一識別碼,並避免依賴循序編號。
說明 description
環境
具有多節點MySQL (Galera叢集)的Cloud Pro上的Adobe Commerce
問題/症狀
商家觀察到增量ID:
- 增加步驟(通常是+3)
- 請勿遵循嚴格的順序
- 略過值
這些行為令人擔憂:
- 面向客戶的訂單編號
- 內部報告
- 稽核與法規遵循需求
原因
Cloud Pro環境使用3節點Galera叢集來支援高可用性和資料一致性。
為避免同時寫入時發生主索引鍵衝突,MySQL會使用以下設定:
auto_increment_increment = 3auto_increment_offset = {1,2,3}(每個節點)
每個節點會依各自的順序獨立產生ID。 例如:
- 節點1 → 1、4、7、10…
- 節點2 → 2、5、8、11…
- 節點3 → 3、6、9、12…
因此,增量ID為:
- 全域唯一
- 以單一資料流檢視時的非循序
預期行為
- 不能保證增量ID會依循順序。
- 間隙和步長增加是正常的。
- 此行為適用於所有使用自動增量的實體。
由於以下原因,在叢集環境之外也會發生此行為:
- 失敗的交易
- 回覆
- 並行作業
影響
- 系統功能與資料完整性不受影響。
- ID在所有Adobe Commerce Cloud作業中皆保持唯一且有效。
- 只有循序編碼預期會受到影響。
解決方法 resolution
若要解決此問題,請遵循下列步驟:
-
避免依賴循序增加ID。
-
將增量ID視為唯一識別碼,而非排序的值。
-
如需排序和報表,請使用:
created_at時間戳記- 實體關係或商業邏輯
-
-
更新報告和稽核工具。
-
如果您的工具需要嚴格的排序:
- 更新邏輯以處理非連續ID。
- 移除數值連續性的相依性。
-
-
實施自訂排序(如有需要)。
-
如果您的企業需要嚴格的循序數字:
- 建立自訂序列產生器(例如自訂模組)。
- 將值儲存為個別屬性(請勿取代增量ID)。
- 使用適當的鎖定以防止競爭情況。
-
最佳做法
將增量ID視為車牌,而非票證計數器:
- 可唯一識別專案
- 無法保證訂單
結論
Cloud Pro中的非循序增加ID是平台分散式資料庫設計的直接結果。 這可確保擴充性和可靠性,但表示基礎架構層級不支援嚴格排序。 若使用案例需要循序編號,則需要自訂或外部解決方案。
相關閱讀
recommendation-more-help
experience-cloud-kcs-help-kbarticles