我希望实现一个表,该表可通过 3 个以上节点的 Percona XtraDB 集群访问。我预计它会以每月大约 100 万行的速度增长,并且数据将保留大约 2 年(2400 万行)。
该模式相对简单,但为简洁起见,我将使用具有有序 UUID 值的二进制 (16) 的 PK 省略无聊的部分。可以在此处查看详细信息 ( https://www.percona.com/blog/2014/12/19/store-uuid-optimized-way/ )。
在单台机器上,这将/应该始终产生一个很好的基于时间的插入顺序(由于有序的 UUID v1),这将使数据在结构中保持其预期顺序。但是,如果我开始在 PXC 中使用多个节点,那么生成的 UUID 在不同主机上的时间顺序可能会乱七八糟。即使将时钟漂移保持在绝对最小值,在多个数据中心之间往返,我也不能 100% 确定时间戳总是在最后一个之后。
我的结论是创建一个启用 AUTO_INCREMENT 的 BIGINT 字段,这是复合 PK 中的第一部分 - 但是,就数据库而言,我也可以取消 UUID,而只依赖 BIGINT。
有没有人对此有任何想法?我错过了什么吗?似乎在集群中使用有序的 UUID v1 实际上会使事情变得更糟......