MySQL分库分表

复旦微实现串口在线升级BOOT.BIN 将该 demo 生成的 app(升级用)和 fsbl、最简化 bit 文件(可选)打包成 BOOT.BIN,作为 golden image 烧写在 qspi flash 偏移 0 地址开始的位置,其中最简化 bit 文件为在线升级功能提供必要的物理通道(如果不需要,可以不打包该文件),golden image 一旦发布基本不需要进行升级,由该 golden image 负责和上位机进行通信交互,完成业务 app、业务 bit 文件、uboot 以及操作系统 image 等文件在线升级,在qspi flash 阅读详情

分库分表是应对MySQL单机单库数据量过大、性能瓶颈的重要解决方案。当数据库中的数据量达到一定规模(通常千万级以上)或并发访问量过高时,单机数据库会面临存储容量不足、查询性能下降、IO压力过大等问题。分库分表通过将数据分散到多个数据库或表中,实现数据的水平扩展,提升系统的吞吐量和可用性。

一、分库分表的基本概念

1. 什么是分库分表

- 分表:将一个大表按照某种规则拆分成多个小表,每个小表存储一部分数据

- 分库:将一个大数据库按照某种规则拆分成多个小数据库,每个小数据库存储一部分数据

- 通常分库和分表会结合使用,形成分布式数据库架构

2. 分库分表的目的

- 解决单表数据量过大问题,提高查询性能

- 分散数据库压力,提高并发处理能力

- 突破单机存储容量限制,支持数据规模增长

- 提高系统可用性,单个分库或分表故障不影响整体系统

3. 分库分表的挑战

- 分布式事务一致性问题

- 跨库联合查询复杂

- 全局唯一ID生成困难

- 数据迁移和扩容复杂

- 应用程序需要适配分库分表逻辑

二、分库分表的方式

1. 水平拆分(Horizontal Sharding)

水平拆分是将表中的行按照某种规则分散到不同的表或库中,每个表或库的结构相同,但数据不同。

(1)特点

- 每个分表/分库的结构与原表完全一致

- 数据按行拆分,不改变表结构

- 适用于数据量过大的表,可无限扩展(理论上)

(2)常见拆分规则

① 范围拆分:

按时间、ID等范围进行拆分,如按年份拆分订单表:

- orders_2021:存储2021年的订单

- orders_2022:存储2022年的订单

- orders_2023:存储2023年的订单

② 哈希拆分:

对关键字段进行哈希计算,根据哈希结果分配到不同分表,如按用户ID哈希:

table_index = user_id % 4

将用户ID哈希后模4,分配到users_0、users_1、users_2、users_3四个表中

③ 地理位置拆分:

按用户所在地区拆分,如按省份拆分用户表:

- users_beijing、users_shanghai、users_guangdong等

④ 业务维度拆分:

按业务线或客户类型拆分,如电商系统按客户等级拆分:

- users_vip、users_normal、users_new等

2. 垂直拆分(Vertical Sharding)

垂直拆分是将表中的列按照某种规则分散到不同的表或库中,每个表或库的结构不同,但共同组成原表的完整数据。

(1)特点

- 每个分表/分库的结构不同,包含原表的部分字段

- 数据按列拆分,拆分后表结构发生变化

- 适用于表字段过多或不同字段访问频率差异大的场景

(2)常见拆分规则

① 按访问频率拆分:

将常用字段和不常用字段拆分为不同表:

- users_basic:存储用户ID、姓名、手机号等常用信息

- users_extra:存储用户简介、爱好、注册IP等不常用信息

② 按字段大小拆分:

将大字段拆分到单独表中,如:

- articles:存储文章ID、标题、发布时间等

- articles_content:存储文章ID和正文内容(大字段)

③ 按业务职责拆分:

将不同业务模块的数据拆分到不同库中,如电商系统:

- user_db:用户相关表

- order_db:订单相关表

- product_db:商品相关表

- payment_db:支付相关表

3. 混合拆分

实际应用中,通常会结合水平拆分和垂直拆分:

① 先进行垂直拆分,按业务模块拆分不同的库

② 对每个库中数据量大的表再进行水平拆分

例如:电商系统先垂直拆分为用户库、订单库、商品库,然后对订单库中的订单表按时间进行水平拆分

三、分库分表的实现方案

1. 客户端解决方案(代码层分片)

