如何对数据库进行垂直拆分或水平拆分?

news2024/10/5 10:24:26

水平拆分的意思,就是把一个表的数据给弄到多个库的多个表里去,但是每个库的表结构都一 样,只不过每个库表放的数据是不同的,所有库表的数据加起来就是全部数据。水平拆分的意 义,就是将数据均匀放更多的库里,然后用多个库来扛更高的并发,还有就是用多个库的存储 容量来进行扩容。

垂直拆分的意思,就是把一个有很多字段的表给拆分成多个表,或者是多个库上去。每个 库表的结构都不一样,每个库表都包含部分字段。一般来说,会将较少的访问频率很高的字 段放到一个表里去,然后将较多的访问频率很低的字段放到另外一个表里去。因为数据库 是有缓存的,你访问频率高的行字段越少,就可以在缓存里缓存更多的行,性能就越好。这个 一般在表层面做的较多一些。

 

这个其实挺常见的,不一定我说,大家很多同学可能自己都做过,把一个大表拆开,订单表、 订单支付表、订单商品表。

还有表层面的拆分,就是分表,将一个表变成 N 个表,就是让每个表的数据量控制在一定范 围内,保证 SQL 的性能。否则单表数据量越大,SQL 性能就越差。一般是 200 万行左右,不要 太多,但是也得看具体你怎么操作,也可能是 500 万,或者是 100 万。你的SQL越复杂,就最 好让单表行数越少。

好了,无论分库还是分表,上面说的那些数据库中间件都是可以支持的。就是基本上那些中间 件可以做到你分库分表之后,中间件可以根据你指定的某个字段值,比如说 userid,自动路 由到对应的库上去,然后再自动路由到对应的表里去

你就得考虑一下,你的项目里该如何分库分表?一般来说,垂直拆分,你可以在表层面来做, 对一些字段特别多的表做一下拆分;水平拆分,你可以说是并发承载不了,或者是数据量太 大,容量承载不了,你给拆了,按什么字段来拆,你自己想好;分表,你考虑一下,你如果哪 怕是拆到每个库里去,并发和容量都 ok 了,但是每个库的表还是太大了,那么你就分表,将 这个表分开,保证每个表的数据量并不是很大。 

有两种分库分表的方式:

  • 一种是按照 range 来分,就是每个库一段连续的数据,这个一般是按比如时间范围来的, 但是这种一般较少用,因为很容易产生热点问题,大量的流量都打在最新的数据上了。
  • 或者是按照某个字段 hash 一下均匀分散,这个较为常用。

range 来分,好处在于说,扩容的时候很简单,因为你只要预备好,给每个月都准备一个库就 可以了,到了一个新的月份的时候,自然而然,就会写新的库了;缺点,但是大部分的请求, 都是访问最新的数据。实际生产用 range,要看场景。

hash 分发,好处在于说,可以平均分配每个库的数据量和请求压力;坏处在于说扩容起来比较 麻烦,会有一个数据迁移的过程,之前的数据需要重新计算 hash 值重新分配到不同的库或表。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/699253.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高性能计算培训机构哪些好?培训机构排行推荐!

目前市面上高性能计算培训不多,尤其是专业做高性能计算培训的机构更是不多。 比较好的高性能计算培训有北大未名超算队、各类超算中心的高性能计算培训视频、以及猿代码科技的系统实战化的高性能计算培训课程,这些在B站上均有不错的播放量,群…

【Go语言从入门到精通系列-基础篇】Go语言变量、常量和运算符:完全指南

系列文章目录 【Go语言从入门到精通系列-基础篇】Go安装 语言特性,以及开启你人生中的第一个go程序 【Go语言从入门到精通系列-基础篇】Go语言包的管理以及基础语法与使用。 Go语言从入门到精通系列-基础篇 系列文章目录前言一、变量和常量的基本概念1. 变量1.1 变…

赶赴一场夏日盛宴丨千岛湖夏季团建旅行攻略

千岛湖的秀丽景色让人惊艳,也是江浙沪地区热门的团建目的地之一; 千岛湖 千岛湖团建元素:【千岛湖风景区】【山顶观景台】【皮划艇】【环湖骑行】【卡丁车】【高空闯关】【篝火晚会】【湖畔烧烤】【高空跳伞】 【千岛湖山顶观景台】 站在湖畔…

如何用快改图工具指定压缩图片大小

我们在遇到好看的图片或自己拍的照片,都会对其进行一些处理,处理完成后将其保存,保存时发现自己要存的图片太多了,比较占内容。这种情况就需要压缩。那么,在压缩图片时,怎么压缩图片到指定大小呢&#xff1…

【ES三周年】| 基于国产化操作系统搭建ELK日志分析平台

引入 鲲鹏认证-Kylin麒麟操作系统-ELK日志分析平台 开篇 何为ELK Stack?它又能够给我们带来什么? 综述 ELK为三个开源项目的首字母缩写,分别对应是:Elasticsearch、Logstash、Kibana,由这三个软件及其相关的组件可…

threejs 入门 (vite + vue3)

threejs threejs用于实现3D效果 vite创建vuejs项目 npm create vite选择vue 和js创建vue3项目 安装threejs npm install three运行项目 cd project npm i npm run dev修改App.vue 创建一个场景和立方体&#xff08;Creating a scene&#xff09; <script setup> …

labview 波形图表(waveform Chart)

波形图表&#xff08;waveform Chart&#xff09;是显示一条或多条曲线的特殊数值控件&#xff0c; 一般用于显示以恒定速率采集的数据。 波形图表会在缓冲区保留历史数据并在历史数据后添加新数据。 波形图表的默认数据缓冲区大小为1024个数据点。 &#xff08;右击波形图…

