PostgreSQL 使用 ShardingSphere 实现更强大的分库分表 + 读写分离

PG数据库读写分离高可用方案 1、读写分离 1、首先准备两台服务器,2个虚拟机做测试,分别是: 1.主库(master) 192.168.138.129 postgresql 11 2.从库(standby)192.168.138.128 postgresql 11 安装步骤参考 https://www.cnblogs.com/chendian0/p/11232307.html (默认已经初始化数据库并配置好远程访问) 2、配置主库 (192.168.138.129) vim postgresql.conf(不清楚文件在哪可以使用 fi 阅读详情

你已经掌握了 Spring Boot + PostgreSQL 读写分离 的基础实现,现在我们来进入 进阶阶段:使用 Apache ShardingSphere 实现 分库分表 + 读写分离 的企业级解决方案。

✅ 为什么选择 ShardingSphere?

  • 开源(Apache 顶级项目)
  • 无侵入:兼容 JPA、MyBatis、原生 JDBC
  • 支持读写分离、分库分表、加密、影子库等
  • 提供 ShardingSphere-JDBC(轻量级)和 ShardingSphere-Proxy(透明网关)两种模式

🚀 一、架构目标

我们将实现:

                   +---------------------+
                   |   Application       |
                   |   ShardingSphere-JDBC |
                   +----------+----------+
                              |
         +---------------------+----------------------+
         |                                            |
+--------v---------+                     +------------v------------+
|   master_db_0     |<--- 流复制 --------|   replica_db_0 (read)     |
|   (write)         |                   |                           |
|   192.168.1.10:5432 |                   |   192.168.1.11:5432       |
+-------------------+                   +---------------------------+

+--------v---------+                     +------------v------------+
|   master_db_1     |<--- 流复制 --------|   replica_db_1 (read)     |
|   (write)         |                   |                           |
|   192.168.1.12:5432 |                   |   192.168.1.13:5432       |
+-------------------+                   +---------------------------+
  • ✅ 读写分离:写走主库,读走从库
  • ✅ 分库分表:按 user_id 模 2 分到两个库,每库一张表
  • ✅ 自动路由:SQL 自动路由到正确库和表

📦 二、前置条件

  1. 4 台 PostgreSQL 实例(可用 Docker 模拟)
    • master_db_0:192.168.1.10:5432
    • replica_db_0:192.168.1.11:5432
    • master_db_1:192.168.1.12:5432
    • replica_db_1:192.168.1.13:5432
  2. 主从复制已配置完成
  3. Spring Boot 项目

📁 三、项目结构

src/
├── main/
│   ├── java/
│   │   └── com/example/sharding/
│   │       ├── ShardingSphereConfig.java
│   │       ├── service/UserService.java
│   │       └── model/User.java
│   └── resources/
│       └── application.yml

✅ 四、Maven 依赖(ShardingSphere-JDBC)

<!-- pom.xml -->
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
    </dependency>

    <!-- ShardingSphere-JDBC 核心依赖 -->
    <dependency>
        <groupId>org.apache.shardingsphere</groupId>
        <artifactId>shardingsphere-jdbc-core-spring-boot-starter</artifactId>
        <version>5.3.2</version>
    </dependency>
</dependencies>

✅ 五、application.yml 配置(核心)

