技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> MySQL --> 用MySQL实现发号器

用MySQL实现发号器

浏览:3174次  出处信息

    问题:用MySQL实现发号器功能,确保每次取到的ID号都是唯一的

    实现:下面是一个大致的思路,抛个砖,欢迎回帖。

    根据号段大小,决定是否分成多个表,每个表事先填充各个不同的号段。

    每个应用端取号时,设置事务隔离级别为:REPEATABLE READ,并且采用下面的方式读取数据

以下是代码片段:
SELECT `ID` FROM `ID_RANGE_XX` ORDER BY ID LIMIT 1 FOR UPDATE

    在上述情境中,只要选择某个ID号,那么其他终端也在读取该号时,会产生锁等待,而不会发生ID号被重用的情况。

    考虑到并发的问题,建议增加分表数量,每次循环或随机从分表中读取数据,降低对单个表的并发请求。

建议继续学习:

  1. 超级BT+无聊的订单号(或唯一编号)生成方法-_-    (阅读:3844)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1