mysql垂直分库,水平分库,垂直分表,水平分表
之前经常被问道这些分库分表的概念,只是大概知道,但是具体如何定义的,为什么这么定义还是不太理解,今天对着数据表中的数据沉思的时候,突然间醒悟,原来这些概念非常好理解,而且可以说水平和垂直这两个词用得恰到好处,非常形象地帮助我们理解它们。
水平分表
顾名思义,水平分表就是把表中的数据进行了水平切割,意味着按照行进行切割,也就是说不同行的数据被切割后可能在不同的表中。
如图所示,根据水平切割之后,id为1和2的数据行会在一个表中,id为3,4的数据行会在一个表中,而id为5的数据会在一个表中,这就是水平分表。
垂直分表
也是一样,它的意思是把数据表进行了垂直分割,原来表中的列被分到了不同的表中。
如图所示,desc字段被切割后,会分配到另一张表中。那么为什么要垂直分表,或者说什么情况下适合垂直分表?答案就是垂直分表的目的就是将表中的含有大量数据的字段,比如text字段,blob字段从表中分离出去,这样可以大大减轻原表的数据压力,而且这些字段的访问量没有其它字段的访问频率高,所以这么处理是合适的。
水平分库
如果你理解了上面的水平分表和垂直分表,那么数据库的分割你也会很好理解。顾名思义,水平分库相当于把数据库水平切割,原来一个表中的数据可能会分配到不同的数据库中,这就是水平分库。
如图所示,table1,table2,table3,table4中的数据都会被水平切割一刀,这样一个表中的数据可能就会被分配到不同的数据库中。
垂直分库
垂直分库,就是将数据库垂直分割,这回一个表中的数据不会被分配到不同数据库,但是不同表可能会分配到不同的数据库。
如图所示,经过垂直分割table1,table2会分到一个数据库db1,而table3,table4会分配到另一个数据库db2。
什么时候垂直分库呢?答案是根据业务逻辑进行分割。比如我们可以把用户表和用户相关的表分配到用户数据库中,而把商品表和商品相关的数据分配到商品数据库中。
总结
总之,无论是何种分割,我们的目的都是为了减少数据库的压力,然后尽可能减少查询带来的复杂性,只要掌握这两个核心,其实概念都是次要的,原理才是重要的。
相关文章
- 【MySQL高级】MySql中常用工具及Mysql 日志
- MySQL分表:实现快速、高效的数据管理(mysql分表工具)
- MySQL开源监控:构建全方位性能保障(mysql开源监控工具)
- MySQL视图:简单方便的数据访问方式(mysql视图)
- 操作MySQL中分表操作技巧(mysql分表)
- 分表MySQL分库分表实现可靠性提升(mysql分库)
- MySQL自动分表的优势及实现策略(mysql自动分表)
- MySQL分库分表查询:优化数据库性能的有效方案(mysql分库分表查询)
- MySQL分表备份: 保障数据安全(mysql分表备份)
- 如何解决 MySQL 导入时的大小限制?(mysql导入大小限制)
- 平衡妙用MySQL主主负载平衡实现优化(mysql主主负载)
- MySQL 数据库中文乱码问题的解决方法(mysql数据中文乱码)
- 实现更高效的MySQL数据库操作——以PHP为主的连接池(php mysql连接池)
- MySQL中C语言使用占位符的体会(c mysql 占位符)
- 使用MYSQL实现对两个表的数据修改(mysql两表修改数据)
- Asp如何与MySQL建立连接(asp能链接mysql吗)
- 32位MySQL安装指南轻松获取稳定的数据库管理(32位mysql下载教程)
- 分库分表1347年MySQL神奇的分库分表技术(1347 mysql)
- MySQL分表分库优化实践实现高效数据管理(mysql中分表分库场景)
- 深入了解MySQL的三大存储引擎读法(mysql三大引擎怎么读)
- 无需停机,轻松实现MySQL分表技术(mysql 不停机分表)
- MySQL实现无代码更改自动分表(mysql不修改代码分表)
- Mysql 数据库丢失别慌来了解一下 MySQL 不见的可能原因及解决办法(mysql不见)
- MySQL分表垂直水平和组合的三种分表方案(mysql三种分表)