分库分表知识总结(二)之垂直分表

简介: 分库分表知识总结(二)之垂直分表

垂直分表

用户在浏览商品列表时,只有对某商品感兴趣时才会查看该商品的详细描述。因此,商品信息中商品描述字段访问频次较低,且该字段存储占用空间较大,访问单个数据IO时间较长;商品信息中商品名称、商品图片、商品价格等其他字段数据访问频次较高

由于这两种数据的特性不一样,因此考虑将商品信息表拆分

定义:

将一个表按照字段分成多表,每个表存储其中一部分字段

它带来的提升:
  • 为了避免 IO 争抢并减少锁表的几率,查看详情的用户与商品信息浏览互不影响
  • 充分发挥热门数据的操作效率,商品信息的操作的高效率不会被商品描述的低效率所拖累
执行原则:
  • 把不常用的字段单独放在一张表
  • textblob等大字段拆分出来放在附表中
  • 经常组合查询的列放在一张表中

垂直分库

通过垂直分表性能得到了一定程度的提升,但是还没有达到要求,并且磁盘空间也快不够了,因为数据还是始终限制在一台服务器,库内垂直分表只解决了单一表数据量过大的问题,但没有将表分布到不同的服务器上,因此每个表还是竞争同一个物理机的CPU、内存、网络IO、磁盘。

概念:

按照业务将表进行分类,分布到不同的数据库上面,每个库可以放在不同的服务器上,它的核心理念是专库专用

它带来的提升:
  • 解决业务层面的耦合,业务清晰
  • 能对不同业务的数据进行分级管理、维护、监控、扩展等
  • 高并发场景下,垂直分库一定程度的提升IO、数据库连接数、降低单机硬件资源的瓶颈
弊端:

垂直分库通过将表按业务分类,然后分布在不同数据库,并且可以将这些数据库部署在不同服务器上,从而达到多个服务器共同分摊压力的效果,但是依然没有解决单表数据量过大的问题。

目录
相关文章
|
消息中间件 存储 Java
kafka零拷贝
kafka零拷贝
513 0
|
8月前
|
NoSQL Java 网络安全
SpringBoot启动时连接Redis报错:ERR This instance has cluster support disabled - 如何解决?
通过以上步骤一般可以解决由于配置不匹配造成的连接错误。在调试问题时,一定要确保服务端和客户端的Redis配置保持同步一致。这能够确保SpringBoot应用顺利连接到正确配置的Redis服务,无论是单机模式还是集群模式。
393 12
|
消息中间件 canal Java
如何保证Canal+MQ同步消息的顺序性?
如何保证Canal+MQ同步消息的顺序性?
|
数据库
ArrayList的contains()方法的性能问题及优化方法
ArrayList的contains()方法的性能问题及优化方法
541 0
|
Java 机器人 程序员
从入门到精通:五种 List 遍历方法对比与实战指南
小米是一位热爱分享技术的程序员,本文详细介绍了 Java 中遍历 List 的五种方式:经典 for 循环、增强 for 循环、Iterator 和 ListIterator、Stream API 以及 forEach 方法。每种方式都有其适用场景和优缺点,例如 for 循环适合频繁访问索引,增强 for 循环和 forEach 方法代码简洁,Stream API 适合大数据量操作,ListIterator 支持双向遍历。文章通过生动的小故事和代码示例,帮助读者更好地理解和选择合适的遍历方式。
856 2
|
存储 关系型数据库 MySQL
MySQL的垂直分库分表
MySQL的垂直分库分表
484 0
|
关系型数据库 MySQL 数据库
TDSQL技术详解
一个基本的TDSQL实例的创建和操作流程。对于更高级的特性和最佳实践
1467 0
TDSQL技术详解
|
JavaScript Linux
【详细讲解】Linux grep命令用法大全 片尾有示例搜索指定目录中指定文件后缀的指定字符
【详细讲解】Linux grep命令用法大全 片尾有示例搜索指定目录中指定文件后缀的指定字符
1015 1
|
canal 关系型数据库 MySQL
"揭秘阿里数据同步黑科技Canal:从原理到实战,手把手教你玩转MySQL数据秒级同步,让你的数据处理能力瞬间飙升,成为技术界的新晋网红!"
【8月更文挑战第18天】Canal是一款由阿里巴巴开源的高性能数据同步系统,它通过解析MySQL的增量日志(Binlog),提供低延迟、可靠的数据订阅和消费功能。Canal模拟MySQL Slave与Master间的交互协议来接收并解析Binary Log,支持数据的增量同步。配置简单直观,包括Server和Instance两层配置。在实战中,Canal可用于数据库镜像、实时备份等多种场景,通过集成Canal Client可实现数据的消费和处理,如更新缓存或写入消息队列。
2051 0