Sharding-JDBC笔记1

1.分库分表

分库分表就是为了解决由于数据量过大而导致数据库性能降低的问题,将原来独立的数据库拆分成若干数据库组成,将数据大表拆分成若干数据表组成,使得单一数据库、单一数据表的数据量变小,从而达到提升数据库性能的目的。

1.1 垂直分库

在这里插入图片描述按照业务将数据表分布到不同的数据库,从而达到多个服务器共同分摊压力的效果,但是依然没有解决单表数据量过大的问题。
优点:
解决业务层面的耦合,业务清晰能对不同业务的数据进行分级管理、维护、监控、扩展等高并发场景下,垂直分库一定程度的提升IO、数据库连接数、降低单机硬件资源的瓶颈。

1.2 垂直分表

在这里插入图片描述
就是将表中的字段按照使用频次的高低进行划分

原则:

  • 把不常用的字段单独放在一张表;

  • 把text,blob等大字段拆分出来放在附表中;

  • 经常组合查询的列放在一张表中

1.3 水平分库

在这里插入图片描述很容易理解,就是让表中的数据划分到不同的库中

解决了单库大数据,高并发的性能瓶颈。提高了系统的稳定性及可用性

1.4 水平分表

在这里插入图片描述
顾名思义,就是在一个数据库中,将同一个表复制,表的结构相同,按照某种规则存储不同的数据。比如按照id将商品信息写到不同的表中。

2.存在问题

2.1 事务一致性

分库分表不可避免带来事务一致性的问题,因为表和库可能在不同的服务器上

2.2 跨节点关联查询

原来的一张表可能分布在不同的数据库,不同的表也可能涉及到关联查询等

2.3 跨节点分页、排序函数

比如limit分页、order by排序等问题。

2.4 主键避重

数据库不能采用自增主键,要采用分布式id,保证全局唯一

2.5 公共表

实际的应用场景中,参数表、数据字典表等都是数据量较小,变动少,而且属于高频联合查询的依赖表。例子中地理区域表也属于此类型。可以将这类表在每个数据库都保存一份,所有对公共表的更新操作都同时发送到所有分库执行。

相关推荐

  1. spring-boot 2.7.18整合sharding-jdbc-spring-boot-starter 4.1.1

    2024-04-21 05:08:02       25 阅读
  2. Sharding-JDBC如何实现读写分离

    2024-04-21 05:08:02       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-21 05:08:02       70 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-21 05:08:02       74 阅读
  3. 在Django里面运行非项目文件

    2024-04-21 05:08:02       62 阅读
  4. Python语言-面向对象

    2024-04-21 05:08:02       72 阅读

热门阅读

  1. XiaodiSec day011 Learn Note 小迪渗透学习笔记

    2024-04-21 05:08:02       34 阅读
  2. ChatGPT引领:打造独具魅力的论文

    2024-04-21 05:08:02       41 阅读
  3. MySQL怎么排查慢sql语句,排查后一般怎么优化

    2024-04-21 05:08:02       32 阅读
  4. 24五一杯正在准备中

    2024-04-21 05:08:02       28 阅读
  5. (自学用)传统反演思路

    2024-04-21 05:08:02       32 阅读
  6. Docker安装SQL Server 2022

    2024-04-21 05:08:02       36 阅读
  7. Docker 常用命令教程

    2024-04-21 05:08:02       36 阅读