数据库:分久必合,合久必分

开发 开发工具 MySQL
很多朋友除了对索引、存储原理有疑惑外,当数据量达到一定规模时,MySQL 还会涉及到一个几乎必知必会的核心点——分库分表。

开源、高性能、生态成熟的 MySQL 是国内应用最广泛的数据库,说 MySQL 见证了中国互联网的成长史,一点也不为过。

阿里基于 MySQL 构建了OceanBase;京东、腾讯时至今日也在大规模应用 MySQL。因此,它也理所应得成为了面试官必问、爱问的核心知识点。

[[390964]]

很多朋友除了对索引、存储原理有疑惑外,当数据量达到一定规模时,MySQL 还会涉及到一个几乎必知必会的核心点——分库分表。

画外音:MySQL 是2019年 DB-Engines 评选的最受欢迎数据库,这些年一直在前三甲徘徊。

问题1:分库分表解决什么问题?

性能瓶颈MySQL是B+树索引,当数据量过大时,索引所消耗的磁盘 IO 越来越多,查询性能下降。高并发情况下,单表数据量过大导致 SQL 性能差,数据库服务器负载太高再次导致性能下降,简直雪上加霜。

  • 高可用:微服务架构下,服务化无状态型会导致压力点在数据库上,单机数据库和主从结构已经不能满足需求,同时数据灾备等维护成本也越来越高。
  • 安全性:所有不同类型的数据全部存在一个数据库中,当数据库宕机或发生物理性损坏时,容易造成不可估量的损失。

画外音:鸡蛋放到不同篮子里。

问题2:分库分表的逻辑是什么?

分库分表的核心是数据拆分,分库不一定分表,分表不一定分库。

例如,MySQL 单表数据的极限在5000万左右,当数据量超过5000万时,我们就需要分表进行存放数据了。

简单来说,就是将一个表结构分为多个表,或者将一个表数据分片后放入多个表。这些表可以放在同一个数据库里,也可以放到不同的数据库中,甚至可以放到不同的数据库实例。

问题3:面试官问,分库分表方案有哪些?

数据拆分方式:

  • 水平拆分
  • 垂直拆分

常见方案:

  • 客户端分片
  • 代理分片
  • 支持事务的分布式数据库

【本文为51CTO专栏作者“58沈剑”原创稿件,转载请联系原作者】

戳这里,看该作者更多好文

 

责任编辑:赵宁宁 来源: 架构师之路
相关推荐

2019-02-14 10:10:11

系统厂商芯片

2012-07-04 13:39:58

2018-04-11 09:07:36

云计算

2012-05-14 10:21:39

数据中心云计算

2016-11-02 09:33:09

大数据电商新零售

2009-08-26 21:32:54

数据中心集中管理

2018-06-20 19:57:40

桌面虚拟

2020-03-27 08:17:01

运维DBA服务器

2011-08-10 15:46:29

数据库

2022-11-14 18:23:06

亚马逊

2011-11-04 14:07:40

存储

2021-09-28 09:25:05

NoSQL数据库列式数据库

2021-05-17 06:57:34

SQLServer数据库

2012-02-22 09:47:26

2011-08-02 15:04:49

2010-09-30 08:27:48

2011-05-13 09:42:21

2010-09-30 09:11:01

2020-11-23 16:42:38

数据库MySQL技术

2021-09-06 10:24:12

鸿蒙HarmonyOS应用
点赞
收藏

51CTO技术栈公众号