# application.yml
spring:
  shardingsphere:
    # ========== 数据源配置 ==========
    datasource:
      names: master0,slave0,master1,slave1

      # 主库 0
      master0:
        type: com.zaxxer.hikari.HikariDataSource
        driver-class-name: org.postgresql.Driver
        jdbc-url: jdbc:postgresql://192.168.1.10:5432/myapp_db
        username: myapp_dev
        password: MyAppDevPass!2025

      # 从库 0
      slave0:
        type: com.zaxxer.hikari.HikariDataSource
        driver-class-name: org.postgresql.Driver
        jdbc-url: jdbc:postgresql://192.168.1.11:5432/myapp_db
        username: myapp_dev
        password: MyAppDevPass!2025

      # 主库 1
      master1:
        type: com.zaxxer.hikari.HikariDataSource
        driver-class-name: org.postgresql.Driver
        jdbc-url: jdbc:postgresql://192.168.1.12:5432/myapp_db
        username: myapp_dev
        password: MyAppDevPass!2025

      # 从库 1
      slave1:
        type: com.zaxxer.hikari.HikariDataSource
        driver-class-name: org.postgresql.Driver
        jdbc-url: jdbc:postgresql://192.168.1.13:5432/myapp_db
        username: myapp_dev
        password: MyAppDevPass!2025

    # ========== 读写分离配置 ==========
    rules:
      # 读写分离
      readwrite-splitting:
        data-sources:
          # 逻辑数据源名称:ds0
          ds0:
            write-data-source-name: master0
            read-data-source-names: slave0
            load-balancer-name: round_robin
          # 逻辑数据源名称:ds1
          ds1:
            write-data-source-name: master1
            read-data-source-names: slave1
            load-balancer-name: round_robin

      # 分库分表规则
      sharding:
        # 逻辑表配置
        tables:
          t_user:
            # 实际表:ds0.t_user_0, ds0.t_user_1, ds1.t_user_0, ds1.t_user_1
            actual-data-nodes: ds${0..1}.t_user_${0..1}
            # 分库策略:按 user_id 模 2 决定用 ds0 还是 ds1
            database-strategy:
              standard:
                sharding-column: user_id
                sharding-algorithm-name: database-inline
            # 分表策略:按 id 模 2 决定用 _0 还是 _1
            table-strategy:
              standard:
                sharding-column: id
                sharding-algorithm-name: table-inline

        # 分片算法
        sharding-algorithms:
          database-inline:
            type: INLINE
            props:
              algorithm-expression: ds${user_id % 2}
          table-inline:
            type: INLINE
            props:
              algorithm-expression: t_user_${id % 2}

        # 默认策略
        default-database-strategy:
          none: # 不分库(用于其他表)
        default-table-strategy:
          none: # 不分表

    # ========== 全局配置 ==========
    props:
      sql-show: true  # 显示实际执行的 SQL(调试用)

✅ 六、实体类 User.java

// com/example/sharding/model/User.java
package com.example.sharding.model;

import jakarta.persistence.*;
import java.util.UUID;

@Entity
@Table(name = "t_user")
public class User {

    @Id
    @GeneratedValue(generator = "uuid2")
    @GenericGenerator(name = "uuid2", strategy = "org.hibernate.id.UUIDGenerator")
    private UUID id;

    @Column(name = "user_id", nullable = false)
    private Long userId;  // 用于分库的字段

    @Column(name = "username", length = 50)
    private String username;

    @Column(name = "email", length = 100)
    private String email;

    // 构造函数、getter、setter
    public User() {}

    public User(Long userId, String username, String email) {
        this.userId = userId;
        this.username = username;
        this.email = email;
    }

    // getter 和 setter 省略
    public UUID getId() { return id; }
    public void setId(UUID id) { this.id = id; }

    public Long getUserId() { return userId; }
    public void setUserId(Long userId) { this.userId = userId; }

    public String getUsername() { return username; }
    public void setUsername(String username) { this.username = username; }

    public String getEmail() { return email; }
    public void setEmail(String email) { this.email = email; }
}

✅ 七、Service 层测试

// com/example/sharding/service/UserService.java
package com.example.sharding.service;

import com.example.sharding.model.User;
import com.example.sharding.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Service
public class UserService {

    @Autowired
    private UserRepository userRepository;

    /**
     * 创建用户
     * 根据 userId % 2 路由到 ds0 或 ds1
     * 根据 id % 2 决定存入 t_user_0 或 t_user_1
     */
    @Transactional
    public User createUser(Long userId, String username, String email) {
        User user = new User(userId, username, email);
        return userRepository.save(user);
    }

    /**
     * 查询所有用户
     * 自动从对应的从库读取
     */
    public List<User> getAllUsers() {
        return userRepository.findAll();
    }

    /**
     * 按 ID 查询
     */
    public User getUserById(String id) {
        return userRepository.findById(id).orElse(null);
    }
}

✅ 八、Repository

// com/example/sharding/repository/UserRepository.java
package com.example.sharding.repository;

