游戏合服 有一些表的主键是自增id,这部分表的合并有什么好的方案?

WBOY
풀어 주다: 2016-06-06 20:45:21
원래의
1454명이 탐색했습니다.

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

回复内容:

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

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

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

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

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

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

仅供参考。。

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

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

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!