用MySQL实现发号器
浏览:3211次 出处信息
问题:用MySQL实现发号器功能,确保每次取到的ID号都是唯一的
实现:下面是一个大致的思路,抛个砖,欢迎回帖。
根据号段大小,决定是否分成多个表,每个表事先填充各个不同的号段。
每个应用端取号时,设置事务隔离级别为:REPEATABLE READ,并且采用下面的方式读取数据
以下是代码片段: SELECT `ID` FROM `ID_RANGE_XX` ORDER BY ID LIMIT 1 FOR UPDATE |
在上述情境中,只要选择某个ID号,那么其他终端也在读取该号时,会产生锁等待,而不会发生ID号被重用的情况。
考虑到并发的问题,建议增加分表数量,每次循环或随机从分表中读取数据,降低对单个表的并发请求。
建议继续学习:
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:通过PostgreSQL的源代码安装数据库
后一篇:(总结)mysql中对已存在的表做增/删/改列的相关操作 >>
文章信息
- 作者:yejr 来源: MySQL 中文网 -
- 标签: 发号器 唯一号
- 发布时间:2010-07-21 09:45:07
建议继续学习
近3天十大热文
- [66] Oracle MTS模式下 进程地址与会话信
- [66] Go Reflect 性能
- [65] 如何拿下简短的域名
- [59] android 开发入门
- [59] 图书馆的世界纪录
- [59] IOS安全–浅谈关于IOS加固的几种方法
- [58] 【社会化设计】自我(self)部分――欢迎区
- [53] 视觉调整-设计师 vs. 逻辑
- [47] 界面设计速成
- [46] 读书笔记-壹百度:百度十年千倍的29条法则