gpt4 book ai didi

mysql - 离线同步(Performance UUID为主键)

转载 作者:可可西里 更新时间:2023-11-01 08:37:41 26 4
gpt4 key购买 nike

我正在做一个项目,其中一些客户有互联网连接问题。

当互联网连接不起作用时,我们将信息存储在位于客户端 PC 的数据库中。当我们再次建立连接时,我们将本地数据库与中央数据库同步。

为避免两个数据库之间的记录 ID 发生冲突,我们将使用 UUID [char(36)] 而不是自动增量。

数据库是带有InnoDB引擎的Mysql。

我的问题是这会对选择、连接等的性能产生影响吗?我们应该使用 varbinary(16) 而不是 char(36) 来提高性能吗?

注意:我们已经有一个包含 4 个 Go 数据的现有数据库我们也欢迎其他建议来解决此离线/在线问题。

谢谢

最佳答案

由于您没有说明正在使用哪个数据库引擎(MyISAM 或 InnoDB),因此很难说出性能影响的大小。

但是,简而言之 - 是的,较大的数据集会影响性能。这样做的原因是主键索引需要 36 个字节,而整数需要 4 个字节(如果是 bigint,则为 8 个字节)。

我会提示您如何避免冲突:

首先是在数据库上有不同的自动增量偏移量。如果您有 2 个数据库,则自动增量在一个数据库上为奇数,在另一个数据库上为偶数。

其次是要有复合主键。如果您将主键定义为 PRIMARY KEY(id, server_id) ,那么在将数据复制到中央数据库时不会发生任何冲突。你也会知道它来自哪里。缺点是您需要为您执行的每个查询提供 server_id。

关于mysql - 离线同步(Performance UUID为主键),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6466459/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com