import com.example.sharding.model.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import java.util.UUID;

@Repository
public interface UserRepository extends JpaRepository<User, UUID> {
}

✅ 九、工作流程说明

操作路由逻辑
save(user),userId=100100 % 2 = 0 → 路由到 ds0(master0)
id % 2 → 决定存 t_user_0 或 t_user_1
findAll()从 ds0.slave0 和 ds1.slave1 读取
findById(id)根据 id % 2 确定表,自动从对应从库读取

✅ 十、验证 SQL 路由

启用 sql-show: true 后,你会看到类似日志:

[INFO ] ShardingSphere-SQL - Logic SQL: INSERT INTO t_user ...
[INFO ] ShardingSphere-SQL - Actual SQL: ds0 ::: INSERT INTO t_user_0 ...
[INFO ] ShardingSphere-SQL - Actual SQL: ds0 ::: SELECT * FROM t_user_0 ...

✅ 十一、ShardingSphere 优势总结

特性说明
🔌 无侵入原有 JPA/MyBatis 代码无需修改
🧩 灵活分片支持自定义分片算法(Java 类)
🔄 读写分离自动读从库,写主库
🔐 数据加密敏感字段自动加解密
🧹 影子库测试 SQL 走影子库,不影响生产
📊 监控集成 Prometheus、OpenTelemetry

✅ 十二、进阶建议

场景推荐方案
更复杂分片逻辑实现 StandardShardingAlgorithm 接口
多租户按 tenant_id 分库
全文搜索结合 Elasticsearch 使用
高可用使用 ShardingSphere-Proxy + Keepalived
自动化运维使用 ShardingSphere-Scaling 在线数据迁移

🎁 附加:Docker 快速搭建主从复制(可选)

# 启动主库
docker run -d --name pg-master \
  -e POSTGRES_PASSWORD=123456 \
  -p 5432:5432 \
  postgres:15

# 启动从库(需配置流复制)
# 可使用 docker-compose + repmgr 实现

✅ 总结

你现在已经掌握了:

  • ✅ ShardingSphere-JDBC 的集成方式
  • ✅ 分库分表 + 读写分离的配置
  • ✅ 基于 user_id 和 id 的路由策略
  • ✅ 无侵入式接入现有项目

这套方案适用于 高并发、大数据量、读多写少 的系统,如电商、社交、内容平台。

[SQL系列] 从头开始学PostgreSQL 分库分表 分库分表是一种数据库架构设计的方法,用于应对大规模数据的存储和查询。当单个数据库的存储容量或查询性能无法满足需求时,可以通过将数据分散存储在多个数据库服务器上,以提高系统的可扩展性和性能。分库分表通常包括两个步骤:分库和分表。 阅读详情

相关推荐

《童虎学习笔记》15分钟ShardingSphere搭建PostgreSQL分库分表

1

tonghu_note的博客 4943

PostgreSql分库分表

PostgreSql 分库分表的几种实现方式

qq_41539807的博客 6338

【实战指南】ShardingSphere5.2.1 + SpringBoot 分库分表配置避坑手册

本文是一份针对ShardingSphere5.2.1与SpringBoot集成的实战避坑指南。详细解析了在PostgreSQL环境下配置分库分表时,如何解决SnakeYAML版本冲突、属性命名规范等常见问题,并提供了从依赖选型、核心配置到数据验证的完整流程,帮助开发者高效、稳定地落地分库分表方案。

bash7scripter的博客 880

进阶数据库系列(十九):PostgreSQL 基于 Pgpool 实现读写分离

点击下方名片,设为星标!回复“1024”获取2TB学习资源!前面介绍了PostgreSQL事务与并发控制、主从复制、高可用方案、基于 Patroni 高可用架构部署及故障切换、基于 repmgr 高可用架构实践等相关的知识点,今天我将详细的为大家介绍 PostgreSQL 基于 pgpool 实现读写分离相关知识,希望大家能够从中收获多多!如有帮助,请点在看、转发支持一波!!!Pgpool ...

民工哥的博客 3334

Oracle、MySQL、PostgreSQL三大数据库对比分析

