MySQL - 深度學習 - 全局自增ID

前言

在分佈式場景下,往往我們需要分佈式ID,而數據庫自增序列應該是最基本的

創建 SEQUENCE 表

創建存放 sequence 的表

DROP TABLE IF EXISTS GLOBAL_SEQUENCE;
CREATE TABLE `GLOBAL_SEQUENCE` (
  `name` varchar(50) NOT NULL COMMENT '名稱',
  `current_value` int(11) NOT NULL COMMENT '當前 value',
  `increment` int(11) NOT NULL DEFAULT '1' COMMENT '增長步長',
  PRIMARY KEY (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

插入一條 sequence

INSERT INTO GLOBAL_SEQUENCE(name,current_value,increment) VALUES ('DEFAULT', 100000,100);

使用

BEGIN;
# 遞增
UPDATE GLOBAL_SEQUENCE SET current_value = current_value + increment WHERE name = "DEFAULT";
# 查看
SELECT concat(CAST(current_value AS CHAR),",",CAST(increment AS CHAR)) FROM GLOBAL_SEQUENCE WHERE name = "DEFAULT";
COMMIT;

優化

  • 如果大量請求的時候,性能瓶頸一般都在獲取號段這次操作
  • 我們可以增加雙緩存方案,即批量生成一些id,使用是從Memory中獲取
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章