垂直分表和垂直分库

简介: 垂直分表和垂直分库

公众号merlinsea


  • 垂直分表
  • 需求:商品表字段太多,每个字段访问频次不⼀样,浪费了IO资源,需要进⾏优化。
  • 垂直分表介绍
  • 也就是“⼤表拆⼩表”,基于列字段进⾏的。拆分原则⼀般是表中的字段较多,将不常⽤的或者数据较⼤,⻓度较⻓的拆分到“扩展表 如text类 型字段。访问频次低、字段⼤的商品描述信息单独存放在⼀张表中,访问频次较⾼的商品基本信息单独放在⼀张表中。

  • 垂直拆分原则
  • 把不常⽤的字段单独放在⼀张表;
  • 把text,blog等⼤字段拆分出来放在附表中;
  • 业务经常组合查询的列放在⼀张表中;
  • 案例分析
  • 商品的搜索列表需要展示的信息包括图片,价格,标题,评价数量,店铺名称等信息。


640.jpg

当用户点击某个商品的时候就会出现商品的详情信息,包括商品的各个细节属性

640.jpg


  • 垂直分库
  • 需求:C端项⽬⾥⾯,单个数据库的CPU、内存⻓期处于90%+的利⽤率,数据库连接经常不够,需要进⾏优化
  • 垂直分库介绍
  • 垂直分库针对的是⼀个系统中的不同业务进⾏拆分, 数据库的连接资源⽐较宝贵且单机处理能⼒也有限。
  • 没拆分之前全部都是落到单⼀的库上的,单库处理能⼒成为瓶颈,还有磁盘空间,内存,tps等限制。
  • 拆分之后,避免不同库竞争同⼀个物理机的CPU、内存、⽹络IO、磁盘,所以在⾼并发场景下,垂直分库⼀定程度上能够突破IO、连接数及 单机硬件资源的瓶颈。
  • 垂直分库可以更好解决业务层⾯的耦合,业务清晰,且⽅便管理和维护。
  • ⼀般从单体项⽬升级改造为微服务项⽬,就是垂直分库,即按照不同的领域进行划分自己的数据库。

640.jpg


注意点:垂直分库不是每个数据库部署在同一台物理机上,垂直分库需要将每一个业务领域的数据库单独部署在一台物理机上,这样才能真正的提高并发量。垂直分库分表都是基于业务领域来进行划分,但仍旧存在单个业务领域数据量过大导致单表查询性能过慢的问题。


关于leetcode算法训练营:

  •  加我微信号私聊参加训练营,尤其是想进入大厂工作的同学,算法是绕不过去的坎,我自己花了三年时间刷算法,总结思路,刷各种数据结构课程,加入我的训练营,我手把手以在线直播课的形式带你理思路,手把手带你写代码,让你真正体会算法之美~,同时遇到不明白的地方可以直接课上和我沟通,彻底解决你的代码困难证~

本人用c++刷了800道左右的算法,java语言刷了600道左右的算法题,并对这些题做了详细的个人总结。本科期间系统学习了数据结构与算法课程,同时考研过程中写完了率辉主编的《2020年数据结构高分笔记》和《数据结构1000题》,看完的视频包括《mooc浙大数据结构国家精品课程》和《王道考研408数据结构课程》,《王道2019年算法题讲解视频》,最终以初试专业第三名进入了北理工软件工程专业。熟悉并掌握常见的数据结构,比如链表、数组、树、图、队列、堆栈等等,精通数据结构教材中的所有算法,比如常见的遍历算法、动态规划,递归,回溯,剪枝,并查集,最短路径,拓扑排序等,所以快加入训练营吧,我们一起进步

奔跑的小梁,公众号:梁霖编程工具库我决定了,算法文档开源!!
相关文章
|
2月前
|
存储 大数据 数据库
分库分表知识总结(三)之水平分表
分库分表知识总结(三)之水平分表
56 0
|
2月前
|
存储 监控 数据库
分库分表知识总结(二)之垂直分表
分库分表知识总结(二)之垂直分表
58 1
|
12月前
|
存储 缓存 数据库
什么是垂直分表、垂直分库、水平分表、水平分库?
什么是垂直分表、垂直分库、水平分表、水平分库?
120 0
|
12月前
|
SQL 算法 Java
水平分库和水平分表
水平分库和水平分表
|
12月前
|
算法 Java 程序员
水平分库分表的策略
水平分库分表的策略
|
存储 数据处理 数据库
分表方案有哪些
分表方案有哪些
91 0
|
监控 数据库
垂直分库
垂直分库
72 0
垂直分库
|
缓存 数据库 索引
水平分表
水平分表
110 0
水平分表
|
存储 大数据 数据库
水平分库
水平分库
97 0
水平分库
|
存储 SQL 缓存
关于垂直分库,垂直分表,水平分库,水平分表
关于垂直分库,垂直分表,水平分库,水平分表
148 0
关于垂直分库,垂直分表,水平分库,水平分表

热门文章

最新文章

  • 1
    流量控制系统,用正则表达式提取汉字
    27
  • 2
    Redis09-----List类型,有序,元素可以重复,插入和删除快,查询速度一般,一般保存一些有顺序的数据,如朋友圈点赞列表,评论列表等,LPUSH user 1 2 3可以一个一个推
    27
  • 3
    Redis08命令-Hash类型,也叫散列,其中value是一个无序字典,类似于java的HashMap结构,Hash结构可以将对象中的每个字段独立存储,可以针对每字段做CRUD
    27
  • 4
    Redis07命令-String类型字符串,不管是哪种格式,底层都是字节数组形式存储的,最大空间不超过512m,SET添加,MSET批量添加,INCRBY age 2可以,MSET,INCRSETEX
    28
  • 5
    S外部函数可以访问函数内部的变量的闭包-闭包最简单的用不了,闭包是内层函数+外层函数的变量,简称为函数套函数,外部函数可以访问函数内部的变量,存在函数套函数
    25
  • 6
    Redis06-Redis常用的命令,模糊的搜索查询往往会对服务器产生很大的压力,MSET k1 v1 k2 v2 k3 v3 添加,DEL是删除的意思,EXISTS age 可以用来查询是否有存在1
    31
  • 7
    Redis05数据结构介绍,数据结构介绍,官方网站中看到
    22
  • 8
    JS字符串数据类型转换,字符串如何转成变量,+号只要有一个是字符串,就会把另外一个转成字符串,- * / 都会把数据转成数字类型,数字型控制台是蓝色,字符型控制台是黑色,
    20
  • 9
    JS数组操作---删除,arr.pop()方法从数组中删除最后一个元素,并返回该元素的值,arr.shift() 删除第一个值,arr.splice()方法,删除指定元素,arr.splice,从第一
    21
  • 10
    定义好变量,${age}模版字符串,对象可以放null,检验数据类型console.log(typeof str)
    20