新闻详情

新闻详情

首页 / 资讯中心 / 详情

ShardingSphere 分库分表 + 读写分离

发布时间:2026/10/1 2:12:53来源:尧图网络
ShardingSphere 分库分表 + 读写分离
目录1.pom.xml配置2.配置分库分表规则2.1.创建实体类和Mapper接口2.2.测试分库分表3.配置读写分离规则3.1.测试读写分离4.分库分表 读写分离方案一分库分表 读写分离整合配置方案二使用读写分离数据源作为分片数据源注意事项1.pom.xml配置dependency groupIdorg.apache.shardingsphere/groupId artifactIdshardingsphere-jdbc-core-spring-boot-starter/artifactId version5.1.1/version /dependency dependency groupIdcom.baomidou/groupId artifactIdmybatis-plus-boot-starter/artifactId version3.4.3.4/version /dependency2.配置分库分表规则分库分表是将一个大的数据库拆分成多个小的数据库分库并将一个大的表拆分成多个小的表分表以减轻单个数据库和表的压力提高系统的并发处理能力和数据存储能力。分库分表主要有垂直拆分和水平拆分两种方式。垂直拆分将表按照字段进行拆分不同的字段存储在不同的表中。例如将用户表拆分成用户基本信息表和用户详细信息表。水平拆分将表按照行进行拆分不同的行存储在不同的表中。例如将订单表按照订单ID的哈希值拆分成多个表。在application.yml中配置分库分表规则spring: shardingsphere: datasource: names: ds0,ds1 ds0: type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.mysql.cj.jdbc.Driver jdbc-url: jdbc:mysql://localhost:3306/db0 username: root password: root ds1: type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.mysql.cj.jdbc.Driver jdbc-url: jdbc:mysql://localhost:3306/db1 username: root password: root rules: sharding: tables: order: actual-data-nodes: ds$-{0..1}.order_$-{0..1} table-strategy: standard: sharding-column: order_id sharding-algorithm-name: table-inline database-strategy: standard: sharding-column: user_id sharding-algorithm-name: database-inline sharding-algorithms: database-inline: type: INLINE props: algorithm-expression: ds$-{user_id % 2} table-inline: type: INLINE props: algorithm-expression: order_$-{order_id % 2} props: sql-show: true2.1.创建实体类和Mapper接口创建Order实体类和OrderMapper接口import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; Data TableName(order) public class Order { private Long orderId; private Long userId; private String orderName; }import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; Mapper public interface OrderMapper extends BaseMapperOrder { }2.2.测试分库分表在Service层编写测试代码import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; Service public class OrderService { Autowired private OrderMapper orderMapper; public void addOrder(Order order) { orderMapper.insert(order); } public ListOrder getOrders() { return orderMapper.selectList(null); } }3.配置读写分离规则读写分离是将数据库的读操作和写操作分离到不同的数据库实例上以提高系统的并发处理能力。通常情况下写操作会集中在主数据库上而读操作会分散到多个从数据库上。在application.yml中配置读写分离规则spring: shardingsphere: datasource: names: master,slave master: type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.mysql.cj.jdbc.Driver jdbc-url: jdbc:mysql://localhost:3306/master_db username: root password: root slave: type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.mysql.cj.jdbc.Driver jdbc-url: jdbc:mysql://localhost:3306/slave_db username: root password: root rules: readwrite-splitting: >3.1.测试读写分离在Service层编写测试代码import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; Service public class UserService { Autowired private UserMapper userMapper; public void addUser(User user) { userMapper.insert(user); } public ListUser getUsers() { return userMapper.selectList(null); } }4.分库分表 读写分离在同一个项目中同时配置分库分表和读写分离需要将两种配置进行整合。以下是完整的配置方案方案一分库分表 读写分离整合配置spring: shardingsphere: datasource: names: ds0,ds1,ds0_slave,ds1_slave # 主库配置用于写操作 ds0: type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.mysql.cj.jdbc.Driver jdbc-url: jdbc:mysql://localhost:3306/db0 username: root password: root ds1: type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.mysql.cj.jdbc.Driver jdbc-url: jdbc:mysql://localhost:3306/db1 username: root password: root # 从库配置用于读操作 ds0_slave: type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.mysql.cj.jdbc.Driver jdbc-url: jdbc:mysql://localhost:3307/db0_slave username: root password: root ds1_slave: type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.mysql.cj.jdbc.Driver jdbc-url: jdbc:mysql://localhost:3307/db1_slave username: root password: root rules: # 分片规则配置 sharding: tables: order: actual-data-nodes: ds$-{0..1}.order_$-{0..1} table-strategy: standard: sharding-column: order_id sharding-algorithm-name: table-inline database-strategy: standard: sharding-column: user_id sharding-algorithm-name: database-inline sharding-algorithms: database-inline: type: INLINE props: algorithm-expression: ds$-{user_id % 2} table-inline: type: INLINE props: algorithm-expression: order_$-{order_id % 2} # 读写分离规则配置 readwrite-splitting: >方案二使用读写分离数据源作为分片数据源spring: shardingsphere: datasource: names: master0,master1,slave0,slave1 # 主库 master0: type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.mysql.cj.jdbc.Driver jdbc-url: jdbc:mysql://localhost:3306/db0 username: root password: root master1: type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.mysql.cj.jdbc.Driver jdbc-url: jdbc:mysql://localhost:3306/db1 username: root password: root # 从库 slave0: type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.mysql.cj.jdbc.Driver jdbc-url: jdbc:mysql://localhost:3307/db0_slave username: root password: root slave1: type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.mysql.cj.jdbc.Driver jdbc-url: jdbc:mysql://localhost:3307/db1_slave username: root password: root rules: # 先配置读写分离 readwrite-splitting: >注意事项
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

