IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

用MySQL实现发号器

MySQL 中文网 - 2010-07-21 09:45:07 累计浏览 4,296 次
本机暂存

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

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

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

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

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

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

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

同分类推荐文章

  1. 使用deepseek进行Oracle恢复,引起重大故障 (2026-06-22 10:56:00)
  2. 接手一个只差临门一脚的数据库恢复 (2026-06-18 00:13:09)
  3. 我做了一个 AI 版的 StarRocks 升级风险扫描工具,直接帮我定位到一个风险 (2026-06-15 01:00:00)

查看更多 数据库 文章 →

建议继续学习

  1. 用Hyer来进行网站的抓取 (累计阅读 158,253)
  2. MySQL数据库在实际应用一些方面的介绍 (累计阅读 36,401)
  3. WordPress插件开发 -- 在插件使用数据库存储数据 (累计阅读 29,165)
  4. Mysql监控指南 (累计阅读 21,352)
  5. 由浅入深探究mysql索引结构原理、性能分析与优化 (累计阅读 16,524)
  6. 在Apache2.2.XX下安装Mod-myvhost模块 (累计阅读 13,059)
  7. 15个最好的免费开源电子商务平台 (累计阅读 12,541)
  8. 浅谈MySQL索引背后的数据结构及算法 (累计阅读 11,914)
  9. 整理了一份招PHP高级工程师的面试题 (累计阅读 11,710)
  10. 深入浅出INNODB MVCC机制与原理 (累计阅读 9,693)