何谓垂直切分,即将表按照功能模块、关系密切程度划分出来,部署到不同的库上。例如,我们会建立定义数据库workDB、商品数据库payDB、用户数据库userDB、日志数据库logDB等,分别用于存储项目数据定义表、商品定义表、用户数据表、日志数据表等。
何谓水平切分,当一个表中的数据量过大时,我们可以把该表的数据按照某种规则,例如userID散列,进行划分,然后存储到多个结构相同的表,和不同的库上。例如,我们的userDB中的用户数据表中,每一个表的数据量都很大,就可以把userDB切分为结构相同的多个userDB:part0DB、part1DB等,再将userDB上的用户数据表userTable,切分为很多userTable:userTable0、userTable1等,然后将这些表按照一定的规则存储到多个userDB上。
分库的优点是:
1. 数据库所能承载的数据量、数据处理能力都将遭遇瓶颈。
2. 实现简单,库与库之间界限分明,便于维护,缺点是不利于频繁跨库操作,单表数据量大的问题解决不了。
3. 各库直接高耦合的情况下,不建议分库。
4. 根据数据库中数据量的瓶颈所在,并综合项目的业务类型进行考虑如何分库(垂直切分、水平切分)
5. 在执行分库分表之后,由于数据存储到了不同的库上,数据库事务管理出现了困难。如果依赖数据库本身的分布式事务管理功能去执行事务,将付出高昂的性能代价;如果由应用程序去协助控制,形成程序逻辑上的事务,又会造成编程方面的负担。
6. 在执行了分库分表之后,难以避免会将原本逻辑关联性很强的数据划分到不同的表、不同的库上,这时,表的关联操作将受到限制,我们无法join位于不同分库的表,也无法join分表粒度不同的表,结果原本一次查询能够完成的业务,可能需要多次查询才能完成。
7. 额外的数据管理负担和数据运算压力。额外的数据管理负担,最显而易见的就是数据的定位问题和数据的增删改查的重复执行问题,这些都可以通过应用程序解决,但必然引起额外的逻辑运算,例如,对于一个记录用户成绩的用户数据表userTable,业务要求查出成绩最好的100位,在进行分表之前,只需一个order by语句就可以搞定,但是在进行分表之后,将需要n个order by语句,分别查出每一个分表的前100名用户数据,然后再对这些数据进行合并计算,才能得出结果。
垂直切分:
适合数据库是因为表太多而造成海量数据,并且项目的各项业务逻辑划分清晰、低耦合,那么规则简单明了、容易实施的。
水平切分:
数据库中的表并不多,但单表的数据量很大、或数据热度很高,应该选择水平切分,除了在分割时要对分割的粒度做好评估,考虑数据平均和负载平均,后期也将对项目人员及应用程序产生额外的数据管理负担。
分表的优点是:
1. 能解决单表数据量大的问题,但是缺点却恰恰是不便于维护。
2. 分表实现起来比较复杂,特别是分表规则的划分,程序的编写,以及后期的数据库拆分移植维护。
相关推荐
### MySQL分库分表策略详解 #### 一、场景与系统分析 在互联网技术日新月异的今天,数据量的快速增长对数据库系统的性能提出了更高要求。为了应对这些挑战,许多企业选择实施分库分表策略。分库分表是指将原来单一...
课程内容丰富,涵盖了 MySQL 架构演变升级、分库分表的优缺点、常见策略及中间件介绍等多个方面。 课程首先介绍了分库分表的背景,包括 MySQL 数据库架构演变历史以及业务增长下数据库性能优化思路。接着深入探讨了...
### MySQL分库分表与分片理论概念解析 #### 一、引言 在现代互联网应用中,随着用户量的增长和数据规模的扩大,单一数据库往往难以满足高性能、高可用性的需求。在这种背景下,数据库的分库分表技术应运而生。本文...
在现代大数据和高并发的背景下,数据库技术的发展不断推陈出新,NewSQL与MySQL的分库分表中间件成为了应对挑战的重要手段。本分析主要探讨这两种技术,并深入理解它们在实际应用中的优缺点。 首先,让我们来了解...
MySQL 架构的演变主要经历了从单机单库到主从架构,再到分库分表的三个阶段。 1. **单机单库**:早期简单的应用,所有数据存储在一个MySQL实例中。随着数据量和读写操作的增加,单机难以承受,且一旦服务器故障,...
### 数据库技术与应用专场——58同城MySQL分库分表实践 #### 一、基本概念 在数据库领域,为了应对大数据量所带来的挑战,通常会采用分库分表的技术手段来提升系统的整体性能和可扩展性。以下是几个关键概念: - ...
数据库分库分表是一种解决数据库压力的有效策略。当读写分离、索引和缓存等优化手段不足以应对高负载时,可以考虑数据库拆分。拆分分为垂直拆分和水平拆分。 垂直拆分是根据业务逻辑将表划分到不同的数据库中,使得...
这里我们将深入探讨MySQL的主从复制、日志解析以及Mycat分库分表的相关知识。 首先,MySQL的主从复制是实现数据冗余和故障恢复的关键技术。主从复制通过将主服务器上的数据更改同步到从服务器,确保了数据的一致性...
它以proxy形式工作,接收SQL请求,根据数据分布规则转发到相应的后台分库,并合并结果,为应用提供单一数据库的体验。cobar的应用场景包括高并发环境和大规模数据存储。 TDDL(Table Data Layer)是淘宝开源的...
软件架构-mysql 终极解决方案分库分表 在互联网架构中,软件架构-mysql 终极解决方案分库分表是非常重要的。今天,我们一起讨论 sharding-Sphere,以及数据库相关的分库分表的初体验,了解为什么要分库分表,分库...
总的来说,MySQL主从架构和分库分表是应对数据库高可用性、性能优化和大数据存储的重要策略。在设计和实施这些方案时,需要充分考虑业务需求、资源限制以及运维复杂性,选择最适合的架构和工具。
在实际应用中,主从架构和分库分表是解决数据库扩展性和高可用性的常见手段,而通过binlog处理数据一致性问题则是一种有效策略。理解这些概念和技术对于构建高可用、高性能的数据库系统至关重要。
6. **分库分表**:当单个数据库无法处理大量数据或高并发时,会采用分库分表技术,将数据分散到多个数据库或表中。这涉及垂直分割(按列)、水平分割(按行)以及分片策略的选择。 7. **其他高级主题**:除了以上...
总之,MySQL数据库的分表分库优化是应对高并发、大数据量场景的有效手段。通过对数据的合理拆分,可以显著提升系统的响应速度和可扩展性。在实施分表分库时,需根据业务需求和现有架构进行综合考虑,确保既能优化...
理解分库分表的优缺点,以及如何设计合理的分片策略,对于应对高并发、大数据场景至关重要。 微服务架构是一种将单一应用程序拆分为一组小的服务,每个服务都在自己的进程中运行,服务之间通过API进行通信。Spring ...
了解不同引擎的优缺点,有助于选择适合应用场景的引擎。 5. **查询优化**:DBT3基准测试中包含复杂查询,学习如何使用EXPLAIN分析查询执行计划,找出性能瓶颈并优化SQL语句。 6. **并发处理**:在决策支持系统中,...
这些引擎各有优缺点,可以根据应用需求选择合适的。 链接MySQL通常指的是通过编程语言或者客户端工具与MySQL服务器建立连接。例如,使用Java的JDBC驱动,Python的pymysql库,或者命令行工具mysql。连接过程涉及设置...
09-分库备份后mysql如何分库恢复实战.avi 10-mysql进程-状态-在线修改参数重要知识讲解.avi 11-mysqlbinlog命令介绍及实战讲解.avi 12-mysqldump-master-data参数答疑详解.avi 第六部 MySQL主从复制原理及实战部署...