让AI跨会话记住你的偏好:claude-code-from-scratch语义记忆召回系统设计解析 2026/10/1 3:01:10

让AI跨会话记住你的偏好:claude-code-from-scratch语义记忆召回系统设计解析

让AI跨会话记住你的偏好:claude-code-from-scratch语义记忆召回系统设计解析 【免费下载链接】claude-code-from-scratch Build your own Claude Code from scratch. 🔍 Claude Code 开源了 50 万行代码,读不动?用 ~5000 行 TypeS…

阅读更多 →
Windows下MSVC编译QGIS 3.34 LTR完整流程与踩坑指南 2026/10/1 3:01:10

Windows下MSVC编译QGIS 3.34 LTR完整流程与踩坑指南

编译 QGIS,说难也难,说简单也简单。难在依赖多、版本杂、报错信息往往不直白;简单在于一旦环境理顺,剩下就是等进度条。我自己在 Windows 10 上用 MSVC 编译 QGIS 3.34.10 的整个过程前后折腾了两天,踩了不少坑&#x…

阅读更多 →
西安汽车行业GEO优化服务商家测评排名,不踩坑 2026/10/1 3:00:57

西安汽车行业GEO优化服务商家测评排名,不踩坑

现在很多西安汽车行业从业者都会搜索擅长汽车行业GEO优化公司,也会好奇本土有哪些知名的汽车行业GEO优化品牌企业,大家都想找到靠谱的优化服务,让自己的品牌能在AI搜索时代拿到更多本地流量。随着AI智能搜索成为用户寻找本地汽车相关服务的主…

阅读更多 →
浙江智能GEO源头厂家实力参考与行业观察 2026/10/1 3:00:57

浙江智能GEO源头厂家实力参考与行业观察

在生成式AI技术快速普及的今天,越来越多B端实体企业开始布局AI搜索获客赛道,资质齐全的GEO源头厂家成为全行业渠道服务商与实体企业关注的核心合作对象。很多从业者在布局GEO业务时都会搜索,geo源头厂家公司哪家好,geo源头厂家怎么…

阅读更多 →
SpringBoot事务失效的8个场景,你中招了吗 2026/10/1 3:00:57

SpringBoot事务失效的8个场景,你中招了吗

场景一:方法不是publicSpring的声明式事务基于动态代理,而代理只能拦截public方法。你把Transactional标在private、protected或包级方法上,Spring连看都不看一眼。非public方法上的事务注解,就像贴在墙上的符咒,好看不…

阅读更多 →
面试场景下的AI Agent工程化实践:从零构建可交付骨架 2026/10/1 3:00:50

面试场景下的AI Agent工程化实践:从零构建可交付骨架

1. 为什么《码上面试》Agent项目值得从第一行代码开始重读“《码上面试》Agent项目学习记录(一)”——这个标题乍看像一份普通的学习笔记,但结合近期全网高频出现的“agent开发”“ai agent搭建”“agent框架与编排”“从0到1搭建ai agent”等…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