首页 > 代码库 > flickrf 分布式主键生成方案【mysql】
flickrf 分布式主键生成方案【mysql】
【相关链接:http://blog.csdn.net/bluishglc/article/details/7710738】
具体做法:
1:找两台服务器,分别配置:
1 TicketServer1:2 auto-increment-increment = 23 auto-increment-offset = 14 5 TicketServer2:6 auto-increment-increment = 27 auto-increment-offset = 2
例如:可以在全局global,本地session或者local动态设置这两个参数以控制auto_increment的增量与偏移量。本例在session中设置这二者的值:
具体做法是:
1.1:修改自增量
mysql> set @@session.auto_increment_increment=2;Query OK, 0 rows affected (0.00 sec)mysql> show variables like ‘auto_increment_increment‘;+--------------------------+-------+| Variable_name | Value |+--------------------------+-------+| auto_increment_increment | 2 |+--------------------------+-------+1 row in set (0.00 sec)mysql>
1.2:修改步长
mysql> set @@session.auto_increment_offset=3;Query OK, 0 rows affected (0.00 sec)mysql> show variables like ‘auto_increment_offset‘;+-----------------------+-------+| Variable_name | Value |+-----------------------+-------+| auto_increment_offset | 3 |+-----------------------+-------+1 row in set (0.00 sec)mysql>
2:每张表建数据库flickr,建表Tickets:
CREATE TABLE `Tickets` (`id` bigint(20) unsigned NOT NULL auto_increment,`stub` char(1) NOT NULL default ‘‘,PRIMARY KEY (`id`),UNIQUE KEY `stub` (`stub`)) ENGINE=MyISAM
注意:
2.1:表中必须包含了一个自增主键和一个unique字段。
2.2:stub字段为char(1)
2.3:引擎选用MyIsam。
3:使用LAST_INSERT_ID()函数取序列值,使用REPLACE INTO插入数据,这是很讨巧的作法,主要是希望利用mysql自身的机制生成ID,不仅是因为这样简单,更是因为我们需要ID按照我们设定的方式(初值和步长)来生成。
4:SELECT LAST_INSERT_ID()必须要于REPLACE INTO语句在同一个数据库连接下才能得到刚刚插入的新ID,否则返回的值总是0
5:使用纯粹的JDBC来实现对表的操作。
flickrf 分布式主键生成方案【mysql】
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。