之前经常被问道这些分库分表的概念,只是大概知道,但是具体如何定义的,问什么这么定义还是不太理解,今天对着数据表中的数据沉思的时候,突然间醒悟,原来这些概念非常好理解,而且可以说水平和垂直这两个词用得恰到好处,非常形象地帮助我们理解它们。

水平分表

顾名思义,水平分表就是把表中的数据进行了水平切割,意味着按照行进行切割,也就是说不同行的数据被切割后可能在不同的表中。

如图所示,根据水平切割之后,id为1和2的数据行会在一个表中,id为3,4的数据行会在一个表中,而id为5的数据会在一个表中,这就是水平分表。

垂直分表

也是一样,它的意思是把数据表进行了垂直分割,原来表中的列被分到了不同的表中。

如图所示,desc字段被切割后,会分配到另一张表中。 那么为什么要垂直分表,或者说什么情况下适合垂直分表? 答案就是垂直分表的目的就是将表中的含有大量数据的字段,比如text字段,blob字段从表中分离出去,这样可以大大减轻原表的数据压力,而且这些字段的访问量没有其它字段的访问频率高,所以这么处理是合适的。

水平分库

如果你理解了上面的水平分表和垂直分表,那么数据库的分割你也会很好理解。 顾名思义,水平分库相当于把数据库水平切割,原来一个表中的数据可能会分配到不同的数据库中,这就是水平分库。

如图所示,table1,table2,table3,table4中的数据都会被水平切割一刀,这样一个表中的数据可能就会被分配到不同的数据库中。

垂直分库

垂直分库,就是将数据库垂直分割,这回一个表中的数据不会被分配到不同数据库,但是不同表可能会分配到不同的数据库。

如图所示,经过垂直分割table1,table2会分到一个数据库db1,而table3,table4会分配到另一个数据库db2。

什么时候垂直分库呢?答案是根据业务逻辑进行分割。比如我们可以把用户表和用户相关的表分配到用户数据库中,而把商品表和商品相关的数据分配到商品数据库中。

总结

总之,无论是何种分割,我们的目的都是为了减少数据库的压力,然后尽可能减少查询带来的复杂性,只要掌握这两个核心,其实概念都是次要的,原理才是重要的。

mysql垂直分库_mysql垂直分库,水平分库,垂直分表,水平分表相关推荐

  1. 彻底搞清分库分表(垂直分库,垂直分表,水平分库,水平分表)

    分库分表是什么 下边以电商系统中的例子来说明,下图是电商系统卖家模块的表结构: 通过以下SQL能够获取到商品相关的店铺信息.地理区域信息: SELECT p.*,r.[地理区域名称],s.[店铺名称] ...

  2. mycat的主从关系 垂直分库 水平分表 以及mycat分片联表查询的配置详解(mysql5.7系列)

    主从关系 准备三台不同ip的虚拟机 (第一批)主从关系的配置 主192.168.47.131 配置/etc/my.cnf,在[mysqld]下配置 log-error=/var/log/mysqld. ...

  3. 数据库--分库分表--垂直分表与水平分表

    原文网址:数据库--分库分表--垂直分表与水平分表_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍数据库的分库分表的方案:垂直分表与水平分表. 关系型数据库本身比较容易成为系统瓶颈,单机存储容 ...

  4. 水平分表、分库和垂直分表、分库和公共表的代码实现和讲解

    文章目录 一.教学讲解视频 二.环境准备 三.水平分表 1.概念 2.代码 四.水平分库 1.概念 2.代码 五.垂直分表 1.概念 2.代码 六.垂直分库 1.概念 2.代码 七.公共表 1.概念 ...

  5. Sharding-Sphere,Sharding-JDBC_分库分表(水平分库_水平分表)_Sharding-Sphere,Sharding-JDBC分布式_分库分表工作笔记004

    然后我们前面说了垂直分库,分表,我们要了解什么是垂直分库分表 1.垂直分表,就是比如,我们有个课程的表,但是我们数据量太大的话,我们把这个课程表,可以分成 课程基本信息表,课程描述表,这两个表,这样的 ...

  6. 使用sharding-jdbc实现水平分库+水平分表

    前面的文章使用sharding-jdbc实现水平分表中详细记录了如何使用sharding-jdbc实现水平分表,即根据相应的策略,将一部分数据存入到表1中,一部分数据存入到表2中,逻辑上为同一张表,分 ...

  7. mysql 垂直分表 设计_水平分表和垂直分表

    一.数据库瓶颈 不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值.在业务Service来看就是,可用数据库连接少甚至无连接可用.接下来就 ...

  8. Mysql 数据库水平分表 存储过程

    数据库存储量达到一定程度的时候,就需要进行分表以减轻检索的消耗. 常用的分表方式包括水平和垂直分表.本次进行的是按照uid进行水平分表. ##分表思路: 水平分表平均的将数据按照特定方式分配到多个表中 ...

  9. MYSQL实现水平分表

    mysql水平分表 本人主要以Navicat实现,具体想要高端点,可以用Sharing JDBC.Mycat去实现 水平分表 mysql水平分表 分库分表原理是什么? 为什么要分库分表? 二.水平分表 ...

  10. TDSQL MySQL版基本原理-水平分表 读写分离 弹性扩展 强同步

    TDSQL MySQL版(TDSQL for MySQL)是部署在腾讯云上的一种支持自动水平拆分.Shared Nothing 架构的分布式数据库.TDSQL MySQL版 即业务获取的是完整的逻辑库 ...

最新文章

  1. OpenGLES 关于 数学 的分支 - 线性变化量、离散量、随机量
  2. Contest Hunter CH6201 走廊泼水节 最小生成树 Kruskal
  3. 怎么组建战队_硬管加油技术在上世纪就诞生了,为何只有美国在用,我们怎么不用?...
  4. 如何将自开发的SAP UI5应用以tile的方式配置到SAP Fiori Launchpad里
  5. EasyUI之Tree树形结构(一)
  6. linux内核对TCP的连接状态管理
  7. 关于uboot中tftp上传内存数据到tftp服务器
  8. istio sidecar流量接管_Istio是个啥?看完此文彻底搞懂(赠书)
  9. mysql sycho_2005年12月23日
  10. Pyinstller打包的exe文件反编译
  11. Python分组百分比排名
  12. C语言Matrix编程题——[Recursion]D. Liang 8.2 Fibonacci number
  13. word自定义多级编号列表
  14. 微带线电容设计与仿真
  15. AOP技术介绍--(AOP技术基础)
  16. LoadRunner11的安装、破解以及基本使用
  17. (二)弹性布局Flex
  18. JAVA日志记录方法
  19. 石河子大学师生为荣获2018年“马云乡村教师奖”校友点赞
  20. Mysql常用类型和字段属性

热门文章

  1. Spring Aop 源码笔记和源码阅读个人技巧分享
  2. aspf ftp_【解析】文件传输协议:FTP、TFTP、SFTP有什么区别?
  3. mybatis使用详解
  4. JVM初识之内存分析常用命令和工具
  5. 冒泡排序(C#)实现
  6. SpringAOP原理解析
  7. KDD China技术峰会回顾:大牛云集,教你如何基于大数据 手握人工智能未来
  8. 《云数据中心构建实战:核心技术、运维管理、安全与高可用》——2.4 云计算的发展历程与未来趋势...
  9. Oracle等待事件之Enqueue(锁)
  10. HTML5 History API让ajax能回退到上一页