首页 > 其他分享 >用户分库分表

用户分库分表

时间:2024-10-19 08:48:10浏览次数:3  
标签:分库 数据库 DB 用户 分片 分表

用户分库分表

为什么要分库分表?
●数据量庞大。
●查询性能缓慢,之前可能是 20ms,后续随着数据量的增长,查询时间呈指数增长。
●数据库连接不够。
什么是分库分表?
分库和分表有两种模式,垂直和水平。
分库两种模式:
●垂直分库:电商数据库拆分为用户、订单、商品、交易等数据库。

订单,商品,购物车,交易,用

购物车DB

交易DB

用户DB

订单DB

电商DB

ACTOR

image.png


●水平分库:用户数据库,拆分为多个,比如User_DB_0 - x。

用户DB_3

用户DB2

用户DB_1

用户DB_O

用户DB

ACTOR

image.png


分表两种模式:
●垂直分表:将数据库表按照业务维度进行拆分,将不常用的信息放到一个扩展表。

用户信息:姓名,年龄,家庭住址

用户扩展

用户主表

用户表

ACTOR

image.png


●水平分表:将用户表水平拆分,展现形式就是 User_Table_0 - x。

用户_1

用户_2

用户_X

用户表

ACTOR

image.png


什么场景下分库分表?
1什么场景下分表?
数据量过大或者数据库表对应的磁盘文件过大。
Q:多少数据分表?
2什么情况下分库?
连接不够用。
MySQL Server 假设支持 4000 个数据库连接。一个服务连接池最大 10 个,假设有 40 个节点。已经占用了 400 个数据库连接。
类似于这种服务,有10个,那你这个 MySQL Server 连接就不够了。
3又分库又分表?
高并发写入或查询场景。
数据量巨大场景。
数据库分库分表框架 ShardingSphere
Sharding-JDBC。
分片键
用于将数据库(表)水平拆分的数据库字段。
分库分表中的分片键(Sharding Key)是一个关键决策,它直接影响了分库分表的性能和可扩展性。以下是一些选择分片键的关键因素:
1访问频率:选择分片键应考虑数据的访问频率。将经常访问的数据放在同一个分片上,可以提高查询性能和降低跨分片查询的开销。
2数据均匀性:分片键应该保证数据的均匀分布在各个分片上,避免出现热点数据集中在某个分片上的情况。
3数据不可变:一旦选择了分片键,它应该是不可变的,不能随着业务的变化而频繁修改。
用户名和用户ID选哪个作为分片键?
●用户名。用户名可以登录。
引入 ShardingSphere-JDBC到项目
1引入依赖
2定义分片规则

YAML复制代码

1

2

3

4

5

6

spring:

datasource:

# ShardingSphere 对 Driver 自定义,实现分库分表等隐藏逻辑

driver-class-name: org.apache.shardingsphere.driver.ShardingSphereDriver

# ShardingSphere 配置文件路径

url: jdbc:shardingsphere:classpath:shardingsphere-config.yaml


shardingsphere-config.yaml

YAML复制代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

# 数据源集合

dataSources:

ds_0:

dataSourceClassName: com.zaxxer.hikari.HikariDataSource

driverClassName: com.mysql.cj.jdbc.Driver

jdbcUrl: jdbc:mysql://127.0.0.1:3306/link?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai

username: root

password: root

rules:

- !SHARDING

tables:

t_user:

# 真实数据节点,比如数据库源以及数据库在数据库中真实存在的

actualDataNodes: ds_0.t_user_${0..15}

# 分表策略

tableStrategy:

# 用于单分片键的标准分片场景

standard:

# 分片键

shardingColumn: username

# 分片算法,对应 rules[0].shardingAlgorithms

shardingAlgorithmName: user_table_hash_mod

# 分片算法

shardingAlgorithms:

# 数据表分片算法

user_table_hash_mod:

# 根据分片键 Hash 分片

type: HASH_MOD

# 分片数量

props:

sharding-count: 16

# 展现逻辑 SQL & 真实 SQL

props:

sql-show: true