在应用程序代码中实现分库分表逻辑,直接操作多个数据库实例。

(1)实现方式

- 自定义分片逻辑:在DAO层根据分片规则路由到相应的库和表

- 使用ORM框架扩展:如MyBatis的插件机制实现分库分表

(2)示例代码(伪代码)
// 哈希分片示例
public class OrderDAO {
    // 订单分表数量
    private static final int TABLE_COUNT = 8;
    
    public Order getOrder(Long orderId) {
        // 计算分表索引
        int tableIndex = (int)(orderId % TABLE_COUNT);
        String tableName = "orders_" + tableIndex;
        
        // 执行查询
        return jdbcTemplate.queryForObject(
            "SELECT * FROM " + tableName + " WHERE id = ?",
            new Object[]{orderId},
            new OrderRowMapper()
        );
    }
    
    public void saveOrder(Order order) {
        // 计算分表索引
        int tableIndex = (int)(order.getId() % TABLE_COUNT);
        String tableName = "orders_" + tableIndex;
        
        // 执行插入
        jdbcTemplate.update(
            "INSERT INTO " + tableName + " (id, user_id, amount) VALUES (?, ?, ?)",
            order.getId(), order.getUserId(), order.getAmount()
        );
    }
}
(3)优缺点

优点:

- 实现简单,无需引入额外组件

- 性能较好,无中间层开销

- 灵活性高,可根据业务定制分片规则

缺点:

- 分片逻辑与业务代码耦合

- 维护成本高,修改分片规则需修改代码

- 跨库事务和联合查询实现复杂

- 不支持动态扩容

2. 中间件解决方案

通过独立的中间件实现分库分表逻辑,应用程序通过中间件访问数据库,无需关心分片细节。

(1)主流中间件

① ShardingSphere(开源):

- 包含Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar

- 功能全面,支持多种分片策略、分布式事务、读写分离等

- 社区活跃,文档丰富

② MyCat(开源):

- 基于Cobar开发,成熟稳定

- 支持多种分片规则,提供监控功能

- 采用代理模式,对应用透明

③ 其他中间件:

- Atlas(奇虎360开源)

- DDB(阿里云分布式数据库服务)

- TDSQL(腾讯分布式数据库)

(2)Sharding-JDBC配置示例
// application.yml 配置
spring:
  shardingsphere:
    datasource:
      names: db0, db1
      db0:
        type: com.zaxxer.hikari.HikariDataSource
        driver-class-name: com.mysql.cj.jdbc.Driver
        jdbc-url: jdbc:mysql://localhost:3306/db0
        username: root
        password: 123456
      db1:
        type: com.zaxxer.hikari.HikariDataSource
        driver-class-name: com.mysql.cj.jdbc.Driver
        jdbc-url: jdbc:mysql://localhost:3306/db1
        username: root
        password: 123456
    rules:
      sharding:
        tables:
          t_order:
            actual-data-nodes: db${0..1}.t_order${0..3}
            database-strategy:
              standard:
                sharding-column: user_id
                sharding-algorithm-name: order_db_inline
            table-strategy:
              standard:
                sharding-column: order_id
                sharding-algorithm-name: order_table_inline
        sharding-algorithms:
          order_db_inline:
            type: INLINE
            props:
              algorithm-expression: db${user_id % 2}
          order_table_inline:
            type: INLINE
            props:
              algorithm-expression: t_order${order_id % 4}
    props:
      sql-show: true
(3)优缺点

优点:

- 分片逻辑与业务代码解耦

- 功能丰富,支持复杂场景

- 便于统一管理和维护

- 支持动态扩容和配置变更

缺点:

- 引入中间件增加系统复杂度

- 存在一定性能开销(代理模式)

- 学习和配置成本较高

- 部分复杂SQL可能不支持

3. 数据库厂商解决方案

一些数据库厂商提供了原生的分库分表支持:

- MySQL NDB Cluster:MySQL官方集群方案,支持自动分片

- 阿里云PolarDB:兼容MySQL,支持自动分库分表

- 腾讯云TDSQL:基于MySQL的分布式数据库

- 华为云GaussDB:支持分布式部署和自动分片

四、分库分表的关键问题

1. 全局唯一ID生成

分库分表后,自增ID无法保证全局唯一,需要分布式ID生成方案:

① UUID/GUID:

