对于有三个数据源、每个数据源上数据更新值变化如下图所示。
-
初始 init 时,每一个 数据库根据 sequence 索引值、设置 自己的 maxValue 为 index * innerStep
-
随后的更新阶段、每一个数据库根据 oldValue + step 来更新自己的 maxValue
更新机制如下图所示
UPDATE sequence
SET value = IF((sequence.value + outerStep) % outerStep != 0 * 300, LAST_INSERT_ID(0), LAST_INSERT_ID(sequence.value + outerStep)),
gmt_modified = NOW()
WHERE name = 'order'