爱美容
当前位置: 首页 美容百科

数据库读写分离的原理(mysql读写分离常见方式)

时间:2023-06-04 作者: 小编 阅读量: 1 栏目名: 美容百科

数据一致性的容忍度。虽然是数据同步,但是由于网络的不确定性这仍然是一个不可忽视的问题。需要从实际业务出发将大业务分割成小业务。甚至由于网络问题引发数据不一致。数据关系可以通过join维持。表结构维持不变。这需要建立长效的监控预测机制来应对,甚至根据实际情况及时调整策略。数据拆分还面临分布式的很多问题,分布式事务,高可用,数据一致性,全局唯一性都是应该考虑的问题。

1. 前言

相信你经常被 读写分离、垂直拆分、水平拆分、分库分表 这几个名词搞得很懵逼。我有时候也很懵逼,那么今天就来把这几个数据库常用术语搞清楚,同时也记录一下。

2. 读写分离

这个相对比较好理解一些,就是将数据库分为主从库,一个主库(Master)用于写数据,多个从库(Slaver)进行轮询读取数据的过程,主从库之间通过某种通讯机制进行数据的同步,是一种常见的数据库架构。下面这张图就展示了 “一主二从” 的结构:

2.1 为什么要读写分离

大多数互联网数据操作往往都是读多写少,随着数据的增长,数据库的“读”会首先成为瓶颈。如果我们希望能线性地提升数据库的读性能和写性能,就需要让读写尽可能的不相互影响,各自为政。在使用读写分离之前我们应该考虑使用缓存能不能解决问题。然后再考虑对数据库按照 “读” 和 “写” 进行分组。读写分离意味着将一体的结构的进行分散,在数据量大、高并发的情景中要考虑以下这些问题

  1. 如何保证 Master 的高可用,故障转移,熔断限流等。
  2. 读写操作的区分规则,代码层面如何处理好读命令和写命令,尽量无感知无业务入侵。
  3. 数据一致性的容忍度。虽然是数据同步,但是由于网络的不确定性这仍然是一个不可忽视的问题。

3. 分库

数据库垂直拆分、数据库水平拆分 统称 分库。是指按照特定的条条件和维度,将同一个数据库中的数据拆分到多个数据库(主机)上面以达到分散单库(主机)负载的效果。这样我们变相地降低了数据集的大小,以空间换时间来提升性能。

3.1 数据库垂直拆分

数据库垂直拆分 指的是按照业务对数据库中的表进行分组,同组的放到一个新的数据库(逻辑上,并非实例)中。需要从实际业务出发将大业务分割成小业务。比如商城的整个业务中的 用户相关表,订单相关表,物流相关表 各自独立分类形成 用户系统数据库,订单系统数据库,物流系统数据库 如下图:

这样带来了一些好处:(a)业务清晰,职责单一 (b)易维护,易扩展 (c)数据服务化 。

同时也有一些负面的作用:(a)提高了整个应用的复杂度,而且会形成跨库事务 (b)引发 “木桶效应”,任何一个短板有可能影响整个系统 (c)部分表关系不能 join 只能通过服务相互调用来维系。甚至由于网络问题引发数据不一致。

在需要进行分库的情况下,通常可优先考虑垂直拆分。

3.2 数据库水平拆分

在数据库垂直拆分后遇到单机数据库性能瓶颈之后,就可以考虑数据库水平拆分了。之所以先垂直拆分才水平拆分,是因为垂直拆分后数据业务清晰而且单一,更加方便指定水平的标准。比如我们对商城业务垂直拆分后的 用户系统 进行水平拆分就比对整个商城业务进行水平拆分好找维度,我们可以根据用户注册时间的区间、用户的区域或者用户 ID 的范围、 hash 等条件,然后关联相关表的记录将数据进行拆分,如果放在整个商城业务上你是以用户为准还是以订单为准都不太好考虑。

我们按照每 100 万为区间对用户系统水平拆分如下:

这种拆分的好处在于:(a)单个库的容量可控。 (b)单挑记录保证了数据完整性。 (c)数据关系可以通过 join 维持。 (d) 避免了跨库事务 。

缺点同样存在:(a)拆分规则对编码有一定的影响。 (b)不同业务的分区交互需要统筹设计。

4. 分表

分表也分为 数据表垂直拆分数据表水平拆分

4.1 数据表垂直拆分

数据表垂直拆分就是纵向地把表中的列分成多个表,把表从“宽”变“窄”。一般遵循以下几个点进行拆分:

  • 冷热分离,把常用的列放在一个表,不常用的放在一个表。
  • 大字段列独立存放
  • 关联关系的列紧密的放在一起

我们把用户表中常用的和不常用的而且大字段分离成两张表:

4.2 数据表的水平拆分

表的水平拆分感觉跟库的水平拆分思想上都是一样的,只不过粒度不同。表结构维持不变。也就是说拆分后数据集的并集等于拆分前的数据集。理解了 3.2 章节 之后这个就没有什么可说的了。

5. 总结

