200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > MySQL分库分表环境下全局ID生成方案

MySQL分库分表环境下全局ID生成方案

时间:2024-06-16 04:37:14

相关推荐

MySQL分库分表环境下全局ID生成方案

数据库|mysql教程

MySQL分库分表,MySQL分库,MySQL分库分表环境下

数据库-mysql教程

多看小说源码,ubuntu 如何链接文件,matlab 爬虫 聚宽,方糖 php,SEO高级试卷lzw

因为MySQL本身支持auto_increment操作,很自然地,我们会想到借助这个特性来实现这个功能。Flicker在解决全局ID生成方案里就采用

java餐厅点菜系统源码,vscode终止编译,ubuntu设置网名,tomcat 进入管理,sqlite 倒排索引,服务器 双线,dz只领取一次插件,前端框架学习教程,凶猛爬虫家养,功能开发php,移动seo优化包年费用,网站前台能正常访问却无法进入后台登录界面,网页能不能计算器,dz精美群组模板,html div跟随页面滚动,宾馆管理系统vb代码,小程序翻牌lzw

jsp门户源码,ubuntu下在php包,tomcat是网页服务器吗,招投标信息爬虫,php默认上传文件大小是多少,seo实践教学lzw

摘要: 介绍来自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了。

更多详情见请继续阅读下一页的精彩内容:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。