String id = UUID.randomUUID().toString().replaceAll("-", "");
// 生成类似:550e8400e29b41d3a476d96b66d08491

优点:实现简单,无需中心化服务

缺点:无序,长度长,索引性能差

② 雪花算法(Snowflake):

64位ID,包含时间戳、机器ID、序列号等信息,有序递增

// 伪代码
public class SnowflakeIdGenerator {
    private final long workerId;         // 机器ID
    private final long datacenterId;     // 数据中心ID
    private long sequence = 0L;          // 序列号
    private long lastTimestamp = -1L;    // 上次生成ID的时间戳
    
    // 生成ID的方法
    public synchronized long nextId() {
        // 实现逻辑...
    }
}

优点:有序,性能高,可手动设置机器ID

缺点:依赖系统时钟,时钟回拨会导致ID重复

③ 数据库自增ID表:

-- 创建ID生成表
CREATE TABLE sequence (
    name VARCHAR(50) NOT NULL PRIMARY KEY,
    value BIGINT NOT NULL
);

-- 插入初始值
INSERT INTO sequence (name, value) VALUES ('order_id', 1);

-- 获取下一个ID
REPLACE INTO sequence (name, value) VALUES ('order_id', LAST_INSERT_ID(value + 1));
SELECT LAST_INSERT_ID();

优点:实现简单,ID有序递增

缺点:单点故障风险,性能瓶颈

④ 其他方案:

- Redis自增:利用INCR命令生成ID

- 号段模式:预分配一段ID,减少数据库访问

2. 分布式事务

分库分表后,跨库操作需要保证事务一致性:

① 两阶段提交(2PC):

通过协调者协调所有参与者,分准备和提交两个阶段完成事务

优点:强一致性

缺点:性能差,存在阻塞风险,协调者单点问题

② 补偿事务(TCC):

将事务拆分为Try、Confirm、Cancel三个操作,通过补偿机制保证最终一致性

优点:性能好,无锁阻塞

缺点:业务侵入性强,实现复杂

③ 本地消息表:

通过本地事务记录消息,异步通知其他服务,保证最终一致性

优点:实现简单,可靠性高

缺点:有一定延迟,需要处理消息重复问题

④ SAGA模式:

将长事务拆分为多个短事务,每个短事务有对应的补偿事务

优点:适合长事务场景,可扩展性好

缺点:实现复杂,一致性保障较弱

⑤ 中间件方案:

ShardingSphere支持XA事务和SEATA事务,简化分布式事务实现

3. 跨库联合查询

分库分表后,JOIN查询变得复杂,解决方案包括:

① 避免跨库JOIN:通过合理设计分片规则,将相关数据放在同一库表

② 应用层聚合:先查询各分库数据,再在应用程序中进行JOIN操作

// 伪代码:应用层聚合
List orders = orderDAO.queryByUserId(userId);  // 查询用户所有订单
for (Order order : orders) {
    // 查询每个订单的商品信息
    List products = productDAO.queryByOrderId(order.getId());
    order.setProducts(products);
}
return orders;

③ 数据冗余:适当冗余数据,减少JOIN需求

④ 中间件支持:部分中间件(如ShardingSphere)支持跨库JOIN

4. 数据迁移与扩容

分库分表后的数据迁移和扩容需要特别处理:

① 停机迁移:

停止服务,迁移数据,修改配置,重启服务

优点:简单可靠

缺点:服务中断,影响可用性

② 在线迁移:

通过工具实现不停机数据迁移,如:

- Percona XtraBackup:热备份工具

- ShardingSphere Migration:数据迁移工具

- 自定义迁移程序:双写数据,校验一致性后切换

③ 平滑扩容:

采用一致性哈希等策略,减少扩容时的数据迁移量

例如:从4个分表扩容到8个分表,只需迁移一半数据

五、分库分表的最佳实践

1. 拆分策略选择

- 优先考虑垂直拆分,按业务边界划分数据库

- 水平拆分选择合适的分片键,应满足:

1. 访问频率高,大多数查询都包含该字段

2. 分布均匀,避免数据倾斜

3. 相对稳定,不易变化

- 避免多层级拆分,控制分库分表的复杂度

2. 拆分粒度设计

- 分表数量:单表数据量控制在1000万以内,查询性能较好

- 分库数量:根据服务器资源和并发量确定,避免过多分库增加管理成本