oracle、mysql、postgresql数据库对比

笔记 2736

Apache ShardingSphere 5.1.2 发布|全新驱动 API + 云原生部署,打造高性能数据网关

值得一提的是,本次更新带来了以下全新功能:ShardingSphere-Proxy Helm ChartSQL 方言翻译以 Driver 形式使用 ShardingSphere-JDBC这些全新的能力让 ShardingSphere 的数据网关能力得到了质的提升,助力 ShardingSphere 在云上部署,优化用户体验。除了上述新功能,本次更新大量提升了 SQL 解析支持度,内核、运行模式、弹性伸缩都完善了对 PostgreSQL /openGauss schema 的支持,弹性伸缩、事务、DistSQ

tmchongye的专栏 1374

PostgreSQL - 分库分表的设计思路与实战方案

PostgreSQL 分库分表实战指南 摘要 本文深入探讨 PostgreSQL 分库分表技术方案,涵盖核心设计原则、常见分片策略和技术选型。主要内容包括: 分库分表概念:解释水平分库与垂直分表的技术原理 设计原则:强调分片键选择、数据均匀分布和扩容考虑 分片策略:分析范围分片、哈希分片和一致性哈希的优缺点 技术实现:推荐使用 Apache ShardingSphere-JDBC 进行 PostgreSQL 分片 实战示例:提供 Spring Boot 集成 ShardingSphere 的配置示例 文章特

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

首个FDA认证开源医学影像AI平台Comp2Comp:从CT自动分析到临床部署全解析

深度学习模型在医学影像分析领域正成为变革性力量,其核心原理是通过卷积神经网络自动学习图像特征,实现精准分割与检测。这一技术价值在于将高度依赖医生经验的定性、主观判断,转化为高效、客观、可重复的定量分析,极大提升了诊断的一致性和工作效率。在应用场景上,医学影像AI已广泛渗透于疾病筛查、辅助诊断、预后评估及治疗方案规划等多个环节。本文聚焦于获得FDA 510(k)认证的开源平台Comp2Comp,它集成了主动脉钙化评分和椎体骨密度分析双任务,通过串联式的U-Net分割网络与目标检测模型,构建了从DICOM预处理

weixin_33725126的博客 653

PostgreSQL - 读写分离的实现与中间件选择

PostgreSQL读写分离实现与中间件选择摘要 本文详细介绍了PostgreSQL读写分离的技术实现方案。首先解释了读写分离的基本概念及其优势,包括提升读性能、降低主库负载和提高系统可用性。接着阐述了PostgreSQL流复制的配置方法,这是实现读写分离的基础。 文章重点分析了三种实现层级:应用层手动实现(通过AOP动态切换数据源)、驱动层实现(使用PostgreSQL JDBC驱动的targetServerType参数)以及中间件层实现。针对每种方案提供了具体实现代码示例,特别是Java应用中的配置方法

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

深入理解命名实体识别(NER)

命名实体识别(NER,Named Entity Recognition)是自然语言处理(NLP)中的一项重要技术,用于从文本中识别出特定类型的实体,并将这些实体分类到预定义的类别中。实体通常包括人名、地名、组织名、日期、时间、数量、货币等。例如,在句子“Barack Obama was born in Hawaii in 1961”中,NER任务的目标是识别“Barack Obama”作为人名,“Hawaii”作为地名,以及“1961”作为日期。

AngelCryToo的专栏 4638

基于CubeMX与lwip的STM32轻量级HTTP服务器搭建及VSCode高效开发指南

本文详细介绍了如何在STM32单片机上,利用STM32CubeMX图形化配置工具和轻量级TCP/IP协议栈lwIP,快速搭建一个轻量级HTTP服务器。通过结合VSCode的高效代码编辑能力,提供了一套从硬件连接到动态网页交互(SSI/CGI)的完整开发指南,旨在为嵌入式设备提供零成本、跨平台的Web交互界面。

weixin_29163857的博客 582

Amazon Aurora 的读写能力扩展之 ShardingSphere-Proxy 篇

