博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一分钟了解数据库扩展
阅读量:7055 次
发布时间:2019-06-28

本文共 897 字,大约阅读时间需要 2 分钟。

hot3.png

背景

随着业务的扩张,流量的增加,数据库的压力耶随之增加。单库单表就无法支撑庞大的业务请求。这时候,就可以考虑对数据库进行扩展。本文简单讲述通用的数据库扩展策略。

分库分表

垂直拆分

依据业务纬度进行垂直拆分。如:用户库存储用户相关的表、商品库存储商品相关的表等。

再者,一种场景是对单张宽表进行拆分,将热点列(长度较短,访问频率较高)放在一种表中叫做主表;将冷数据(字段较长,访问频率较低)的放在扩展表中。

特点:

  1. 每个库(表)的结构都不一样。
  2. 一般来说,每个库(表)的属性至少有一列交集,一般是主键。
  3. 所有库(表)的并集是全量数据。

优点: 降低数据量大小,提升数据库性能。

缺点:

  1. 单库的jion查询问题。
  2. 排序分页问题。
  3. 自增id问题。
  4. 分布式事物问题。
  5. 热点数据问题。

水平切分

水平切分是依据某列,按照某一规则(取模或hash等算法)将一个库(表)的数据分解到多个库(表)中。

特点:

  1. 每个库(表)的结构都一样。
  2. 每个库(表)的数据都不一样,没有交集。
  3. 所有库(表)的并集是全量数据。

优点: 降低数据量大小,提升数据库性能。

缺点:

  1. 单库的jion查询问题。
  2. 排序分页问题。
  3. 自增id问题。
  4. 分布式事物问题。

读写分离

分库分表解决了数据量的问题。然而,随着数据量的增加,像商品表的会出现读多写少的问题。这样,就出现读写分离的做法。

读写分离

如上图: 1个写库,2个读库。服务A和服务B走从库A,服务D和服务E走从库B,服务C在从库A和从库B间做轮询。

特点: 针对读多写少的业务场景。

优点:

  1. 可以很好地把各个业务隔离开来。不会因为一个业务把数据库拖死而导致所有的业务都死掉。
  2. 可以很好地分担数据库的读负载,毕竟读操作是最耗数据库 CPU 的操作。

缺点: 数据库同步不实时问题,需要强一致性的读写操作还是需要落在写库上。


以上简单介绍了数据库扩展常用方法。同时也相应的抛出了几个问题,如何解决?后续章节会逐个介绍,也欢迎留言评论,一起交流。


动动小手指,您的关注,是给予我最大的支持。

输入图片说明

转载于:https://my.oschina.net/AlanZhang/blog/1819406

你可能感兴趣的文章
Linux 条件变量 pthread_cond_signal及pthread_cond_wait
查看>>
比AtomicInteger更高效的并发计数器LongAdder
查看>>
做一个座右铭工具每天激励自己
查看>>
Jenkins安装配置
查看>>
vmware12下对虚拟机ubuntu14.10系统所在分区sda1进行磁盘扩容
查看>>
EJB到底是什么,真的那么神秘吗??
查看>>
UI开发工具
查看>>
广义表 (五)
查看>>
Swift中NSTimer定时器的使用
查看>>
Forms开发中触发器的执行顺序
查看>>
SEO博客三个月没更新排行骤步康复
查看>>
JQuery 插件开发的入门介绍
查看>>
马哥2016全新Linux+Python高端运维班第五周作业
查看>>
联想扬天A4680R台式电脑增加内存不识别的解决方案
查看>>
(5)Powershell别名(Alias)
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
linux配置NTP Server
查看>>
PBDOM操作XML文档轻松入门
查看>>
双机热备 纯软 镜像 实战 安装前准备
查看>>