ShardingSphere 数据分片核心概念
1逻辑表
相同结构的水平拆分数据库(表)的逻辑名称,是 SQL 中表的逻辑标识。
2真实表
在水平拆分的数据库中真实存在的物理表。

标签:分库,数据库,DB,用户,分片,分表
From: https://blog.csdn.net/Darling912/article/details/143066315

相关文章

  • 【Spring】Spring实现加法计算器和用户登录
    加法计算器准备工作创建SpringBoot项目:引入SpringWeb依赖,把前端的页面放入项目中**<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,init......
  • 通义灵码上线一周年:超 600 万下载量,国内用户规模第一,新功能有奖测评
    通义灵码,是基于通义大模型的AI研发辅助工具,包含AI编码助手和AI程序员。其中,AI编码助手为开发者写代码、补代码、写注释、写单测、写代码优化和排查问题,是开发者的编码搭子;AI程序员是一个AI编程智能体,可以模拟软件架构师、开发工程师、测试工程师等多种岗位能力,分钟级自......
  • 通义灵码上线一周年:超 600 万下载量,国内用户规模第一,新功能有奖测评
    通义灵码,是基于通义大模型的AI研发辅助工具,包含AI编码助手和AI程序员。其中,AI编码助手为开发者写代码、补代码、写注释、写单测、写代码优化和排查问题,是开发者的编码搭子;AI程序员是一个AI编程智能体,可以模拟软件架构师、开发工程师、测试工程师等多种岗位能力,分钟级自......
  • ArkWeb智能防跟踪与广告过滤 - 保护用户隐私
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。简介华为鸿蒙HarmonyOSNext系统的Ar......
  • 博客园社区钜惠:阿里云新用户享6.5折上折
    金秋十月,开始做一些阿里云云大使推广业务,增加园子的收入来源。阿里云给了我们很高级别的返佣比例,我们将其中大部分让利给用户,于是就有了现在的6.5折。这个6.5折覆盖阿里云官网可以买到的绝大多数云产品。这个6.5折是折上折,除了「99计划产品」,都可以在官网优惠后的价格基础上叠......
  • Vue3 - 详细实现移动端H5网页调用摄像头拍照功能,微信公众号网页h5页面打开本地摄像头
    前言PC网站端,请访问这篇文章。在vue3手机移动端开发中,详解H5页面/微信公众号网页调用浏览器摄像头并拍照完整示例,在手机浏览器上开启摄像头并拍照上传服务器或保存到本地功能(实时预览使用图片临时路径或base64数据),切换转换前置摄像头与后置摄像头,vue3手机H5打开摄像......
  • Python桌面应用程序中的用户界面优化与体验
    Python桌面应用程序中的用户界面优化与体验从零开始:打造你的第一个Python桌面应用快速搭建基础界面:窗口、按钮和标签视觉盛宴:美化你的应用程序界面使用样式表定制外观:QtStyleSheets(QSS)示例图标与图像:让应用图标更吸引人添加应用图标主题切换:实现深色模式与浅色模......
  • DzzOffice网盘插件修复无权限的用户可以查看文件夹信息问题
    问题描述:在我的网盘页面,即访问域名://index.php?mod=explorer#home&fid=fid值,通过修改fid值可以使文件夹右侧信息显示非本人的。修复解释:在查询当前文件夹信息前先检查文件夹是否是我的网盘里的,如果是,在判断当前文件夹是否是当前用户的。修复方法:文件:dzz/explorer/dynamic......
  • 用户画像-入门
    用户画像:用户画像是一种虚构的角色,它代表了理想用户的典型特征和行为。它是根据用户研究、数据分析和市场洞察构建的,旨在帮助企业更好地理解和服务其目标客户群体。用户画像通常包括用户的基本信息(如年龄、性别、职业、教育水平等)、兴趣爱好、消费习惯、生活方式、技术使用习惯......
  • centos创建用户并仅授权访问某目录
    #!/bin/bash#检查是否以root用户运行if["$(id-u)"-ne0];thenecho"请使用root用户或sudo权限运行此脚本。"exit1fi#检查输入参数if["$#"-ne3];thenecho"用法:$0<用户名><密码><授权目录>"exit1fi......