- 预留扩容空间:初始设计时考虑未来3-5年的数据增长

3. 应用适配

- 避免使用SELECT *,只查询需要的字段

- 优化分页查询,分库分表环境下COUNT(*)和LIMIT分页代价高

- 避免复杂SQL,如多表JOIN、子查询等

- 批量操作尽量按分片键拆分,避免全库扫描

4. 监控与运维

- 监控各分库分表的容量、性能和负载均衡情况

- 定期检查数据分布,避免数据倾斜

- 建立完善的备份和恢复机制

- 记录分库分表的元数据信息,便于管理

5. 循序渐进

- 不是所有表都需要分库分表,只拆分数据量大或访问频繁的表

- 可以先单库分表,再逐步过渡到分库分表

- 小步迭代,每次拆分后进行充分测试

6. 工具选型

- 中小规模应用:可考虑客户端分片或轻量级中间件

- 大规模复杂应用:建议使用成熟的中间件如ShardingSphere

- 云环境:优先考虑云厂商提供的分布式数据库服务

六、分库分表示例场景

1. 电商订单系统

① 垂直拆分:

- 订单库(order_db):存储订单基本信息

- 订单明细表(order_item_db):存储订单商品明细

- 订单支付库(order_payment_db):存储支付相关信息

② 水平拆分:

订单表按用户ID哈希分8个库,每个库再按时间分12个表:

- order_db_0 至 order_db_7(8个分库)

- 每个分库包含 orders_202301 至 orders_202312(12个分表)

③ 分片键选择:

- 分库键:user_id(保证同一用户的订单在同一库)

- 分表键:create_time(按月份拆分)

2. 社交平台用户系统

① 垂直拆分:

- 用户基本信息库(user_basic_db)

- 用户资料库(user_profile_db)

- 用户关系库(user_relation_db):关注、粉丝等关系

② 水平拆分:

用户表按用户ID范围分4个库,每个库分16个表:

- user_basic_db_0 至 user_basic_db_3

- 每个库包含 user_00 至 user_15

③ 分片键选择:

- 分库分表键:user_id(便于按用户ID直接定位)

LeRobot 入门教程(十四)Meta-World 机器人多任务与元强化学习操作仿真基准平台 Meta-World是一个开源机器人操作模拟基准平台,专注于多任务与元强化学习研究。该平台提供50项多样化任务(MT50套件),采用标准化评估协议测试算法泛化能力。LeRobot平台支持Meta-World任务评估,提供预处理数据集和训练工具。用户可通过命令行快速训练SmolVLA策略,并评估模型在简单、中等、困难等不同难度任务上的表现。文章还提供了兼容性问题和实用技巧建议,如使用完整MT50任务集测试泛化能力、采用one-hot任务条件化等。这些资源为研究人员开展机器人多任务学习提供了标准化实验环境。 阅读详情

相关推荐

Windows 10下用Python 3搞定Android源码下载:最新repo工具避坑指南

本文详细介绍了在Windows 10系统上,使用Python 3和官方最新repo工具下载Android源码的完整流程。文章提供了从Git安装、环境配置到repo工具初始化、同步加速及常见错误排查的避坑指南,帮助开发者高效搭建稳定的源码下载环境。

weixin_29266749的博客 436

数据库之分库分表-垂直?水平?

一、数据库瓶颈 不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值。在业务Service来看就是,可用数据库连接少甚至无连接可用。接下来就可以想象了吧(并发量、吞吐量、崩溃)。 IO瓶颈 第一种:磁盘读IO瓶颈,热点数据太多,数据库缓存放不下,每次查询时会产生大量的IO,降低查询速度 -> 分库和垂直分表。 第二种:网络IO瓶...

码农Robin的博客 629

有限元缺陷:剪切锁死

有限元缺陷:剪切锁死

wsxww11的博客 5189

MySQL 常用分库分表方案,都在这里了!(1)

这份清华大牛整理的进大厂必备的redis视频、面试题和技术文档祝大家早日进入大厂,拿到满意的薪资和职级~~~加油!!!《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!早日进入大厂,拿到满意的薪资和职级~~~加油!!![外链图片转存中…(img-cnDJKxXD-1713502922003)]《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

2401_83703951的博客 1126

PLSQL Developer14连接Oracle详细过程

