开发者社区> 科技小先锋> 正文

FAQ系列 | 用MySQL实现发号器

简介:
+关注继续查看

问题:用MySQL实现发号器功能,确保每次取到的ID号都是唯一的
实现:下面是一个大致的思路,抛个砖,欢迎回帖。
根据号段大小,决定是否分成多个表,每个表事先填充各个不同的号段。
每个应用端取号时,设置事务隔离级别为:REPEATABLE READ,并且采用下面的方式读取数据

SELECT `ID` FROM `ID_RANGE_XX` ORDER BY ID LIMIT 1 FOR UPDATE

在上述情境中,只要选择某个ID号,那么其他终端也在读取该号时,会产生锁等待,而不会发生ID号被重用的情况。
考虑到并发的问题,建议增加分表数量,每次循环或随机从分表中读取数据,降低对单个表的并发请求。


本文转自叶金荣51CTO博客,原文链接:http://blog.51cto.com/imysql/1879715,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
FAQ系列 | MySQL DBA修炼秘籍
FAQ系列 | MySQL DBA修炼秘籍
41 0
[MySQL FAQ]系列 — 为什么InnoDB表要建议用自增列做主键
[MySQL FAQ]系列 — 为什么InnoDB表要建议用自增列做主键
30 0
[MySQL FAQ]系列 — 从MyISAM转到InnoDB需要注意什么
[MySQL FAQ]系列 — 从MyISAM转到InnoDB需要注意什么
22 0
[MySQL FAQ]系列 — MySQL复制中slave延迟监控
[MySQL FAQ]系列 — MySQL复制中slave延迟监控
55 0
FAQ系列 | 是什么导致MySQL数据库服务器磁盘I/O高?
FAQ系列 | 是什么导致MySQL数据库服务器磁盘I/O高?
40 0
FAQ系列 | MySQL索引之主键索引
FAQ系列 | MySQL索引之主键索引
39 0
FAQ系列 磁盘空间满了之后MySQL会怎样
FAQ系列 | 磁盘空间满了之后MySQL会怎样
92 0
[MySQL FAQ]系列 — mysqldump加-w参数备份
[MySQL FAQ]系列 — mysqldump加-w参数备份
27 0
[MySQL FAQ]系列 — 为什么要关闭query cache,如何关闭
[MySQL FAQ]系列 — 为什么要关闭query cache,如何关闭
51 0
[MySQL FAQ]系列 — 线上环境到底要不要开启query cache
[MySQL FAQ]系列 — 线上环境到底要不要开启query cache
33 0
+关注
科技小先锋
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
让 MySQL 原生分布式触手可及
立即下载
好的 MySQL 兼容可以做到什么程度
立即下载
云数据库RDS MySQL从入门到高阶
立即下载