文章来源于亚马逊 AWS 官方博客马丽丽亚马逊云科技数据库解决方案架构师,十余年数据库行业经验,先后涉猎 NoSQL 数据库 Hadoop/Hive、企业级数据库 DB2、分布式数仓 Greenplum/Apache HAWQ 以及亚马逊云原生数据库的开发和研究。1. 前言Amazon Aurora 是亚马逊云科技自研的一项关系数据库服务,它在提供和开源数据库 MySQL...

ShardingSphere官微 834

计算pi小数点后10000位

数据结构课上,老师让我们计算一下pi的10000位,复习一下面向对象。 First Try:定义一个高精度类hp(high precision),实现加减乘除,输入输出,然后随便找一个公式,比如Wallis公式,全都用hp进行计算。 现实是:大数乘大数或者大数除大数,实在是太慢了。而且Wallis公式收敛太慢。 Second Try先找到一个收敛较快的公司:BBP公式,观察公式发现,...

我的技术人生 7394

从“卡壳“到“丝滑“:ShardingSphere如何破解传统分库分表三大痛点?

在数据爆炸的时代,传统数据库架构往往面临性能瓶颈、扩展性不足和运维复杂等挑战。Apache ShardingSphere作为一款开源分布式数据库中间件,通过其强大的分库分表功能,为企业提供了高效、灵活的数据管理解决方案。本文将深入探讨ShardingSphere如何解决传统分库分表的三大核心痛点,帮助读者快速理解其价值与应用。 ## 痛点一:数据量大导致性能急剧下降 📉 随着业务增长,单表数

gitblog_00077的博客 677

fpga学习——zynq图像处理中的DVP流接口封装

之前文章介绍了基于zynq的图像处理架构问题。其中,作为开发者,需要重点关注图像传感器接口、处理算法、显示接口,这些模块。现在我们一同学习用于视频数据接口的DVP模块,并将其封装成AXI-stream接口便于直接和VDMA IP通信。 DVP_AXI stream IP v1.0使用说明 1.设计概述 •用于cmos传感器视频数据采集,将cmos输出的8位视频数据拼接成RGB 565模式 •AXI_stream主机接口,用于和PS端内存的数据交互 •基于vivado 18.3软件设计 2.模块分析

weixin_41895751的博客 4581

system.img解包打包工具

最近需要对system.img进行解包,修改系统属性和添加自己的APK,再打包烧录,整理俩个方法。 system.img解包打包工具方法一 1、把system.img转换成ext4格式 ./simg2img system.img system_ext4.img 2、挂载ext4到systemMount目录进行修改 sudo mount system_ext4.img systemMount/ -o loop 3、修改完成后 unmount 退出挂载使用如下命令

计算机毕业论文源码,学生个人网页制作html源码。贴近用户做网络推广和互联网优化。 9704

ShardingSphere即将支持PostgreSQL代理

作者简介张永伦,京东数科高级软件工程师,Apache ShardingSphere(Incubating) PPMC。长期从事分布式系统的高可用、高并发相关工作。热衷于网...

ShardingSphere官微 1526

使用Simulink设计并实现一个可调谐的二阶IIR陷波滤波器,实时去除音频中的工频噪声

《基于Simulink的音频陷波滤波器设计与实现》摘要:本文详细介绍了使用Simulink设计陷波滤波器去除音频工频噪声(如50Hz)的方法。核心内容包括:1)二阶IIR陷波滤波器的原理与传递函数;2)Simulink实现步骤(音频系统搭建、滤波器设计、频率跟踪);3)性能分析(频谱对比、时域波形、听觉测试)。通过精准消除特定频率干扰,同时保留语音信号(200Hz-4kHz),有效提升信噪比(>20dB)。文章还探讨了多陷波级联、自适应算法等高级技巧,为音频处理、语音通信等应用提供实用解决方案。

amy_mhd的博客 152

PostgreSQL 结合 ShardingSphere 构建高并发场景下的分库分表与读写分离实战

本文详细介绍了如何利用Apache ShardingSphere中间件,为PostgreSQL数据库构建高并发场景下的分库分表与读写分离架构。通过实战演练,从核心概念、环境搭建、Spring Boot集成到配置详解,手把手教你如何透明地分散数据库压力,并深入探讨了性能调优、分布式事务处理及多租户等进阶策略,为应对海量数据与高并发访问提供了一套完整的解决方案。

