搜索
系统检测到您的用户名不符合规范:

低成本分布式不重复ID号生成器

浏览:987 发布日期:2018年07月26日 分类:技术分享 关键字: ID号 分布式ID
CREATE TABLE `Tickets64` (
`id` bigint(20) unsigned NOT NULL auto_increment,
`stub` char(1) NOT NULL default '',
PRIMARY KEY (`id`),
UNIQUE KEY `stub` (`stub`)
) ENGINE=MyISAM
这是我从国外看见的,已经做过大规模应用。感觉非常好用,而且成本极低。
mysql建立一个发号表,用来发ID号,

SELECT * from Tickets64 ,可以看到是个空行,啥都没有。

当需要一个全局唯一ID的时候,只需要这样,

REPLACE INTO Tickets64 (stub) VALUES ('a');
SELECT LAST_INSERT_ID();

就可以取到一个新的ID号,并且是连续的。

这个用的时候,感觉应该是这样用的。用户表,user

id(自增) userid username
1 1 kk
2 2 pp

php插入数据到user表前,执行上面的sql语句,取得一个全局id号,然后php写入数据的时候,例如取到的全局id是3,那么 insert into user values (3,3,wk)
,把全局id号,写到userid字段。就保证了userid连续性,即便出现事务回滚情况,也能保证userid是连续的。我就是这么理解的。这样可以方便数据迁移吧。

以后我们处理业务情况,就以userid,处理系统各种增删改查工作。

如果哪位理解的更好,欢迎分享经验。

原文:http://code.flickr.net/2010/02/08/ticket-servers-distributed-unique-primary-keys-on-the-cheap

我的微号:wlm212

高手,大神,欢迎批评,教育,指点。







最佳答案
评论() 相关
后面还有条评论,
评论支持使用[code][/code]标签添加代码
您需要登录后才可以评论 登录 | 立即注册
收藏
wlm212
积分:1133 等级:LV3
热点推荐
(追記) (追記ここまで)
最新更新

我们

合作

网站

信息

ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。

AltStyle によって変換されたページ (->オリジナル) /