BurpSuite使用教程·代理抓包篇

BurpSuite使用教程代理抓包篇 1.Burp Suite代理和浏览器设置2.数据拦截与控制3.可选项配置4.Proxy监听设置1.Burp Suite代理和浏览器设置 Burp Suite代理工具是以拦截代理的方式,拦截所有通过代理的网络流量,如客户端的请求数据、服务器端的返回信息等。Burp Suite主要拦截h…

Mybatis源码分析_事务管理器 (5)

今天我们首先学习2个设计模式。工厂设计模式 和 模板设计模式 工厂方法模式&#xff1a; 定义一个用于创建对象的接口&#xff0c;让子类决定实例化哪一个类。工厂方法使一个类实例化延迟到子类。 上图的图很清晰&#xff1a;业务接口有很多实现类&#xff0c;而工厂接口也有还…

保姆级自动化测试教程(Selenium+java)

文章目录 自动化测试1. 自动化测试介绍2. Selenium介绍与环境搭建2.1 介绍2.2 Selenium原理2.3 SeleniumJava环境搭建 3. webdriver API3.1 元素的定位3.2 操作测试对象3.3 添加等待3.4 打印信息3.5 浏览器操作3.6 键盘事件3.7 鼠标事件3.9 特殊使用3.10 浏览器关闭3.11 切换窗…

让你不再好奇ai绘画生成器有哪些

绘画爱好者李明最近遇到了一个难题&#xff1a;他需要在短时间内完成一幅复杂的数字油画作品&#xff0c;但是他的手绘技能仍然不够熟练。于是&#xff0c;他想到了借助一些ai绘画软件来帮助他进行绘画创作。那么&#xff0c;你知道ai智能绘画软件有哪些吗&#xff1f;接下来我…

Vue中使用ElementUItable表格显示图片问题

1.问题 说明&#xff1a;table表格显示不了图片问题 品牌logo中显示的是url地址&#xff0c;因此我们要使用作用域插槽。 <template slot scope"{row,$index}"> </template> 说明&#xff1a;使用Vue的插槽功能&#xff0c;允许在当前列的内容上添加…

git暂存功能(只需要两步)

使用场景 我在写一个功能的时候发现一个bug&#xff0c;但是这个bug在我上一次提交的时候好像是没有的&#xff0c;所有我需要把当前的代码暂存,然后查看上一次提交是否正常。 一、暂存 暂存当前所有的修改 git stash二、恢复 恢复最近一次暂存&#xff0c;并把暂存删掉 …

获阿布扎比政府11亿美元投资将使蔚来改变电动汽车行业游戏规则?

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 总结 &#xff08;1&#xff09;6月20日&#xff0c;蔚来宣布与阿布扎比政府控股的投资公司CYVN Holdings签订了股份认购协议&#xff0c;蔚来将获得CYVN Holdings11亿美元的战略投资&#xff0c;这可能会导致蔚来在阿布扎…

从零开始 Spring Boot 50:Entity Lifecyle Event

从零开始 Spring Boot 50&#xff1a;Entity Lifecyle Event 图源&#xff1a;简书 (jianshu.com) 在上篇文章&#xff0c;我介绍了 Hibernate 中的实体生命周期以及可以转换实体状态的 Session API。就像 Spring Bean 的生命周期拥有一些事件&#xff0c;通过监听这些事件我们…

C# 中【委托】的简单理解

先不说 C# 中的委托编程&#xff0c;先从生活中的例子入手。 场景一&#xff1a; 防疫期间&#xff0c;外卖人员不能进入花园小区。外卖小哥到了花园小区门口&#xff0c;只好【委托】花园的保安人员&#xff0c;把东西送上楼去。 场景二&#xff1a; 有资格的人&#xff0c;都…

慢谈漫威--来龙去脉

慢谈漫威 背景介绍一、抛开电影看漫威相关公司背景、关系二、漫威宇宙和索尼漫威宇宙三、 漫威宇宙四、话外--美国6大影视公司 背景介绍 最近在看一部漫威电影&#xff0c;可能是年纪大了&#xff0c;看美国英雄大片以及系列电影提不起兴趣&#xff0c;各种人物背景关系也不清…

途乐证券|光伏概念发力上扬,好利科技涨停,隆基绿能等拉升

光伏概念28日盘中发力上扬&#xff0c;截至发稿&#xff0c;露笑科技、好利科技、宁波能源等涨停&#xff0c;中国动力、欧晶科技、聚合材料、鹿山新材等涨超5%&#xff0c;帝科股份、隆基绿能、福斯特等涨超3%。 露笑科技昨日晚间披露的半年度业绩预告&#xff0c;预计上半年归…

ST - 如何下载带有.ioc的官方工程

文章目录 ST - 如何下载带有.ioc的官方工程概述下载带有.ioc文件的官方工程的方法备注END ST - 如何下载带有.ioc的官方工程 概述 有些CubeMX的官方工程, 自己复现不出来. 但是官方工程是好使的. 这是, 可能差别就在工程配置上. 如果仅仅靠BC4比对官方工程和自己重建的工程, …

简单指令实现Docker构建镜像启动运行保存导出后再导入新环境完整全流程

项目场景及问题描述 本文做一个简单Docker使用指令指南&#xff0c;可快速实现Docker构建镜像、启动、运行、保存、导出后再导入新环境完整全流程。具体每一个指令又有很多参数和学问&#xff0c;大家可自行查询更详细的解释&#xff0c;本文可用于小白快速构建镜像并使用。 使…