表示 进入内容 11
Displaying posts with tag: 分表 (reset)
数据库分表后,并发环境下,生成全局id生成的几种方式

   最近一个项目由于数据量变大,需要进行数据分表。数据存储在淘宝的tddl上。分表后,原先的自增id就不能使用了。tddl对java支持很好,分表后无需考虑全局id的问题。但是这个项目使用的是php进行开发,必须自己生成全局id。以下列出几种分表方案,仅当抛砖引玉。

   方法1:使用CAS(compare and swap)

   其实这里并不是严格的CAS,而是使用了比较交换原子操作的思想。

   生成思路如下:

   每次生成全局id时,先从sequence表中获取当前的全局最大id。然后在获取的全局id上做加1操作。把加1后的值更新到数据库。更新时是关键。

   如加1后的值为203,表名是users,数据表结构如下:

CREATE TABLE `SEQUENCE` (
    `name` varchar(30) NOT NULL COMMENT '分表的表名',
    `gid` …
[获取更多]
表示 进入内容 11