浅谈高性能数据库集群 —— 分库分表

MSSQLServer数据库大量数据按月份分表、存储过程指定时间段跨表分页查询 资源里包含SQL文档:创建数据库和存储过程.sql 生成数据.sql 测试.sql 比较完善的大量数据分表功能代码,包含创建数据库、生成数据、测试结果。适合初学分表者使用。 数据按照每个月创建一个数据表,通过存储过程输入参数,按照指定日期跨表查询数据,并且可以分页查询。 立即下载

点击上方“芋道源码”,选择“置顶公众号”

技术文章第一时间送达!

源码精品专栏

 

来源: https://www.jianshu.com/p/9eadfba9cdaf

最近学习了阿里资深技术专家李运华的架构设计关于分库分表的教程,颇有收获,总结一下。

本文主要介绍高性能数据库集群分库分表相关理论,基本架构,涉及的复杂度问题以及常见解决方案。

分库分表概述

读写分离分散数据库读写操作压力,分库分表分散存储压力

适用场景

类似读写分离,分库分表也是确定没有其他优化空间之后才采取的优化方案。那如果业务真的发展很快岂不是很快要进行分库分表了?那为何不一开始就设计好呢?

按照架构设计的“三原则”(简单原则,合适原则,演化原则),简单分析一下:

首先,这里的“如果”事实上发生的概率比较低,做10个业务有一个业务能活下去就很不错了,更何况快速发展,和中彩票的概率差不多。如果我们每个业务上来就按照淘宝、微信的规模去做架构设计,不但会累死自己,还会害死业务。

其次,如果业务真的发展很快,后面进行分库分表也不迟。因为业务发展好,相应的资源投入就会加大,可以投入更多的人和更多的钱,那业务分库带来的代码和业务复杂问题就可以通过加人来解决,成本问题也可以通过增加资金来解决。

业务分库

业务分表

业务分表概述

带来的问题

垂直分表

增加表操作的次数

水平分表

  • 路由问题

  • 数据库操作问题

实现方法

类似读写分离,具体实现也是“程序代码封装”和“中间件封装”,但具体实现复杂一些,因为还有要判断SQL中具体操作的表,具体操作(例如count、order by、group by等),根据具体操作做不同的处理。

参考

从0开始学架构 —— 李运华

《浅谈高性能数据库集群——读写分离》—— 陈彩华

《架构设计方法初探》 —— 陈彩华

《分库分表、主从、读写分离》



如果你对 Dubbo / Netty 等等源码与原理感兴趣,欢迎加入我的知识星球一起交流。长按下方二维码噢:


目前在知识星球更新了《Dubbo 源码解析》目录如下:

01. 调试环境搭建
02. 项目结构一览
03. 配置 Configuration
04. 核心流程一览

05. 拓展机制 SPI

06. 线程池

07. 服务暴露 Export

08. 服务引用 Refer

09. 注册中心 Registry

10. 动态编译 Compile

11. 动态代理 Proxy

12. 服务调用 Invoke

13. 调用特性 

14. 过滤器 Filter

15. NIO 服务器

16. P2P 服务器

17. HTTP 服务器

18. 序列化 Serialization

19. 集群容错 Cluster

20. 优雅停机

21. 日志适配

22. 状态检查

23. 监控中心 Monitor

24. 管理中心 Admin

25. 运维命令 QOS

26. 链路追踪 Tracing

... 一共 69+ 篇

目前在知识星球更新了《Netty 源码解析》目录如下:

01. 调试环境搭建
02. NIO 基础
03. Netty 简介
04. 启动 Bootstrap

05. 事件轮询 EventLoop

06. 通道管道 ChannelPipeline

07. 通道 Channel

08. 字节缓冲区 ByteBuf

09. 通道处理器 ChannelHandler

10. 编解码 Codec

11. 工具类 Util

... 一共 61+ 篇

目前在知识星球更新了《数据库实体设计》目录如下:

01. 商品模块
02. 交易模块
03. 营销模块
04. 公用模块

... 一共 17+ 篇

