基于mysql的全局ID生成方案
2014-02-14 21:32
197 查看
背景介绍——随着数据库容量的增加,在对数据库完成垂直拆分效果不是很理想的情况下需要对数据库进行水平拆分,而由于一个表被分成了多份,不能再使用之前的单表的自增ID作为主键,所以需要一个全局的ID生成器来统一的进行ID分配,全局ID的生成有很多种方案,此处介绍一个最简单的实现。 实现方案——mysql作为一个成熟的关系型数据库在数据的备份和功能上有很多优势,此处基于mysql的自增ID实现一个全局的ID生成器,能够减少很多的开发工作。下面说一下其实施方案,此处的mysql是单点访问,容灾方面主要靠主从机制。实施中主要是对mysql建立相应的序列表结构和书写客户端代码。此处的序列库是与一个库上的一个表对应的,即数据库名称+表名称会获取一个ID序列。 mysql上的建库和建表语句如下: 1.建库语句: CREATEDATABASE 数据库名称DEFAULTCHARSETutf8; 2.建表语句: USE数据库名称; CREATETABLE `表名`( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `stub` char(1) NOT NULL DEFAULT '', PRIMARY KEY (`id`), UNIQUE KEY `stub`(`stub`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; 3.初始值的设定和步长的设定: ALTER TABLE 表名 AUTO_INCREMENT = 起始值; REPLACE INTO 表名 (stub) VALUES ('a'); SELECT LAST_INSERT_ID(); 4.客户端获取全局ID语句: REPLACE INTO 表名(stub) VALUES ('a'); SELECT LAST_INSERT_ID(); [code] 5.注意事项:mysql数据库引擎需要使用MyISAM,使用InnoDB性能会差很多,客
户端执行的这两条语句是在同一条连接里的,否则会获取失败。
参考链接:/article/1355659.html
相关文章推荐
- 【php】mysql全局ID生成方案
- 基于MySql的扩展功能生成全局ID
- 【php】mysql全局ID生成方案
- 基于MySql的扩展功能生成全局ID
- MySQL分库分表环境下全局ID生成方案
- mysql全局唯一ID生成方案(一)
- 【php】mysql全局ID生成方案
- mysql全局唯一ID生成方案(二)
- 分布式环境下全局唯一ID的生成方案
- MySQL分库分表环境下全局ID生成方案
- Mysql全局ID生成方法
- 全局唯一ID生成方案对比
- MySQL分库分表环境下全局ID生成方案 【转】
- 基于Java代码实现游戏服务器生成全局唯一ID的方法汇总
- MySQL分库分表环境下全局ID生成方案
- 分布式存储中,生成全局唯一ID的几种方案
- MySQL分库分表环境下全局ID生成方案
- 基于全局事物ID的MySQLfailover的故障自动切换
- 一种基于Orleans的分布式Id生成方案