案例:
简单购物系统暂设涉及如下表:
1.产品表(数据量10w,稳定)
2.订单表(数据量200w,且有增长趋势)
3.用户表 (数据量100w,且有增长趋势)
以mysql为例讲述下水平拆分和垂直拆分,mysql能容忍的数量级在百万静态数据可以到千万
垂直拆分(按数据库表服务器拆分):
垂直拆分是指,将一个属性较多,一行数据较大的表,将不同的属性拆分到不同的表中,以降低单库(表)大小,达到提升性能的目的的方法,垂直切分后,各个库(表)的特点是:
(1)每个库(表)的结构都不一样
(2)一般来说,每个库(表)的属性至少有一列交集,一般是主键
(3)所有库(表)的并集是全量数据
解决问题:
表与表之间的io竞争
不解决问题:
单表中数据量增长出现的压力
方案:
把产品表和用户表放到一个server上
订单表单独放到一个server上
水平拆分(按数据逻辑服务器拆分):
水平切分是指,以某个字段为依据(例如uid),按照一定规则(例如取模),将一个库(表)上的数据拆分到多个库(表)上,以降低单库(表)大小,达到提升性能的目的的方法,水平切分后,各个库(表)的特点是:
(1)每个库(表)的结构都一样
(2)每个库(表)的数据都不一样,没有交集
(3)所有库(表)的并集是全量数据
解决问题:
单表中数据量增长出现的压力
不解决问题:
表与表之间的io争夺
方案:
用户表通过性别拆分为男用户表和女用户表
订单表通过“已完成”和“完成中”拆分为“已完成订单”和“未完成订单”
产品表 未完成订单放一个server上
已完成订单表盒男用户表放一个server上
女用户表放一个server上(女的爱购物)
推荐教程:http://www.tuicool.com/articles/fYVBN32
相关推荐
MySQL 数据库在面对大规模数据存储时,为了保持良好的性能和可管理性,常常需要对表进行拆分,即垂直拆分和水平拆分。这两种拆分策略分别针对数据的不同维度进行优化。 **垂直拆分** 垂直拆分是基于列的拆分方式,...
又拍网通过垂直拆分和水平拆分的结合,以及合理的数据分配算法,成功地解决了照片分享社区的数据库压力问题,为其他类似服务提供了有价值的参考经验。在不断变化的技术环境中,持续优化数据库架构,以适应业务增长和...
本篇笔记主要探讨了MySQL数据库的拆分技术,包括CAP原则、可扩展性原则以及垂直拆分和水平拆分的实践。 首先,CAP原则是分布式系统设计的基础,它指出任何分布式系统只能同时满足一致性(C)、可用性(A)和分区...
常见的拆分方式包括水平拆分和垂直拆分。 ##### 水平拆分 水平拆分是指将一张大表按照某种规则拆分成多张表,每张表包含原表的一部分数据。这种拆分方式能够有效减少单一表的数据量,从而提高查询速度。 - **拆分...
7. **数据分片**:将冷热数据进行水平拆分,遵循最近最少使用(LRU)原则,以优化访问速度。 8. **统计查询优化**:禁止直接运行COUNT(*)统计大数据表,采用更高效的统计方法。 ##### 命名规范 1. **字符限制**:...
随着图书数量和用户量的增长,数据库需要具备良好的扩展性,如垂直分割(将表拆分到多个服务器)和水平分割(将数据分布到多个表)。 11. **错误处理和日志记录**: 为了追踪和解决可能出现的问题,系统应记录...
分布式MySQL数据库中间件是应对大数据量、高并发场景下的解决方案,它通过将单一数据库扩展到多个物理节点,实现数据的水平或垂直拆分,以提高系统的处理能力和可用性。在这个主题中,我们将深入探讨分布式MySQL...
MySQL数据库设计与优化是数据库管理中的重要环节,它关乎到系统的性能、稳定性和可扩展性。本讲座由叶金荣分享,主要涵盖了多个关键方面,包括规范、基础规范、命名规范、库表规范、字段规范、索引规范以及开发环境...
MySQL 数据库在面对高并发场景时,需要采取一系列优化措施以确保系统稳定性和性能。以下是一些关键的优化策略: 1. **短距离**:优化数据传输路径,减少数据库访问延迟。 - **页面静态化**:对于不常变化的页面,...
垂直拆分和水平拆分是解决单表数据量过大的常用手段。垂直拆分是指按照功能将表分散到不同的数据库或表中;水平拆分则是将数据按照某种规则分布到多个表或数据库中,以此减少单表数据量,提高查询效率。 5. 系统级...
9. **扩展性**:随着数据量的增长,可以通过分区、索引优化、垂直拆分和水平拆分等方法提升性能。 10. **社区支持**:MySQL有一个庞大的开发者社区,用户可以在论坛、Stack Overflow等平台上找到问题的解决方案,...
为了克服性能瓶颈,MySQL采取了多种策略,例如水平扩展(Sharding)和垂直扩展(Scaling),以及引入缓存机制(如InnoDB Buffer Pool)来优化读写效率。同时,MySQL也在增强其对大数据分析的支持,如支持复杂查询和...
6. 垂直和水平拆分:根据业务需求,将数据分离到不同的数据库或表中。 7. 使用读写分离:主库处理写操作,从库处理读操作,提高并发性能。 8. 调整数据库参数:根据服务器硬件和工作负载调整数据库配置,如缓冲池...
mysql分库分表,水平拆分和垂直拆分,水平拆分后如何路由 MySQL 索引使用的注意事项 left join,right join,inner join 说说分库与分表设计 分库与分表带来的分布式困境与应对之策(如何解决分布式下的分库分表,...
Mycat是一种流行的数据库中间件技术,支持分库分表,主要用于解决数据库水平拆分的问题。下面是对Mycat数据库中间件技术的总结: 数据库切分理论 数据库切分是指将大型数据库分成多个小型数据库的过程。这种技术...
MySQL数据库设计技巧是数据库管理员和开发人员在构建高效、可靠且可扩展的数据库系统时必须掌握的核心技能。本文将深入探讨几个关键知识点,帮助你优化MySQL数据库的设计。 1. 正确选择数据类型:理解每种数据类型...
- **垂直拆分与水平拆分**:理解这两种不同的数据库扩展方式及其优缺点。 6. **复制与集群** - **主从复制**:理解复制的工作原理,配置和故障恢复。 - **MySQL集群**:了解NDB Cluster和Group Replication,...
30. **垂直分表和水平分表的区别**:垂直分表是将表拆分成多个表,每个表包含原表的一部分列;水平分表则是将表按行分成多个表。它们有助于提高性能和可扩展性。 #### 四、复制与备份 31. **MySQL复制**:MySQL...