MYSQL微服务架构之主键策略

标签 mysql microservices

我们目前正在使用自动生成的主键,我们希望切换到一种更适合基于微服务的应用程序的方法:我们将使用业务定义的主键(个人税码)或全局唯一标识符。

  • 过去,MySQL 在使用字母数字主键而不是自动增量时会出现性能问题,现在仍然如此吗?
  • 如果我们采用 UUID 方法,是否有可能使用强大的 uuid 生成器来保证 uuid 即使在不同的服务器上也是唯一的?

最佳答案

可以更改自动增量的增量步长和偏移量,以确保在 MySQL 主机云中的唯一性。所有实例都可以具有相同的增量大小,但具有不同的初始偏移量,这将确保不会发生主键冲突。

这种方法还有一个小优点,即您可以立即从数据行的主列中分辨出它是由哪个数据库实例创建的。

在my.cnf中,添加:

auto-increment-increment = 100
auto-increment-offset = N

其中 N 介于 0 和 99 之间,并且对于每个数据库实例都是唯一的。如果您计划多于或少于 100 个数据库实例,那么您也可以更改“auto-increment-increment”的值。

使用此配置,N=1 的实例将生成

的自动增量值
1,101,201,301,401,501... and so on

N=2 会产生

2,102,202,302,402,502... and so on

还要确保主键列大小也考虑到增量现在将以 100 为步长并且会更快溢出。

关于MYSQL微服务架构之主键策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40840470/

相关文章:

mySQL重叠次数

mysql - SQL 查询选择最近 15 分钟的数据

java - AWS中如何隔离环境?

docker - 了解Kubernetes布局

java - 服务器重启后如何将 HazelcastClient 重新连接到 HazelcastServer

MYSQL - 表大小似乎不正常

mysql - on 子句中的未知列,即使该列存在

php - Laravel/MySQL 数据库连接

api - 类似于 ACID 的微服务模式之间的通信

azure - 将所有 AKS 微服务输送到单个 Application Insights 中,并能够按微服务名称进行筛选