首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >tdsql 数据表扩容拆分的机制、算法,时间点、建议值 ?

tdsql 数据表扩容拆分的机制、算法,时间点、建议值 ?

提问于 2020-09-24 08:20:09
回答 1关注 0查看 245

tdsql 数据表扩容拆分的机制、算法,时间点、建议值 ?

回答 1

腾讯云数据库 TencentDB

发布于 2020-09-27 14:45:26

分片表的拆分算法可以这么理解:

  1. 我们建表的实例指定一列(适合业务拆分的列,比如userid), 建好表后,可以用透传分片的语法去每个分片上查看表结构;你会发现每个分片上的表结构有对应分区的信息,比如分片1负责0-31, 分片2负责32-64
  2. 建好表后,在进行增删改查时,proxy会根据客户端发送的sql,进行语法解析,判断sql该发送给哪个分片 — 这里就涉及分片表的分片算法了,这里的逻辑是hash(userid)->[0,64),然后根据分片负责的hash范围进行转发;

扩容的时候,有2种方式: 1, 分片垂直扩容,比如2个分片1C2G,分片个数不变扩成2个分片2C4G;-- 每个分片负责的hash范围不变,新增的2C4G分片从原来的分片上导出做主从直到延迟非常小进行切换;老的1C2G的分片下线 2. 添加分片,比如2个分片添加到4个分片,新增的会从原来的一个分片中导出完整的数据出来做主从,然后延迟非常小的时候,进行路由切换;新增的分片和老的分片,各自删除多余的分区数据;

一般我们建议在一个分布式实例里面,单个分片规格尽量大,分片个数尽量少,来减少分布式开销; 比如优先创建2个2C4G的分片的实例,而不是创建4个1C2G的分片的实例,分片规格达到上限后,再进行添加分片;