源码不易↓↓↓↓↓

点赞支持老艿艿↓↓


ROS2初级面试题汇总 总结和收集了一些关于ros2的问题和解答记录 阅读详情

相关推荐

从零开始:用ADS仿真设计一个2.4GHz Wi-Fi低噪声放大器(含完整电路图)

本文提供了一份详细的ADS软件仿真指南,手把手教你从零开始设计一个2.4GHz Wi-Fi低噪声放大器。内容涵盖核心指标理解、晶体管选型与建模、匹配网络设计、偏置电路集成,并通过S参数仿真、噪声优化及线性度验证等步骤,最终呈现完整的优化电路图,助力射频初学者掌握LNA设计全流程。

weixin_29197835的博客 807

MySQL分区分库分表和分布式集群

数据量大就分表:减少每次查询的数据总量;并发高就分库:把并发请求分散到多个实例中去;分库分表的原理是通过一些 HASH算法 或者工具实现将一张数据表垂直或者水平进行物理切分。

码农兴哥的技术笔记 1626

从DeepMimic到虚拟偶像:用动作捕捉数据训练AI跳舞的完整流程(附Blender插件配置)

本文详细介绍了如何利用DeepMimic的深度强化学习框架,将动作捕捉数据转化为虚拟偶像或游戏角色的舞蹈动作。从核心的模仿学习理念、PyBullet环境搭建、策略网络与奖励函数设计,到数据处理、训练技巧(如参考状态初始化),最后讲解了如何将训练好的AI模型集成到Blender和Unity等工具中,实现从数据到实时驱动角色的完整流程。

weixin_29054399的博客 504

MySQL单库-读写分离集群-分库分表集群-分片算法

随着业务的不断发展,数据库架构也需要不断地调整和优化。单库模式适用于简单、小规模的应用。读写分离模式适用于读多写少的场景,能有效提升读取性能。分库分表模式适用于数据量极大、需要水平扩展的系统。读写分离 + 分库分表组合模式适用于高并发、大数据量的复杂应用,既保证了扩展性,又提升了性能。选择合适的架构模式需要综合考虑业务需求、系统规模、可维护性以及未来的扩展需求。配置主要涉及以下几个步骤,包括安装 MHA 相关组件、配置 MySQL 主从复制、配置 MHA 管理器、以及测试高可用性配置。

2403_88969259的博客 960

EBS开发_创建AP付款