f6g7h8i9j的博客 428

【Windows Server 2019】Active Directory Certificate Services 证书颁发机构的安装,配置和管理Ⅰ——AD CS的安装和配置

博文主要介绍了Windows Server 2019的证书颁发机构的安装和配置方法。

VMware, Windows, Linux, Cisco, Container, Kubernetes, Kali 4832

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

ShardingSphere5.2.1分库分表原理与实战:从单机到分布式数据库的平滑过渡

本文深入解析了Apache ShardingSphere 5.2.1的分库分表原理与实战应用。通过对比JDBC与Proxy两种部署模式,并结合Spring Boot与PostgreSQL的集成示例,详细阐述了如何实现从单机数据库到分布式架构的平滑过渡。文章重点剖析了SQL路由、改写等核心流程,并提供了分片键选择、分布式查询优化等生产实践要点,为应对数据量激增的瓶颈提供了高效解决方案。

d3e4f的博客 450

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

ShardingSphere协议适配:MySQL/PostgreSQL多数据库支持

在当今微服务架构和云原生应用蓬勃发展的时代,企业面临着海量数据存储和处理的巨大挑战。传统单一数据库架构难以满足高并发、大数据量的业务需求,分布式数据库解决方案应运而生。然而,不同数据库厂商采用各自独特的通信协议和SQL方言,给开发者和运维团队带来了巨大的兼容性挑战。 Apache ShardingSphere作为业界领先的分布式数据库中间件,通过其强大的协议适配能力,为MySQL和Postgre...

gitblog_00036的博客 1091

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Apache ShardingSphere 5.1.0 正式发布

新年伊始,Apache ShardingSphere 迎来了今年的第一个版本的更新,5.1.0 版本正式发布。

SphereEX的博客 548

《ShardingSphere解读》02 项目:什么是ShardingSphere ?

Apache开源项目ShardingSphere是一款分布式数据库中间件,提供分库分表、读写分离、分布式事务等能力。它包含Sharding-JDBC(轻量级Java框架)、Sharding-Proxy(透明数据库代理)和Sharding-Sidecar(云原生Sidecar)三大核心组件,支持多种数据库协议。采用微内核架构,通过插件机制实现SQL解析、路由、改写等功能,同时提供数据脱敏、配置中心等治理能力。其核心理念是兼容现有数据库而非颠覆,使开发者能像使用单库一样操作分布式数据库集群。

断剑重铸之日 骑士归来之时 938

PostgreSQL - 流复制的原理与实时同步配置

PostgreSQL 流复制摘要 PostgreSQL流复制是一种物理复制机制,通过实时传输WAL日志实现主从同步。其核心优势包括高可用性、读写分离、数据冗余和零数据丢失能力。流复制基于WAL机制,主服务器通过walsender进程发送日志,备用服务器通过walreceiver接收并应用。关键组件包含复制槽和同步级别配置。实战配置分为主服务器设置(修改postgresql.conf、创建复制用户)和备用服务器配置(使用pg_basebackup初始化)。该机制为构建高可用数据库集群提供了可靠基础,支持毫秒级

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

除了使用mycat/shardingsphere之外的分表选择

文章摘要:本文介绍了数据库分表的不同方案演变过程,从早期手动添加年份后缀分表,到使用MyCat/ShardingSphere中间件,再到云服务RDS方案。重点探讨了Oracle表分区(Partitioning)技术,通过RANGE分区实现逻辑单表、物理多分区的透明管理,支持自动分区剪枝。同时对比了PostgreSQL、MySQL、SQL Server等主流数据库的原生分区功能,指出其共同特点是应用层无需感知物理分区。最后解答了不带分区键查询的效率问题,说明分区扫描可通过并发提高性能。

w8y56f的专栏 817
上一篇: 什么是数据库的分库、分表、分片?他们都有什么作用?
下一篇: 1、Redis 数据库的基本介绍和特点说明
龙茶清欢
博客等级 码龄7年 3720粉丝 375原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙茶清欢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值