请帮我澄清一个我找不到答案的非常重要的问题。只有通过测试才能证明。
假设我们有三个节点的XtraDB集群(或Galera集群)。我们有主用户的表与自动增量主键。
经过一段时间后,我们有第一个节点有10000插入,因此它的自动增量值约为30000。但是其他两个节点的加载较少,因此它们只有大约100个插入,其自动增量值约为300。
现在,我们决定向集群中再添加两个节点。现在自动增量偏移量等于5.显然,两个加载较少的节点无法用新的偏移量来填充300到30000之间的数字,对吗?
那么,表在每个节点上的自动增量会发生什么呢?集群将如何运行?
它是否会对每个节点启动30000的自动增量,而从300到30000的未填充ids将保持未填充?
谢谢你的时间和经验。
发布于 2018-04-20 03:03:54
很高兴知道你已经想出了诀窍。
顺便回答你的第二个问题。PXC有一个配置(wsrep_auto_increment_control),它可以帮助您恢复类似于独立的auto_increment行为。
如果您的工作负载没有并行写入到表中,那么当然可以使用它。
(在这里查看更多关于http://galeracluster.com/documentation-webpages/mysqlwsrepoptions.html#wsrep-auto-increment-control的内容)
你也可以试一试,看看它是如何工作的。
发布于 2018-04-19 09:42:59
我们做了些测试。原来,自动增值的工作原理完全不同,所以我的担忧毫无意义。
有了三个节点,每个插入到表中,就可以完全更新表的自动增量索引。因此,您始终没有使用值,只有在后面的情况下,来自不同节点的两个插入同时出现,这样ids就可以一个接一个地出现。
这让我们想到了另一个想法。如果我们有五个节点,那么INT(11)就会比一个普通的非集群表快五倍。
https://dba.stackexchange.com/questions/204395
复制相似问题