目录
百战程序员,全站22050+开发课程+文档 ,学习精选优质好课快人一步!观看视频 快捷键ALT+N

微服务 教程

1085个小节阅读:195.5k

收藏
全部开发者教程

C语言快速入门

JAVA全系列 教程

面向对象的程序设计语言

Python全系列 教程

Python3.x版本,未来主流的版本

人工智能 教程

顺势而为,AI创新未来

大厂算法 教程

算法,程序员自我提升必经之路

C++ 教程

一门通用计算机编程语言

微服务 教程

目前业界流行的框架组合

web前端全系列 教程

通向WEB技术世界的钥匙

大数据全系列 教程

站在云端操控万千数据

AIGC全能工具班

A

A A

White Night

阅读(166)
赞(0)

Mycat分片规则_全局序列

image-20220114142543936

在实现分库分表的情况下,数据库自增主键已无法保证全局唯一。

解决方案

本地文件

此方式Mycat将sequence配置到文件中,当使用到 sequence中的配置后,Mycat会更下classpath中的 sequence_conf.properties 文件中sequence当前的值。

image-20220114163238696

注意:

  • 优点:本地加载,读取速度较快
  • 缺点:抗风险能力差,Mycat 所在主机宕机后,无法读取本地文件。

本地时间戳方式

全局序列ID=64位二进制 (42(毫秒)+5(机器 ID)+5(业务编码)+12(重复累加) 换算成十进制为18位数的long类型,每毫秒可以并发12位二进制的累加。

优缺点:

  • 优点:配置简单
  • 缺点:18位ID过长

数据库方式

利用数据库一个表来进行计数累加。但是并不是每次生成序列都读写数据库,这样效率太低。Mycat 会预加载一部分号段到 Mycat 的内存中,这样大部分读写序列都是在内存中完成的。如果内存中的号段用完了 Mycat 会再向数据库要一次。

image-20220114152317272

原理:

在数据库中建立一张表,存放 sequence 名称(name),sequence 当前值(current_value),步长(increment int 类型每次读取多少个 sequence,假设为 K)等信息;

数据库解决全局序列

修改Mycat配置文件server.xml

修改Mycat配置文件schema.xml

修改Mycat 配置文件 sequence_db_conf.properties

最下面添加MYCAT=dn2

在dn2节点的orders数据库中添加 MYCAT_SEQUENCE表

MYCAT_SEQUENCE 表插入sequence初始记录

注意:

代表插入了一个名为mycat的sequence,当前值为-99,步长为100。

创建全局序列所需存储过程

重启Mycat

向dn1,dn2添加test表

在Mycat中向test表中添加测试数据

查询数据验证

实时学习反馈

1.Mycat技术中设置全局序列需要在server.xml修改sequnceHandlerType为___

A 0

B 1

C 2

D 3

2.Mycat技术中全局序列问题中本地文件解决方案缺点___

A 加载速度快

B 读取速度快

C 拓展性

D 抗风险能力差

答案

1=>B 2=>D

 

北京市昌平区回龙观镇南店村综合商业楼2楼226室

©2014-2023 百战卓越(北京)科技有限公司 All Rights Reserved.

京ICP备14032124号-2