`

数据分库

阅读更多

场景问题 

当系统的访问量达到上百万用户时,系统的性能达到了上限,系统已经做了一轮轮优化:

(1)应用集群

(2)程序优化

(3)数据库优化(SQL优化、集群)

(4)数据缓存

(5)网络优化(加大带宽、多个网卡)

(6)操作系统优化 

 

       但是,系统到了又一个瓶颈,在怎么优化都没有什么效果了。通过性能跟踪,发现是数据库的数据量太大了(几张表都达到了10亿条数据了),而且随着系统的用户访问数据是不停的往上增加。SQL无论怎么优化,数据操作的时间已经达到了一个极限了。

       发现数据库服务器的CPU和IO已经都达到了100%,可见,当前机器的硬件情况已经到达了极限,接下来怎么办呢?有人说,把机器换成一台更加强大的机器,磁盘做磁盘阵列。没错,这些做完后,缓解了性能的瓶颈,但是,随着数据量的增加,性能瓶颈又一次出现了。机器又达到极限了。再换更强大的机器,以此类推。机器真的能无止境的变强下去吗?

       我们看到了应用可以集群,那么数据为什么不能集群呢?了解后才发现,数据的集群不是那么回事,虽然访问的是多台机器了,但数据还是同一份。最终IO的瓶颈还是会出现。

       能不能仿照应用集群那样,有一个HTTP服务器和多个应用服务器。数据也有一个总控制器和多个数据服务器?那就需要将数据进行切分成一块块的,分布在不同的机器上。这样我们可以无限制的进行数据切分,无限制的增加数据服务器。

      这个时候我们又遇到新的问题:怎么切分才是合理的?怎么才能找到对应的数据块呢?下面我们介绍怎么通过数据分库来解决以上的问题。

 

数据分库:基于性能考虑,将数据存放到不同的数据库服务器中,一般可以按两个纬度来拆分数据:

 

垂直拆分:是指按功能模块拆分,比如CRM可以将客户信息、订单信息、产品信息存放在不同的数据库中,这种方式多个数据库之间的表结构不同。

 

水平拆分:而水平拆分是将同一个表的数据进行分块保存到不同的数据库中,比如:可以将客户信息按照不同市分别存放在不同的数据库中,这些数据库中的表结构完全相同。

分享到:
评论

相关推荐

    数据分库分表之二叉树分库分表

    ### 数据分库分表之二叉树分库分表 #### 一、引言与背景 随着互联网技术的快速发展及用户需求的激增,单一数据库系统已难以应对日益增长的数据处理需求。为了提高系统的可扩展性和性能,数据分库分表成为了一种...

    数据分库分表最佳实践.docx

    数据分库分表是互联网行业中解决数据库性能和容量瓶颈的关键技术。随着业务的快速发展,数据库面临的挑战主要包括性能瓶颈和容量限制。这是因为数据库既要保证数据的一致性,又要应对快速增长的数据量,这在单机...

    springboot整合shard-jdbc,实现数据分库分表

    springboot系列教程(十八):springboot整合shard-jdbc,实现数据分库分表

    SpringBoot 2.0 整合sharding-jdbc中间件实现数据分库分表

    SpringBoot 2.0 整合sharding-jdbc中间件实现数据分库分表 SpringBoot 2.0 整合sharding-jdbc中间件实现数据分库分表是指在 Spring Boot 2.0 框架下使用 sharding-jdbc 中间件来实现数据分库分表的技术方案。在这个...

    spring动态数据源+mybatis分库分表

    在现代企业级应用中,随着数据量的增长,单表存储可能会遇到性能瓶颈,这时就需要引入分库分表的策略来优化数据库的性能。"spring动态数据源+mybatis分库分表"是一个针对大型数据库场景的解决方案,它利用Spring框架...

    分库分表,多数据源的切换

    Sharding-JDBC,由阿里开源的轻量级Java框架,它提供了一种透明化的数据分片解决方案。用户无需修改现有的业务代码,只需在配置中指定分片规则,Sharding-JDBC就会在运行时自动处理数据的分片和路由。其主要特点包括...

    基于java的分库数据专利技术在工业离散式数据库中的应用.pdf

    分库数据技术从逆向思维出发,不改变数据物理上的分散存储,而是通过逻辑集中管理,即数据分库分表的策略,有效地解决了上述问题。该技术的应用,不仅能够自动扩展数据存储,还能够适应大型系统中数据量的快速增长。...

    MYCAT分库分表

    ### MYCAT分库分表详解 ...通过以上三个配置文件的详细配置,Mycat能够实现复杂的数据分库分表操作,极大地提高了数据处理效率和系统的整体性能。在实际应用中,还需要根据具体的需求和场景对这些配置进行调整和优化。

    详解 Mycat 2 分库分表(一)绑定资源

    Mycat作为一款开源的分布式数据库中间件,被广泛应用于大型网站和企业的数据分库分表解决方案中,以解决单个数据库无法承载高并发和海量数据的问题。本文将详细讲解Mycat 2如何进行分库分表,并结合提供的SQL测试...

    小滴课堂-海量数据处理商用短链平台大课-资料xiaoecf

    ● 海量数据分库分表+文件存储:Mysql8.0+ShardingSphere多维度分库分表 + 阿里云OSS ● 实时计算+数据处理+存储可视化:Flink1.13 + ClickHouse + HDFS + 数据清洗分层 + Echart可视化数据 ● 分布式链路追踪+监控+...

    Python与MySQL分表分库实战

    1. **设计合理的分库分表策略**:根据业务需求和数据分布特点,选择合适的分库分表策略,如哈希分片、范围分片或复合键分片。 2. **数据库连接管理**:Python中,可以使用`with`语句管理数据库连接,确保资源及时...

    48_你们当时是如何把系统不停机迁移到分库分表的?.zip

    分库是按业务逻辑将数据分布到多个数据库,而分表则是按照某种规则(如哈希、范围等)将单表数据拆分成多个子表。 其次,**不停机迁移**的关键在于**双写机制**,即在新旧系统之间同时写入数据,确保数据的一致性。...

    Python+MySQL分表分库实战

    2. **分库**:分库是将数据分布到多个数据库实例,每个实例可能包含一个或多个表。常见的分库策略有**主键分片**和**范围分片**,前者依据主键值的某种规则分配到不同库,后者类似范围分表,根据特定字段的值范围...

    SpringCobar分库分表

    在现代企业级应用程序开发中,随着数据量的不断增长,单个数据库往往难以承载庞大的业务数据,这使得分库分表成为一种必要的解决方案。本文将深入探讨“SpringCobar分库分表”这一主题,结合SpringMVC、Cobar、...

    Java+Springboot+mybatis+sharding jdbc 实现分库分表

    在现代企业级应用开发中,数据量的增长往往超出单个数据库的处理能力,这时就需要采用分库分表的技术来提高系统的扩展性和性能。本项目基于Java、SpringBoot、MyBatis以及ShardingJDBC实现了一个分库分表的解决方案...

    springmvc分库分表实际例子

    在IT行业中,数据库扩展是解决高并发、大数据量场景下的常见策略,而“分库分表”正是其中一种有效的手段。本示例“springmvc分库分表实际例子”提供了一个基于SpringMVC实现的实战项目,旨在帮助开发者了解如何在...

    MySQL分库分表技术

    在这种背景下,MySQL的分库分表技术应运而生,旨在解决高并发、大数据量场景下的性能挑战。本篇将深入探讨分库分表的原理、应用场景以及实现策略。 **一、为什么要进行分库分表** 1. **性能提升**:当数据库中的...

    多数据源+数据库分库分表

    分库分表采用sharding-jdbc 数据库连接池管理是alibaba的druid-spring-boot-starter 项目使用springboot搭建,junit测试,为了方便实现对数据库操作继承了mybatisplus,为了少些get、set 引入lombok

Global site tag (gtag.js) - Google Analytics