--以下代码于20181002在Tony环境测试通过 /* BEGIN   --mo_global.init('SQLAP');   apps.fnd_global.apps_initialize(user_id => 1110, resp_id => 50597, resp_appl_id => 20003);   --mo_global.set_policy_context(...

蜗牛先生快跑的博客 4767

哈密顿-雅可比不等式:连接最优控制与优化算法的自然物理原理

在控制理论与优化算法之间,存在一个深刻而实用的桥梁。最优控制理论旨在通过设计控制输入,使动态系统在时间维度上达到性能最优,其核心数学工具如庞特里亚金极大值原理和哈密顿-雅可比-贝尔曼方程,为解决连续时间系统的优化问题提供了优雅框架。然而,这些方法在高维非凸问题中面临求解难题。哈密顿-雅可比不等式作为一种松弛方法,通过构造李雅普诺夫函数并验证一个不等式条件,转而寻求性能有保障且易于实现的次优解,其本质是保证系统能量衰减和性能上界。这一原理与耗散性理论紧密相连,体现了自然物理系统(如阻尼振动)中能量耗散的普遍规

weixin_30582943的博客 314

Dubbo数据库分库分表:高性能微服务数据层架构终极指南 [特殊字符]

Dubbo作为Apache顶级开源项目,是一个强大的Web和RPC框架,专为构建企业级微服务架构而设计。在现代分布式系统中,**Dubbo数据库分库分表**技术是实现高性能数据访问层的核心技术,能够有效解决海量数据存储和查询的性能瓶颈问题。 ## 为什么需要Dubbo分库分表? 📊 随着业务规模的不断扩大,单一数据库实例往往无法满足高并发、大数据量的访问需求。Dubbo通过分库分表技术将数据

gitblog_00186的博客 499

OpenClaw 3.13 + Mac mini M4 集成 qmd 记忆存储:qmd embed 卡死 / 报错 sqlite-vec 不可用 终极解决教程

模型加速让 qmd 从国内镜像下载模型,避免网络超时;SQLite 扩展支持:修改 qmd 源码后,Bun 不再使用内置 SQLite,而是调用 Homebrew 安装的,该版本支持接口,可正常加载vec0.dylib向量扩展;OpenClaw 3.13 适配:核心逻辑与 OpenClaw 3.13 的 qmd 记忆调用逻辑完全兼容,无需额外调整;sqlite-vec 加载:qmd 自动通过sqlite-vec包获取vec0.dylib路径,调用完成向量扩展加载,实现高效向量搜索。

wuanxionglidui的博客 1305

谷粒商城のMySQL集群&分库分表

本篇是谷粒商城集群部署篇,搭建MySQL集群以及分库分表实践的个人笔记

西岭千秋雪的博客 1383

OpenStack 2018 年终盘点

目录 文章目录目录前言OpenStack 一年来的成长NovaCinderNeutronIronicCyborgOctaviaKollaMagnumZunKuryr从 OpenStack 到 OpenInfra 前言 这是最好的时代,也是最坏的时代 — — 查尔斯·约翰·赫芬姆·狄更斯《双城记》 年关将至,闲暇之余,回顾我与 OpenStack 的 2018。 NOTE:仅作为个人见解,与公...

烟云的计算 3597

【连接器专题】 EIA-364 系列标准的完整列表

EIA-364 系列标准在电子工业中具有重要的地位,为电子连接器和互连系统的测试和验证提供了统一的、可操作的流程和方法,有助于提高电子产品的质量和可靠性,促进了电子工业的发展

一点硬件 2662

MySQL分库分表实战:MyCAT从配置到落地全攻略

MyCAT 通过「逻辑库 - 集群 - 数据源」三层架构,实现了分库分表的透明化(应用无需修改代码)全局表适合字典表,分片表适合大数据量表,ER 表适合关联查询表分片规则选择至关重要:哈希分片适合均匀分布,范围分片适合按时间 / 区间查询。

专注Java和MySQL领域知识分享 799

Claude桌面端安装失败?Retrying无限重试终极解决方案(亲测有效)

Claude桌面端安装卡在Retrying并非网络问题,而是安装器下载源异常导致。本文提供已验证方案:一条命令即可解决问题🚀

XiaoqiangClub的博客 2350

浅谈高性能数据库集群——分库分表

作者 陈彩华 文章转载交流请联系 caison@aliyun.com 复制代码最近学习了阿里资深技术专家李运华的架构设计关于分库分表的教程,颇有收获,总结一下。 本文主要介绍高性能数据库集群分库分表相关理论,基本架构,涉及的复杂度问题以及常见解决方案。 分库分表概述 读写分离分散数据库读写操作压力,分库分表分散存储压力 适用场景 类似读写分离,分库分表也是确定没有其他优化空间之后才采取的优化...

weixin_34064653的博客 405

pscad IEEE标准系统搭建说明

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

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

开源扫地机拆解:嵌入式、SLAM与全栈机器人工程入门

机器人工程常被视为高门槛领域,但从一台开源扫地机入手,却可以快速理解嵌入式系统的完整闭环。扫地机内部集成STM32主控、电机驱动、传感器融合与RTOS实时调度,是典型的微型机器人载体。其核心价值在于:通过红外、编码器、IMU等多源数据实现状态估计,借助激光SLAM完成定位与建图,再以弓字形路径规划实现全覆盖清扫。从硬件原理图到固件源码,开源项目提供了接近工业级的工程实践资料。无论是学习PID调速、FreeRTOS任务优先级设计,还是部署Cartographer建图算法,扫地机构成了从底层驱动到上层算法的理想

weixin_34342207的博客 460

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

浅谈高性能数据库集群——读写分离[转载]

本文主要介绍高性能数据库集群读写分离相关理论,基本架构,涉及的复杂度问题以及常见解决方案。 1 读写分离概述 读写分离概述.png 基本架构图: 基本架构图.jpg 2 适用场景 适用场景.png 读写分离不是银弹,并不是一有性能问题就上读写分离,而是应该先优化,例如优化慢查询,调整不合理的业务逻辑,引入缓存查询等只有确定系统没有优化空间后才考虑读写分离集群 3 ...

1252661442的博客 1292

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

浅谈分库分表

文章目录前言一、为什么要分库分表1.数数据性能瓶颈的出现2.数据库优化方案对比2.1 重启2.2 SQL与索引2.3 表与存储引擎2.4 架构2.5 数据库配置2.6 操作系统3. 什么时候分表二、分库分表的类型和特点1. 垂直切分2. 水平切分3. 分库分表带来的问题总结 前言 理解分库分表的意义 理解数据切分的不同方式,以及带来的问题与解决方案 通过实际案例掌握MyCat特性与详细配置含义 理解MyCat监控与日志查看 一、为什么要分库分表 随着业务变得越来越复杂,用户越来越多,集中式的架构.

本人是个小小程序员,此博客一是为了激励自己学习,二是为了记录自己的学习历程,三是为了能够及时回顾相关知识。 1299

[分享]浅谈分布式数据库

文章集中整理总结mysql分库分表开源产品,分布式数据库的设计,以及实际应用案例等相关内容,部分附上本文作者实际应用过程中的理解。本文感谢sjdbc,mycat,姜承尧,林涛等文章提供的精彩介绍。 先抛出两个问题 1 基本概念 1 谈数据库分片需要首先确定以下概念 2 分片 1 水平拆分垂直拆分都是什么 2 为什么分表 3 为什么分库 4 分布式事务 5 小结 6 如何自己实现分库分表 7 SO不需

psiitoy的专栏 3万+

浅谈高性能数据库集群 —— 读写分离

本文摘要: 数据库读写分离技术是提升系统性能的关键方案,通过将读操作与写操作分离到不同节点实现负载均衡。文章系统分析了读写分离的原理、实现方式和技术挑战,包括应用层实现、中间件方案和数据库原生支持三种技术路径,详细探讨了数据同步机制、负载均衡策略和故障转移方案。针对数据延迟、一致性保障等核心问题,提出了并行复制优化、智能路由等解决方案,并结合MySQL、PostgreSQL及云数据库实践案例展示了不同场景下的最佳实践。最后从监控运维体系建设、未来智能化发展趋势等方面,为构建高性能数据库集群提供了全面指导。

油墨香^-^的博客 529

浅谈高性能数据库集群——读写分离

1 读写分离概述 读写分离概述.png 基本架构图:   基本架构图.jpg 2 适用场景 适用场景.png 读写分离不是银弹,并不是一有性能问题就上读写分离,而是应该先优化,例如优化慢查询,调整不合理的业务逻辑,引入缓存查询等只有确定系统没有优化空间后才考虑读写分离集群 3 引入的系统复杂度问题 问题一 主从复制延迟 主从复制延迟.png 问题二 分配机制 ...

山山来驰的博客 261

浅谈高性能高并发高可用

整个软件的发展历程是一部软件复杂性对抗史,软件的复杂性分为技术复杂性和业务复杂性,业务复杂性主要是建模和抽象设计,技术复杂性主要是三高(高性能,高并发,高可用)的应对,C端的业务一般以技术复杂性为主,业务复杂性为辅,而B端或者M端的业务通常以业务复杂性为主,技术复杂性为辅。本篇文章主要是从后端研发的视角结合自己多年的B、C端系统建设实践谈下三高系统的建设方法论和实践,希望和大家相互交流,共同进步。

jakeswang的博客 1142
上一篇: 架构设计方法初探
下一篇: 深入理解负载均衡
公众号-芋道源码
博客等级 码龄10年 1634粉丝 377原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值