和开发者交流更多问题细节吧,去 写回答
相关文章
HashMap的扩容机制—resize()「建议收藏」
什么时候扩容:当向容器添加元素的时候,会判断当前容器的元素个数,如果大于等于阈值(知道这个阈字怎么念吗?不念fa值,念yu值四声)—即当前数组的长度乘以加载因子的值的时候,就要自动扩容啦。
全栈程序员站长
2022/07/02
3150
HashMap的扩容机制—resize()「建议收藏」
TDSQL—扩容增加zookeeper节点
上图是TDSQL结构图,因部署高可用环境2机房增加到3机房时需要增加ZOOKEEPER节点的情形,比方说从3台增加到5台。具体操作方法,以及需要修改的配置文件我们可以参考以下方法:
腾讯云数据库 TencentDB
2020/12/11
2.2K0
TDSQL—扩容增加zookeeper节点
数据表水平拆分
水平拆分就是把一张大表的内容拆分到不同数据表中,来提升数据库的性能 1张表 -> N张表 拆分是根据路由算法来决定 常用的路由算法:哈希值取模 例如 把数据库分为 4 个分库 把模值设置为 10
dys
2018/04/03
1.4K0
数据表水平拆分
ArrayList的扩容机制
在Java中,ArrayList是一个使用非常频繁的集合类型,它的底层是Object数组,所以它拥有数组所拥有的特性,比如支持随机访问,所以查询效率高,但插入数据需要移动元素,所以效率低。
wangweijun
2022/01/10
6800
Vue中拆分视图层代码的5点建议
SPA框架几乎都是基于MVC或MVVM设计模式而建立起来的,这些模式都只是宏观的分层设计,当代码量开始随着项目增大而增多时,问题就会越来越多。许多企业内部的项目仍然在使用angularjs1.X,你会发现许多controller的体积大到令人发指,稍有经验的团队会利用好angularjs1构建的controller,service,filter以及路由和消息机制来完成基本的拆分和解耦,这已经能让他们的开发能力中等体量的项目,往往只有掌握了angularjs1玩法精髓——directive的队伍,才能够在应付大型项目时使代码保持足够的清晰度,当然这只是在代码形态和模块划分上的工作,相当于代码的骨骼,想要让业务逻辑本身更加清晰,就需要更高级的建模设计知识来对业务逻辑进行分层,例如领域驱动模型。如果你仍然在使用angularjs1.x的版本进行开发,可以参考【如何重构Controller】进行基本的分层拆分设计。
大史不说话
2019/08/18
2.3K0
腾讯私有云MySQL解决方案—TDSQL
TDSQL是腾讯提供的一套完整的MySQL数据库集群化管理解决方案,作为私有云TStack平台重要的数据库产品能力,旨在解决高可用、高性能、分布式、配套设施等方面问题。 TDSQL除了在腾讯内部有大量的使用场景,在外部市场中也有诸多应用场景;2014年被WeBank选中,作为其核心交易系统的数据库解决方案,以私有云方式交付;2015年,在腾讯云上正式推出。目前已经为500+机构提供数据库的公有云及专有云服务,客户覆盖计费、第三方支付、银行、保险、互联网金融、物联网、互联网+、政务等领域。 TDSQL私有云版
腾讯云TStack
2018/03/21
7.1K0
腾讯私有云MySQL解决方案—TDSQL
ArrayList的扩容机制
(3)构造包含指定collection元素的列表,这些元素利用该集合的迭代器按顺序返回
Li_XiaoJin
2022/06/10
4400
ArrayList的扩容机制
ArrayList 的扩容机制
ArrayList是Java中常用的动态数组实现类,它可以根据需要自动调整大小。当我们向ArrayList添加元素时,如果当前容量不足以容纳新元素,ArrayList会自动进行扩容操作,即增加底层数组的长度。
程序员朱永胜
2023/10/14
1.1K0
jdk1.8 HashMap扩容机制变化「建议收藏」
JDK1.8中的HashMap较于前代有了较大的变更,主要变化在于扩容机制的改变。在JDK1.7及之前HashMap在扩容进行数组拷贝的时候采用的是头插法,因此会造成并发情景下形成环状链表造成死循环的问题。JDK1.8中改用了尾插法进行数组拷贝,修复了这个问题。
全栈程序员站长
2022/06/28
4190
jdk1.8 HashMap扩容机制变化「建议收藏」
亿级流量下平滑扩容:TDSQL水平扩容方案实践
为帮助开发者更好地了解和学习分布式数据库技术,2020年3月,腾讯云数据库、云加社区联合腾讯TEG数据库工作组特推出为期3个月的国产数据库专题线上技术沙龙《你想了解的国产数据库秘密,都在这!》,邀请数十位鹅厂资深数据库专家每周二和周四晚上在线深入解读TDSQL、CynosDB/CDB、TBase三款鹅厂自研数据库的核心架构、技术实现原理和最佳实践等。本文将带来直播回顾第三篇《亿级流量场景下的平滑扩容:TDSQL的水平扩容方案实践》。
分布式数据库TDSQL
2020/04/09
2.5K0
HashMap扩容机制
当HashMap中的元素个数超过数组大小(数组长度)*loadFactor(负载因子)时,就会进行数组扩容,loadFactor的默认值(DEFAULT_LOAD_FACTOR)是0.75,这是一个折中的取值。也就是说,默认情况下,数组大小为16,那么当HashMap中的元素个数超过16×0.75=12(这个值就是阈值或者边界值threshold值)的时候,就把数组的大小扩展为2×16=32,即扩大一倍,然后重新计算每个元素在数组中的位置,而这是一个非常耗性能的操作,所以如果我们已经预知HashMap中元素的个数,那么预知元素的个数能够有效的提高HashMap的性能。
全栈程序员站长
2022/09/07
1.1K0
ArrayList扩容机制。
1)直接new 一个ArrayList对象时(未指定初始容量大小)是一个空的数组,容量大小为零。 public ArrayList() { // DEFAULTCAPACITY_EMPTY_ELEMENTDATA 变量为一个空的数组 private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {}; this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA; } 2)、当第一次调用ArrayList对象的add方法时,分配容量大小 public boolean add(E e) { // size 为ArrayList的实际数量大小而非容量大小,如果未指定容量构建的ArrayList对象此时size对象应该为0 ensureCapacityInternal(size + 1); // Increments modCount!! elementData[size++] = e; return true; } private void ensureCapacityInternal(int minCapacity) { // 如果为空数组,最小需要容量为默认最小容量DEFAULT_CAPACITY 也就是10 private static final int DEFAULT_CAPACITY = 10; if (elementData == DEFAULTCAPACITY_EMPTY_ELEMENTDATA) { minCapacity = Math.max(DEFAULT_CAPACITY, minCapacity); } // 调用扩容方法 ensureExplicitCapacity(minCapacity); } private void ensureExplicitCapacity(int minCapacity) { modCount++; // 如果最小的需要容量大于此时的容量,调用真正的扩容方法 // overflow-conscious code if (minCapacity – elementData.length > 0) grow(minCapacity); } private void grow(int minCapacity) { // overflow-conscious code int oldCapacity = elementData.length; // 第一次扩容1.5倍 int newCapacity = oldCapacity + (oldCapacity >> 1); // 还是比需要的容量小就把需要的容量作为新的容量值 if (newCapacity – minCapacity < 0) newCapacity = minCapacity; // 如果此时的新的容量比最大容量还大则比较需求容量和数组最大容量的大小, 如果比最大容量大就赋值为整数最大值,反之赋值为最大容量。 这里主要防止1.5倍扩容导致新容量值超过数组最大容量 if (newCapacity – MAX_ARRAY_SIZE > 0) newCapacity = hugeCapacity(minCapacity); // minCapacity is usually close to size, so this is a win: // 进行一个复制操作 elementData = Arrays.copyOf(elementData, newCapacity); } private static int hugeCapacity(int minCapacity) { if (minCapacity < 0) // overflow throw new OutOfMem
全栈程序员站长
2022/09/01
2900
HashMap扩容机制
HashMap的扩容机制 上一期已经讲到了添加元素的put方法了,现在回顾一下put方法,主要讲解扩容方法:
用户6055494
2019/10/15
9420
简述HashMap的扩容机制
注意:本博客需要对HashMap源码有过一定理解,看过源码比较好,仅供互相学习参考
SmileNicky
2023/07/24
3200
简述HashMap的扩容机制
「科技·TEG」拓路前行-TDSQL追求极致体验的这一路
2007年,计费平台的一帮年轻人为了实现银行级的高可用、零错账的交易系统,加班加点讨论方案,长达几个月的反复头脑风暴与论证,终于提出了“TBOSS 7*24”容灾方案,并用了一年多时间落地推广后,斩获09年公司级技术突破奖,获得了Tony的首肯,从此开启了计费平台打造金融级数据库的探索之路。 十年,一路走来,技术追求永无止境,打造一款更好用的高一致、高可用、高性能分布式数据库产品的初心从未改变,系统架构历经三代优化,2012年立项的第四代产品TDSQL,经过5年打磨与海量业务的实际运营优化,并与腾讯金融
TEG云端专业号
2018/03/13
1K0
「科技·TEG」拓路前行-TDSQL追求极致体验的这一路
arraylist扩容是创建新数组吗 java_arraylist扩容机制要怎么实现?arraylist怎么扩容…「建议收藏」
ArrayList大家都知道了吧,这是一个动态数组。以java语言来说,数组是定长的,在被创建之后就不能被加长或缩短了,因此,了解它的扩容机制对使用它尤为重要。下面,我们就一起来看看它的扩容机制是怎么实现的吧。
全栈程序员站长
2022/08/26
5110
HashMap扩容机制解析
通过查看Java JDK1.8putVal()源码可看到,有两种情况可能会触发扩容。
全栈开发日记
2022/05/13
2500
HashMap扩容机制解析
关于HashMap扩容机制
HashMap的底层有数组 + 链表(红黑树)组成,数组的大小可以在构造方法时设置,默认大小为16,数组中每一个元素就是一个链表,jdk7之前链表中的元素采用头插法插入元素,jdk8之后采用尾插法插入元素,由于插入的元素越来越多,查找效率就变低了,所以满足某种条件时,链表会转换成红黑树。随着元素的增加,HashMap的数组会频繁扩容,如果构造时不赋予加载因子默认值,那么负载因子默认值为0.75,数组扩容的情况如下:
全栈程序员站长
2022/09/13
9830
直播回顾 | 困扰多年的分库分表问题终于解决了
腾讯云数据库国产数据库专题线上技术沙龙正在火热进行中,3月17日郑寒的分享已经结束,没来得及参与的小伙伴不用担心,以下就是直播的视频和文字回顾。
腾讯云数据库 TencentDB
2020/04/02
6230
腾讯会议核心数据库TDSQL,如何做到快速无损在线扩容?
自去年12月底发布后,腾讯会议40天更新14个版本,8天紧急扩容超过10万台云主机,投入的计算资源超100万核。疫情复工期间,每周都有数万家企业和政府相关机构使用腾讯会议复工复产,通过腾讯会议开拓了云签约、云招标、云面试、云培训等云上协同场景。
腾讯云开发者
2020/05/08
3.1K0

相似问题

Tdsql 可以做到基于时间点的恢复吗 ?

1325

TDSQL MySQL版shardkey建议使用自增列吗?

1385

Tdsql 强同步机制下会等 从上面的binlogSQL 回放吗?

1430

tdsql水平扩容的时候SET1的数据是怎么迁移到SET2上的?

1258

tdsql报错?

1371
相关问答用户
腾讯云TDP | TDP会员擅长3个领域
平安资管 | 架构师擅长4个领域
到家集团 | 技术VP擅长5个领域
擅长3个领域
擅长5个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档