下载地址:Instant Client for Microsoft Windows (x64) 64-bit | Oracle 中国解压客户端工具到一个目录(解压文件到当前目录,自动合并成一个目录)​ 电脑(右键)→属性→高级系统设置→环境变量→系统环境变量→新建变量名:NLS_LANG 变量值: AMERICAN_AMERICA.ZHS16GBK​ 变量名:TNS_ADMIN 变量值:C:\xiaxinyu\software\Oracle\instantclient_19_10​ 在Oracle客户端(C

summer_fish的专栏 3983

uniapp - 解决报错 canvasToTempFilePath: fail canvas is empty 画布为空错误,生成海报相册、二维码、条码、裁剪/拼合操作图片报错,加了this还是报错

uni-app,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,canvasToTempFilePath:失败画布为空,报错,canvasToTempFilePath:failcanvasisempty,不支持2d,还是报错,this,加上this还是报错,vue3没有this怎么办?海报,保存到手机相册,生成二维码,显示条码,图像裁切,图片处理,canvas报错,无法解决,还是fail,依然报错,传了this也不好使,Uniapp小程序,如何解决这个问题

🏆 前端领域优质创作者 4708

MySQL-分库分表方案

常用的MySQL分库分表方案以及常用中间件都有哪些?

长林攻城狮的博客 3558

RH850从0搭建Autosar开发环境【3X】- Davinci Configurator之Port模块配置详解(MCAL配置)

RH850从0搭建Autosar开发环境【3X】- Davinci Configurator之Port模块配置详解(MCAL配置)

weixin_42412049的博客 2278

【MySQL】MySQL分库分表详解[通俗易懂]

在互联网还未崛起的时代,我们的传统应用都有这样一个特点:访问量、数据量都比较小,单库单表都完全可以支撑整个业务。随着互联网的发展和用户规模的迅速扩大,对系统的要求也越来越高。因此传统的MySQL单库单表架构的性能问题就暴露出来了。

Eucalyptus's blog 1万+

C++(Qt)软件调试---Windows下Qt使用dump定位崩溃位置(1)

在C++/Qt程序崩溃时,往往很难找到崩溃的原因,如果是稳定复现的问题还好,但是多数情况遇见的问题是随机出现的,这时想要快速找到问题并解决就需要通过dump文件定位崩溃位置。

mahuifa的博客 1万+

倍福PLC--PERSISTENT断电保持数据和BOOT中各文件对应的解析

将D:\TC3程序\TwinCAT Project146\TwinCAT RT(x86)\Plc 文件夹的中三个替换文件复制到:G:\TwinCAT\3.1\Boot\Plc完成替换,如下图。(2) 找到程序所存的路径,编程电脑的D:\TC3程序\TwinCAT Project146路径下,并选择对应系统平台TwinCAT RT(x86)(3) 控制器断电,拔出内存卡,使用读卡器,在编程电脑中打开:(本次测试读卡器为G盘)(5) 开机完成后,TwinCAT自动运行,当前闪灯频率为50ms。

weixin_41883890的博客 2344

MySQL数据库之分库分表方案

数据库之互联网常用分库分表方案 一、数据库瓶颈 1、IO瓶颈 2、CPU瓶颈 二、分库分表 1、水平分库 2、水平分表 3、垂直分库 4、垂直分表 三、分库分表工具 四、分库分表步骤 五、分库分表问题 1、非partition key的查询问题(水平分库分表,拆分策略为常用的hash法) 2、非partition key跨库跨表分页查询问题(水平分库分表,拆分策略为常用的hash法) 3、扩容问题(水平分库分表,拆分策略为常用的hash法) 六、分库分表总结 七、分库分表示例

mclongyi的专栏 1669

YOLOv11 模型改进:利用新型损失函数实现精度跃升(含代码全解析)

在目标检测领域,损失函数的选择直接决定模型的精度上限。某自动驾驶公司将 YOLOv11 原有损失替换为新型损失后,障碍物检测 mAP 提升 10%,夜间场景误检率降低 22%;某物流分拣项目中,采用新损失的 YOLOv11 模型对小包裹的识别准确率从 82% 升至 96%。如果你也在为模型精度瓶颈、样本不平衡问题困扰,这篇教程将带你掌握 YOLOv11 损失函数的进阶技巧,真正帮你在检测性能上实现突破。损失函数是模型训练的“指南针”,它定义了模型“学习的方向”。传统损失(如 BCE、Focal Loss)在

m0_71589036的博客 714

Mysql 分库分表

MySQL单库数据量在5000万以内性能比较好,超过阈值后性能会随着数据量的增大而变弱。MySQL单表数据量是500w-1000w之间性能比较好,超过1000w性能也会下降。

George_huhu的博客 1557

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

mysql面试——分库分表

将数据按照一定的规则分布到多个数据库实例中。每个数据库实例称为一个“分片”(Shard),每个分片存储一部分数据。MySQL 分库分表是应对大规模数据和高并发访问的有效手段,但同时也带来了系统复杂性和维护成本的增加。在实际应用中,应根据业务需求、数据规模和技术团队的能力,合理选择分库分表的策略和工具,并注重数据一致性、查询优化和系统的可扩展性。通过科学的规划和设计,分库分表可以显著提升系统的性能和可用性,为业务的持续发展提供坚实的数据库基础。

2401_86405063的博客 1681

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

MySQL 分库分表,写得太好了!

https://www.toutiao.com/a6603492496779510276/?tt_from=mobile_qq&utm_campaign=client_share&timestamp=1549497188&app=news_article&utm_source=mobile_qq&iid=59568063679&utm_medium=...

azhuyangjun的博客 10万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

MySQL如何分库分表

MySQL如何分库分表,

zhw21w的博客 2244

mysql分库分表

可以分为垂直分片和水平分片。

hsnsnusjs的博客 3472

【进阶篇】MySQL分库分表详解

假设有一个电商网站,随着用户量和订单量的增加,单一数据库难以承载如此庞大的数据量,查询速度也逐渐降低,这时就需要进行分库分表。

日拱一卒无有尽,功不唐捐终入海 2683

Mysql分库分表

Mysql作为做流行的开源数据库,在各大互联网公司被广泛使用。通常我们用一个库就可以满足需求,但是随着业务的增长,数据量和并发量迅速膨胀。Mysql单表数据量到百万以上的时候,查询效率就会受到影响,另外Mysql单库能承受的并发也有限。这个时候我们需要做分库分表,来提高数据库的性能和扩展性

qq_36037795的博客 2820

MYSQL分库分表

分库分表是解决数据库性能瓶颈和存储瓶颈的关键技术,主要包括垂直拆分和水平拆分两种形式。垂直拆分通过按字段分离不常用数据或业务模块来提高性能,而水平拆分则通过按行分散数据来突破单表容量限制。实施时需考虑数据量、增长速度、查询性能等指标,并选择合适的拆分策略(如范围分片、哈希分片)。文章详细介绍了MySQL分库分表的实现方案(应用层实现、中间件实现),以及分布式ID生成、跨库查询、分布式事务等挑战的解决方案,最后通过电商订单系统和社交平台的实战案例展示了具体应用。

lengxia0的博客 970

MySQL之分库分表

MySQL之分库分表

weixin_52690231的博客 1142

MySQL 分库分表实战

MySQL 分库分表是一种有效的数据库优化技术,可以提高数据库的性能、扩展性和可用性。在实际应用中,我们需要根据业务需求和数据特点选择合适的分库分表策略和实现方式,进行合理的数据库设计和代码实现,并进行性能测试和监控运维,以确保系统的稳定运行。

Honmaple的博客 1206

MySQl高级篇-分库分表(为什么需要分表?什么时候分库分表)

分库分表是在海量数据下,由于单库、表数据量过大,导致数据库性能持续下降的问题,演变出的技术方案。

ShockChen7的博客 3996

Mysql分库分表实战(一)——一文搞懂Mysql数据库分库分表

由于业务需要,需要对Mysql数据库进行分库分表,故而最近一直在整理分库分表的相关知识,现手上的工作也告一段落了,抽空将自己最近的学习结果转化为博文,分享给大家,本博文打算做成一个系列的,首先是分库分表的理论知识的了解,其次是基于Java编程语言的分库分表的框架的开发,最后是分库分表的编制。让大家不仅仅从理论上了解mysql的分库分表,通过代码来更深层次的了解,理论是如何落地到实践的。最后非常感...

Amos技术足迹 4万+
上一篇: MySQL主从复制
下一篇: MySQL读写分离
learning_tom
博客等级 码龄1年 157粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值