php - 游戏合服 有一些表的主键是自增id,这部分表的合并有什么好的方案?
高洛峰
高洛峰 2017-04-10 14:48:53
[PHP讨论组]

打算用一个php脚本完成合服功能,目前数据的备份、过滤以及玩家id的更新已经都完成,就是数据导入时,一些表的主键是自增id,目前没有想到特别好的方案。请各位高手给我一些建议,如何能兼容性很好的解决这个问题?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(5)
伊谢尔伦

既然会合一次,就会合第二次,建议直接一次到位改成UUID,方便以后再合服

先写一个[表,id,服务器]=>[UUID]的转换,然后先把原来的表全都按照UUID重新写一遍,然后让生产环境原来写一份的改成写两份(旧表和UUID新表),然后慢慢把读切换到新表上,最后旧表上只有写没有读了就可以丢掉了。这时候就无论怎么合服都丝般顺滑毫无风险了

ringa_lee

曾经帮助运帷大哥合服,遇到同样的问题。我们的解决方案是写了一个小程序 先SELECT出来,再INSERT进去。

黄舟

A服的最大自增ID是100的话,就把B服的所有自增ID增加100。

没实践过,以前在哪看到过这种方案,目测是可行的,实际上的情况不太清楚。

仅供参考。。

PHPz

最简单的方案是以大区id作为前缀。
或者是以物理服务器的id作为前缀,每个数据库的id肯定是不同的。
还有一种方案,是根据服务器建表,把不同服务器的玩家数据打散到不同的表中(虽然是在一个数据库里),虽然管理上比较麻烦,但是数据不会冲突

怪我咯

不使用自增型数字id作为主键了,直接使用uuid作为主键。不管你是合服还是做分布式,都是最简单的方式。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号