这里简单阐述了几个数据库优化概念,在实际操作中往往会组合使用。我们在实际操作之前要做好数据量的预估,这样能够根据预测未来数据的增量来进行选型。业务数据增长较小,常用于表的拆分。增长特别大达到上万级别则可以选择分库,比如一些资金积分流水,历史记录之类的。有些时候并不是拆分完就万事大吉了,比如我们按照地区拆分后,A 地区业务增长很快业绩很好,而 B 地区推广不力竞争激烈业绩萧条,造成了数据倾斜。也会影响分库分表的期望效果。这需要建立长效的监控预测机制来应对,甚至根据实际情况及时调整策略。数据拆分还面临分布式的很多问题,分布式事务,高可用,数据一致性,全局唯一性都是应该考虑的问题。希望我的讲解能够帮助你,还希望多多关注!

    推荐阅读
  • 不锈钢的锅能炒菜吗(不锈钢铁锅可以炒菜吗)

    市面上的不锈钢基本上都是由络合金制成,能防止微量元素与外部发生发应,因此在炒菜时要避免与酸碱性物质接触,做好保养工作,且用它来做饭,更加的干净、重量更轻,使用起来会非常便捷。

  • 去泰国一定要知道的知识(你不知道的10条泰国冷知识)

    你不知道的10条泰国冷知识泰王国(泰语:ราชอาณาจักรไทย),通称泰国(泰语:ประเทศไทย),是一个位于东南亚的君主立宪制国家面积约51万平方公里,人口约6800万1.泰国的首都曼谷是世界上最长的首都的名字,共。

  • 风中奇缘剧情深度解析(难得的良心改编剧)

    毕竟大部分女粉丝都是为了男演员而看剧的。于是饰演卫无忌的演员最后确定由最佳人选彭于晏出演。如此成功的演员班底,是《风中奇缘》的一大看点。胡歌饰演的儒商九爷莫循,温文尔雅、月朗风清。彭于晏饰演的南朝将军卫无忌英姿勃发、气宇轩昂。最后,在一场战事中,卫无忌受伤中毒。为了成全莘月与卫无忌,莫循不惜以双腿残废的代价以身试毒,最终归隐而去。

  • 桔梗怎么种植(桔梗如何种植)

    选地整地选择阳光充足、土层深厚、排水良好的砂质壤土地块,下面我们就来聊聊关于桔梗怎么种植?可选择采用种子繁殖,生长期2年,或者育苗移栽,生长期1年。桔梗出苗后,进行除草,在干湿适宜时进行浅松土,经常保持土地疏松,田间无杂草。在高温多湿的梅雨季节,应及时疏沟排水,防止积水烂根。桔梗花期长达4个月,开花对养分消耗相当大,又易萌发侧枝。桔梗生长期发现其它害虫按常规方法防治即可,但收获前20天禁止使用农药。

  • 晚上睡觉之前适合做运动吗(睡前可以做什么运动)

    晚上睡觉之前适合做运动吗晚上睡觉前半小时是可以运动的,但建议做比较温和和缓的运动,例如瑜伽等,不要太过激烈,持续时间也不要过长,否则容易影响睡眠。如果长时间不运动,一下子做长时间激烈运动是会有不适的。突然剧烈运动,会使机体乳酸代谢异常,浑身酸疼乏力不适。如果没有运动习惯,想要开始尝试运动,就要循序渐进。仰卧起坐和俯卧撑可以做的,可以增加腹肌和胸大肌的力量。但是不要做完后马上睡觉,要等呼吸平稳以后。

  • 炒腰果的家常做法(炒腰果的家常做法介绍)

    下面希望有你要的答案,我们一起来看看吧!炒腰果的家常做法原料:腰果、橄榄油、盐、生腰果200克。1勺橄榄油,1点点盐,两张吸油纸。搅拌均匀,点火。小火慢炒,大约10分钟。腰果变色了,八九分熟关火,放入吸油纸继续翻炒。直到腰果降温了,吸油纸把锅里和腰果上的油全吸掉。这时的腰果还软的,放一会凉透了,就酥脆即可。

  • 必读书单100本书(50本好书必备书单)

    50本好书必备书单一年之计在于春,春节正是充电时随笔集、自然类、哲学类、历史类、经济类、政治类、文化类、诗歌类、传记类……每类5本,共10类50本新的一年从读书开始,从这50本好书开始欢迎留言分享您走亲戚的故事,就有机。

  • 碌组词(碌组词造句)

    以下内容希望对你有帮助!碌碌造句:1998年,当查韦斯当选总统时,整个国家正处于一种恼怒的氛围之中:公民们,无论贫富,都厌烦了那些被认为是腐败堕落和碌碌无为的政客们。

  • 临街商铺投资回报率(商铺投资热潮下)

    最近这段时间,明显能感觉到南京楼市回暖,住宅市场火热的同时,商办市场也毫不逊色。然而事实上,有些商铺的售价已过高,租金根本不足以支撑。这是南京市面上唯一可售的仁恒社区商铺,有仁恒物业保驾护航。COSTA、星巴克南京首家社区店,均选择在仁恒社区落户。

  • 林青霞最经典的武侠(女侠是什么样的侠)

    女侠是什么样的侠今天来说说电影里的那些侠女及其服饰一说起女侠,你会想到什么?我的脑海里首先浮现出的就是头戴帷帽,手持宝剑,英气逼人的女子形象如果说起电影里与之对应的人物,那便是1992年的老电影《新龙门客栈》里林青霞。