当前位置:网站首页>分库分表
分库分表
2022-07-22 09:21:00 【单手入天象】
分库分表用于应对当前互联网常见的两个场景——大数据量和高并发。他们都可以分为垂直拆分和水平拆分两种。
- 垂直拆分是根据业务将一个库(表)拆分为多个库(表)。如:将原本同一张表中经常访问和不常访问的字段,拆分至不同的表中;按业务划分将不同的表存放在不同的库里。
- 水平拆分则是根据分片算法将一个库(表)拆分为多个库(表)。如:将原本的order表拆分成order_1、order_2、order_3多张表,每个表的数据结构一模一样,存取数据都是要按照ID的最后一位以3取余,尾数是1的放入第1个表,尾数是2的放入第2个表这样;分库也一样,将原本一个库复制成多个库,每个库里面的表结构、字段结构一模一样,只是存放的数据不一样,所有库的数据的和就是所有数据。
分表是针对解决数据量过大导致检索变慢的问题,但无法解决过多并发请求访问同一个库,导致数据库响应变慢的问题。而分库就可以将同一个库的并发量拆分到多个库,减轻单个库的并发压力。
分库分表是两个不同的概念,他们分别都对应了有水平拆分、垂直拆分的概念,也都代表不一样的意义,解决的问题也不一样,下面具体说明。
- 水平分库
以表的主键字段为依据,按照一定策略(取模,hash等),将本来在一个库中的数据拆分到多个库中。
每个库的表结构都一模一样;
每个库的数据都不一样,没有任何交集;
所有库的表的数据的并集才是全量数据;
- 水平分表
以表的主键字段为依据,按照一定策略(取模,hash等),将本来在一个表中的数据拆分到多个表中。
拆分的表的结构都一样;
拆分的表数据都不一样,没有交集;
拆分的所有表的所有数据并集才是全量数据;
- 垂直分库
以表为单位依据,按照业务归属不同,将不同业务的表拆分到不同的库中。
每个库的结构都不一样;
每个库的数据也不一样,没有交集;
所有库的数据的并集才是全量数据;
- 垂直分表
以字段为依据,按照字段的使用情况(常用和不常用),将表中字段拆到不同的表,主要分为主表和扩展表。
每个表的结构都不一样;
每个表的数据也不一样,一般来说,主表和扩展表的字段至少有一列交集,一般是主键,用于主表和扩展表关联;
所有表的数据的并集是全量数据;
使用场景(什么时候分库,什么时候分表)
- 分表(为了解决单表数据量大)
数据量大,单表超过 4 、500万条数据,这时就要分表了,将一个表的数据拆分成多个表,控制单表的数据不要超过 200万 条。
- 分库(为了解决数据库每秒并发数大)
并发请求大,当每秒到数据库的请求到达了 2000次的时候,就要分库了,将原本一个库的数据结构拆分到几个库去,控制单个库每秒的请求不超过 1000次。
怎么分库分表
市面上有很多实现分库分表的中间件,目前几乎最火的中间件应该是 mycat
粘上一个 mycat 分库分表的使用说明:
https://blog.csdn.net/weixin_38319645/article/details/81537849
边栏推荐
- 1.雷点:mysql数据库转移到oracle,2.qt5.12.3 连接oracle 12c数据库
- 各种资料汇总-网络
- 1.mysql null 和 in;2.127.0.0.2是啥?
- Summary of various materials - Network
- 1.moveToThread的一个完整实例,2.qt表达式求值
- 06.里氏替换原则(Liskov Substitution Principle,LSP)
- 六度空间
- 05.迪米特原则(Law of Demeter LoD)
- QT的sprintf重写;qt下内容按界面的缩放而缩放(不改变字体大小)
- 【QT源代码复用】QDateTimeEdit的下拉按钮事件响应
猜你喜欢
Data Lake simple record
Uniapp wechat applet map, open in Gaode app, Tencent app, baidu app, apple map app
Over the weekend, I had a dinner with the technology gurus and talked about the "golden nine and silver ten" peak of the software testing industry [the trend of involution has been formed]
NRF24L01 wireless module setting transmit receive mode method
IP, subnet mask, gateway, IPS and IDS
ECSHOP configures wechat payment, and the wechat developer tool prompts "unbound web developer" when wechat payment pops up
Summary 20220121
06. Liskov Substitution Principle (LSP)
[STM32] STM32 SDIO SD card read / write test (I) -- SD card hardware design and software migration
1.QTableWidget的closable,2.pro/build_pass、member,3.QString&&
随机推荐
牛人专栏-博客汇总
Web novice zone
Fortress machine, DMZ area
App mobile terminal test [6] application program (APK) package management and activity
LeetCode 105. 从前序与中序遍历序列构造二叉树
1.QTableWidget插入按钮,灵活删除本行,一列显示行号
消息中间件
Flink学习笔记(四)Flink运行时架构
ECSHOP disable cache and close cache
1.mysql null 和 in;2.127.0.0.2是啥?
连接mysql8.0出现caching-sha2-password问题
LeetCode 2039. 网络空闲的时刻
Unity: 快速定位摄像机Camera
1.QTimer::singleShot如何传参、2.QMetaObject::invokeMethod如何用函数传值
04. interface aggregation principle
01. Open closed principle
ECSHOP configures wechat payment, and the wechat developer tool prompts "unbound web developer" when wechat payment pops up
1.qt 查看源码
App mobile End test [6] application (APK) package Management and Activity
练习7-7 矩阵运算 (20 分)