mysql 分表全局id_MySQL分庫分表環境下全局ID生成方案
摘要: 介紹來自flicker和twitter的兩種解決分布式環境下全局ID生成方案。
目錄:
1. 數據庫自增ID——來自Flicker的解決方案
2. 獨立的應用程序——來自Twitter的解決方案
在大型互聯網應用中,隨着用戶數的增加,為了提高應用的性能,我們經常需要對數據庫進行分庫分表操作。在單表時代,我們可以完全依賴於數據庫的自增ID來唯一標識一個用戶或數據對象。但是當我們對數據庫進行了分庫分表后,就不能依賴於每個表的自增ID來全局唯一標識這些數據了。因此,我們需要提供一個全局唯一的ID號生成策略來支持分庫分表的環境。下面來介紹兩種非常優秀的解決方案:
1. 數據庫自增ID——來自Flicker的解決方案
因為MySQL本身支持auto_increment操作,很自然地,我們會想到借助這個特性來實現這個功能。Flicker在解決全局ID生成方案里就采用了MySQL自增長ID的機制(auto_increment + replace into + MyISAM)。一個生成64位ID方案具體就是這樣的:
先創建單獨的數據庫(eg:ticket),然后創建一個表:
CREATE TABLE Tickets64 (
id bigint(20) unsigned NOT NULL auto_increment,
stub char(1) NOT NULL default '',
PRIMARY KEY (id),
UNIQUE KEY stub (stub)
) ENGINE=MyISAM
當我們插入記錄后,執行SELECT * from Tickets64,查詢結果就是這樣的:
+-------------------+------+
| id | stub |
+-------------------+------+
| 72157623227190423 | a |
+-------------------+------+
在我們的應用端需要做下面這兩個操作,在一個事務會話里提交:
REPLACE INTO Tickets64 (stub) VALUES ('a');
SELECT LAST_INSERT_ID();
這樣我們就能拿到不斷增長且不重復的ID了
mysql 分表全局id_MySQL分庫分表環境下全局ID生成方案相关推荐
- 【转】MySQL分库分表环境下全局ID生成方案
转载一篇博客,里面有很多的知识和思想值得我们去思考. ---------------------------------------------------------------------- 在大 ...
- 分库分表的 9种分布式主键ID 生成方案
<sharding-jdbc 分库分表的 4种分片策略> 中我们介绍了 sharding-jdbc 4种分片策略的使用场景,可以满足基础的分片功能开发,这篇我们来看看分库分表后,应该如何为 ...
- 分库分表的 9种分布式主键ID 生成方案,挺全乎的
<sharding-jdbc 分库分表的 4种分片策略> 中我们介绍了 sharding-jdbc 4种分片策略的使用场景,可以满足基础的分片功能开发,这篇我们来看看分库分表后,应该如何为 ...
- mysql filck_顺序全局id生成方案-flickr(转载)
全局ID的核心需求: 1.全局唯一 2.趋势递增(ID如果做为索引,有序非常重要) 3.单调递增(下一次调用的id一定要大于本次的id) 在大型互联网应用中,随着用户数的增加,为了提高应用的性能,我们 ...
- 【php】mysql全局ID生成方案
生产系统随着业务增长总会经历一个业务量由小变大的过程,可扩展性是考量数据库系统高可用性的一个重要指标;在单表/数据库数据量过大,更新量不断飙涨时,MySQL DBA往往会对业务系统提出sharding ...
- 全局唯一ID生成方案
2019独角兽企业重金招聘Python工程师标准>>> 全局唯一ID生成方案对比 - http://cenalulu.github.io/mysql/guid-generate/ 转 ...
- mysql5.7版本源_用最新MySQL 8.0的源安裝MySQL 5.7版本(CentOS 7環境下)
起因: 從官網下了MySQL最新8.0版本的源,安裝了MySQL 8.0.13,但是發現版本太新了跟其他軟件不兼容,而且改了半天其他軟件配置都沒改好(囧rz)...算了,卸載了8.0,還是安回5.7的 ...
- mysql 分布式 生成序号_分布式唯一ID生成方案
唯一ID在业务系统中经常用到,例如数据库的唯一主键,那么唯一ID如何生成,我们这里介绍一些常见的实现方案. 字符串ID 如果采用字符串id,那么很简单,直接使用jdk自带的UUID,原始生成的是带中划 ...
- java 唯一id生成算法_分布式全局唯一ID生成方案之snowflake算法
已有的方案: 可大致分为: 完全依赖关系/非关系型数据库递增的方案 完全不依赖数据源作为生成因子的UUID 半依赖数据源作为生成因子的snowflake 为什么推荐snowflake? 这个问题,可以 ...
最新文章
- python异常处理关键字_Python中的异常处理
- 本周倔学 2019五月第三周
- IC-CAD Methodology企业实战之openlava
- 西安市2008驾照理论考试题
- Spanning Tree Protocol (STP) in NetScaler Appliance
- html页面跳转方式 + 跳转传参
- [转]HTTP Error 502.5 - Process Failure asp.net core error in IIS
- python尼姆游戏_一个傻傻的尼姆游戏及其Python实现
- 程序员必读书单 1.0
- ios申请企业开发者账号的代理_苹果企业开发者账号的申请详解
- python解密sg11加密_linux下kangle的php安装sourceguardian SG11加密解密扩展
- 网络中的代理(proxy)和NAT
- ERP/MIS开发 LLBL Gen多表操作
- cad记忆口诀_42条简单易记的CAD口诀,一天精通入门,七天上手绘图!
- MySQL基础数据类型
- 20个黄色网页设计,激发你的灵感
- 程序员的十层楼,比尔盖茨仅第四层,你能到第几层?
- 2022-2028全球与中国交通运输锂电池市场现状及未来发展趋势
- 实现敌人(怪物)的简单AI(自动巡逻、看到玩家攻击玩家、玩家离开恢复自动巡逻)
- 经验模态分解python_如何提高希尔伯特黄变换中经验模态分解(EMD)的速度?