首页 > 数据库 >数据库分库分表-水平分片与垂直分片

数据库分库分表-水平分片与垂直分片

时间:2023-02-01 19:34:48浏览次数:72  
标签:分库 数据源 数据库 分片 分表 数据

水平分片与垂直分片

垂直分片:

​ 按照业务维度将表拆到不同的数据库中,专库专用,分担数据库压力

​ 缺点:单表数据量大时,无法解决数据库访问慢的问题

水平分片:

​ 按照某种规则,将数据拆分到多张表中,理论上突破了数据量瓶颈

​ 缺点:可能导致数据存放不均匀面对如此散乱的分库分表之后的数据,应用开发工程师和数据库管理员对数据库的操作变得异常繁重就是其中的重要挑战之一。他们需要知道数据需要从哪个具体的数据库的分表中获取。能够正确的运行在单节点数据库中的SQL,在分片之后的数据库中并不一定能够正确运行。例如,分表导致表名称的修改,或者分页、排序、聚合分组等操作的不正确处理。跨库事务也是分布式的数据库集群要面对的棘手问题。

常见的分库分表产品: Sharding Sphere

如何设计数据分片方案

1、取模分片

​ id%10 = 1 --> database 1 分片键

​ id%10 = 2 --> database 2

​ 优点:数据存放比较均匀

​ 缺点:扩容需要大量的数据迁移

2、按照范围分片

​ 1月份 --> database 1

​ 2月份 --> database 2

​ 优点:扩容不需要数据迁移

​ 缺点:容易发生数据倾斜

3、根据业务场景,灵活制定分片策略

​ 整体按照范围分片,保证扩容时,数据不需要迁移;范围内按照取模分片,使数据分布均匀

分库分表需要解决的问题

​ 主键唯一性

​ 分布式事务

​ sql 路由

​ 结果归并

​ 表连接查询

为何要分库分表

阿里提出,尽量不要分库分表;数据文件大于2G,数据量大于500w

原因:给业务带来复杂性,与高内聚低耦合相悖

预估数据的趋势

订单持续高速增长

读多写少的场景 更合适分库分表

预估业务复杂度,sql 变化不大

分库分表与多数据源

关注点在数据源,可以用多数据源切换方案

分库分表,是对sql优化,改写,归并的一系列的解决方案,关注重点在sql语句。

多数据源切换方案分享

1、AbstractRoutingDataSource

2、dynamic-DataSource

总结:

分库分表是最为轻量级的解决方案,面临多种问题;分库分表改变方案时,需要进行大量的数据迁移,需要在实现之前,全面分析项目的业务场景,方案设计周全。

标签:分库,数据源,数据库,分片,分表,数据
From: https://www.cnblogs.com/charler/p/17083942.html

相关文章

  • innodb到底什么时候进行分表操作?
    一,一个技术人常被问到的问题Q:一张表数据量达到多大才需要进行分表的操作?A:一些八股文的说法是,达到xxx条数据就需要进行分表的操作了通常我们会使用一个简单的指标-“数......
  • 千万级数据,如何做性能优化?分库分表、Oracle分区表?
    大家好,我是哪吒,最近项目有一个新的需求,​​按月建表,按天分区​​。不都是分库分表吗?怎么又来个分区?让我们一起,一探究竟,深入理解一下Oracle分区表技术,实现快速入门,丰富个人简......
  • 手把手教你搭建mongodb分片集群
    本章用的自己的电脑win10系统 因为工作上的环境也是win的 就没在虚拟机上玩 (ps:其实上面环境都大同小异)在MongoDB(版本6.xx)中,分片是指将collection分散存储到不同......
  • MySql分库分表
    MySql分库分表分库分表策略当数据量达到一定程度时,我们出于性能考虑就需要将我们存放在同一个数据库中的数据分散存放到多个数据库(主机)上面,以达到分散单台设备负载的效果......
  • MySQL分库分表方案
    1导读各位小伙伴,在目前企业级开发中采用Mysql做为数据库是一个主流选择,而当数据量比较大的情况下,为了支撑项目的正常快速的运行,我们不得不选择对数据库分库分表操作,本章节......
  • 分库分表方案
    一、为什么要进行分库分表当MySQL单表数据量过大,比如超过5千万条的时候,读写性能变得很差。而且常规的优化手段已经不起作用了,比如:SQL调优、添加索引、主从复制、读写分离......
  • MongoDB 部署分片集群
    部署配置服务器:configsvr先生成.conf文件mkdir-p/data/mongodb/configsvrvim/data/mongodb/configsvr/configsvr.confsystemLog:destination:filelogAppe......
  • 海量数据存储Sharding-JDBC分库分表
    文章目录​​1.分库分表简介​​​​1.1.MySQL架构演变​​​​1.2.数据库性能优化思路​​​​1.3.分库分表带来的优点​​​​1.4.分库分表后的六大问题​​​​2.常见分......
  • 《ClickHouse原理解析与应用实践》关于P239[分片规则]错误的地方
     《ClickHouse原理解析与应用实践》关于P239[分片规则]错误的地方 快过年了,坚守到最后一天。刚好开发有新的想法,需要用到ReplacingMergeTree引擎实现去重或删除数据......
  • 【数据库数据恢复】华为云mysql数据库表被truncate,部分表数据被delete的数据恢复案例
    数据库数据恢复环境:华为云ECS,linux操作系统;mysql数据库,实例内数据表默认存储引擎为innodb。数据库故障:在执行数据库版本更新测试时,用户误将本应在测试库测试的sql脚本执......