项目是 php + mysql的
需要一个整型的主键,主键除了标记外还应该包含区,服,类型,随机标记(如能保证随机算法,则不需要)mysql支持的int最长为64位
根据php中uniqid的算法,产生的时间戳中(通过gettimeofday),有20位需要用来保存微秒数,32位来表示秒。这样,仅唯一id就占了52位,而且,在高并发情况下,uniqid会产生重复值,这样,我们就需要加另外的随机数来降低重复概率。
对于现在的网页游戏,区号占8位应该是可以满足需求的(256区),服占2位(4服)区 + 服 + uniqid = 62位仅剩下2位了。。没有办法解决类型和随机数的问题,特来请教各位前辈,看有没有什么高招有朋友提过在mysql中单独拿一张表出来维护做自增,这个性能问题我心里没有底,做过的朋友帮忙分析下,谢谢

解决方案 »

  1.   

    一种思路,就是放弃这种编码方式!直接使用MYSQL自身的AUTO_INCREMENT。
    表可以设计成
    user ( id BIGINT AUTO_INCREMENT primary key, 区号 int,服占 int, ....)
      

  2.   


    考虑合服的话,区号和服的号会多余出来
    老板建议使用php共享内存产生auto_increment.....
    感觉可行,试试先,各位前辈有更好的方案,都拿出来哦...