`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
高手,大神,欢迎批评,教育,指点。
最佳答案