mysql(3)

分库分表

分库:将数据库中的数据分散到不同数据库上,可以垂直分库和水平分库。

1.垂直分库:把单一的数据按照业务进行划分,不同的业务使用不同的数据库,进而将一个数据库的压力分散到多个数据库。

2.水平分库:将同一个表按照一定规则拆分到不同的数据库中,每个库可以位于的服务器上,实现了水平扩展,解决了单表存储和性能瓶颈的问题。

分表:对单表进行拆分,可以垂直拆分和水平拆分。

1.垂直拆分:对数据表列的拆分,把一张字段比较多的拆分成多张表。

比如:将用户表中的一些信息单独抽出来形成一张表。

2.水平分表:对数据表行的拆分,将一张行数太多的表拆分为多张表,解决单一表数据量过大的问题。

使用情况:

1.单表数据量达到千万以上,数据库读写速度降低

2.数据库中数据占用空间越来越大,备份时间越来越长

3.应用的并发量太大

带来的问题:

1.无法使用join:同一个表分布在不同数据库中,无法使用join,只能手动操作,查询到一个数据后,再由此数据查询其他数据。

2.事务问题:单个表在不同的数据库中,单个操作设计多个数据库,数据库自带的事务已经无法满足我们的要求

3.分布式id:在分库之后,数据分布在各个数据库中,数据库的自增主键已经无法满足生成的主键唯一。此时,需要引入分布式id。

Apache ShardingSphere 是一款分布式的数据库生态系统, 可以将任意数据库转换为分布式数据库,并通过数据分片、弹性伸缩、加密等能力对原有数据库进行增强。

相关推荐
隔窗听雨眠几秒前
MySQL三表JOIN执行内核与优化器决策机制
数据库·mysql·sql优化
Decay__1 小时前
SQLServer 索引与 SQL 优化 —— 聚集索引、非聚集索引、覆盖索引、碎片维护与执行计划
运维·数据库·sql·mysql·架构
笃行3502 小时前
【金仓数据库产品体验官】订单增量同步实战:MERGE、OUTPUT 与 IDENTITY 的兼容验证
数据库
星恒随风6 小时前
MySQL 从零入门(六):复合查询详解——多表查询、自连接、子查询与 UNION
linux·服务器·数据库·mysql
无奈笑天下7 小时前
银河麒麟上lsblk命令教程详解
linux·运维·服务器·数据库
xiaoye-duck8 小时前
《C++ 项目:手写大模型接入 SDK》会话模块整合:内存 SessionManager 与 DataManager 持久化联动
开发语言·数据库·c++·语言模型
AllData公司负责人9 小时前
AI大模型数据开发底座系列说明书:AllData集成DB-GPT开源项目建设 AI 多模态分析底座,涵盖模态解析/智能大屏/MCP 扩展!
大数据·数据库·人工智能·gpt·数据采集·数据接入·模态解析
隔窗听雨眠9 小时前
MySQL进程卡死的定位思路与恢复实践
mysql·故障排查·数据库运维
2601_967987379 小时前
Sqlite参考手册
数据库·python·sqlite·api·教程
隔窗听雨眠10 小时前
Oracle日志体系分层结构与故障定位路径
数据库·oracle·故障排查