`

mysql垂直分区和水平分区

 
阅读更多
原文地址:http://itsoul.iteye.com/blog/777208



数据库扩展大概分为以下几个步骤:
1、读写分离:当数据库访问量还不是很大的时候,我们可以适当增加服务器,数据库主从复制的方式将读写分离;

2、垂直分区:当写入操作一旦增加的时候,那么主从数据库将花更多的时间的放在数据同步上,这个时候服务器也是不堪重负的;那么就有了数据的垂直分区,数据的垂直分区思路是将写入操作比较频繁的数据表,如用户表_user,或者订单表_orders,那么我们就可以把这个两个表分离出来,放在不同的服务器,如果这两个表和其他表存在联表查询,那么就只能把原来的sql语句给拆分了,先查询一个表,在查询另一个,虽然说这个会消耗更过性能,但比起那种大量数据同步,负担还是减轻了不少;

3、水平分区:但是往往事情不尽人意,可能采取垂直分区能撑一段时间,由于网站太火了,访问量又每日100w,一下子蹦到了1000w,这个时候可以采取数据的进行分离,我们可以根据user的Id不同进行分配,如采取%2的形式,或者%10的形式,当然这种形式对以后的扩展有了很大的限制,当我由10个分区增加到20个的时候,所有的数据都得重新分区,那么将是一个的很庞大的计算量;以下提供几种常见的算法:
  哈希算法:就是采用user_id%的方式;
  范围:可以根据user_id字符值范围分区,如1-1000为一区,1001-2000则是另一个区等;
  映射关系:就是将user_id存在的所对应的分区放在数据库中保存,当用户操作时先去查询所在分区,再进行操作;

对于以上几种扩展方式,读写分离主要是操作上的扩展,垂直分区主要是对写入较频繁数据表的分离,水平分区主要是数据分离;
分享到:
评论

相关推荐

    MySQL分区分表方案实践手册

    MySQL的分区主要包括两种形式:水平分区和垂直分区。 - **水平分区(Horizontal Partitioning)**:这是一种基于表的行进行的分区方式,即根据某列的值将数据行划分到不同的分区中。例如,可以根据年份、日期等列的...

    MYSQL 通过分区(Partition)提升MySQL性能

    - **垂直分区(Vertical Partitioning)**:按照列来进行分区,不同的列可以存储在不同的表中。这种方式适用于某些列经常一起使用的情况。 在MySQL 5.1及更高版本中,支持以下几种具体的分区方法: - **Range分区**...

    MySQL交换分区的实例详解

    数据库的分区有两种:水平分区和垂直分区。而MySQL暂时不支持垂直分区,因此接下来说的都是水平分区。水平分区即:以行为单位对表进行分区。比如:按照时间分区,每一年一个分区等。 在MySQL中,分区是可以交换的,...

    MySQL分区和分表技术总结.docx

    MySQL 分区和分表技术总结 MySQL 分区和分表技术是数据库性能优化的重要手段,特别是在大型数据库系统中。以下是 MySQL 分区和分表技术的详细介绍: 什么是分表? 分表是将一个大表按照一定的规则分解成多张具有...

    MYSQL学习资料

    mysql水平分表和垂直分表和数据库分区 sysbench mysql 坚持不懈 sysbench安装和使用 SHOW INNODB STATUS 探秘 体验Innodb with Memcached –安装 数据切分及整合方案 数据库水平切分的实现原理解析 innodb max dirty...

    mysql分区表管理(完整版)

    数据库分区是一种物理数据库设计技术。虽然分区技术可以实现很多效果,但其主要目的是为了在特定的SQL操作中减少数据读写的总量以缩减sql语句的响应时间,同时对于...MYSQL的分区主要有两种形式:水平分区和垂直分区。

    mysql分区

    “mysql分区与分表.docx”可能包含了更深入的MySQL分区和分表技术的细节,包括如何创建和管理分区,以及各种分区策略的案例分析。建议查阅该文档以获取更全面的信息。 综上所述,MySQL分区是一种强大的数据库管理...

    MySQL分区表的最佳实践指南

    MySQL分区表是一种优化大型数据库性能的技术,它将大表逻辑上划分为更小、更易管理的部分,以提高查询速度和数据管理效率。本文将深入探讨MySQL分区表的最佳实践,包括分区的目的、类型、操作示例以及适用场景。 1....

    mysql分表,分区的区别与联系借鉴.pdf

    MySQL中的分表和分区是两种不同的数据库优化策略,它们旨在管理和优化大数据量的表,以提升查询性能和系统效率。 **分表**是指将一张大表拆分成多个小表,每个小表都拥有完整的表结构,包括.MYD数据文件、.MYI索引...

    mysql分表,分区的区别与联系归类.pdf

    分表的常见方法包括垂直分表(按列拆分)和水平分表(按行拆分)。例如,使用Merge存储引擎,可以创建一个总表(如`alluser`),它并不存储实际数据,而是引用多个独立的分表(如`user1`和`user2`)。查询时,通过总...

    MySQL的分区表(PartitionedTable)功能详解

    - **垂直分区(Vertical Partitioning)**:通过分割表的列,将特定列分配给不同的分区。这种方式可以减少表的宽度,适用于数据列较少但行数庞大的场景。 MySQL支持以下几种分区类型: 1. **RANGE分区**:根据列值...

    mysql分表,分区的区别与联系[定义].pdf

    MySQL中的分表和分区是两种不同的数据库优化策略,它们旨在管理和优化大数据量的表,以提升查询性能和系统效率。 **分表**是指将一张大表拆分成多个小表,每个小表都是独立完整的表,拥有自己的.MYD数据文件、.MYI...

    mysql分表和分区的区别浅析

    常见的分表策略包括垂直分表(按列划分)和水平分表(按行划分)。例如,使用Merge存储引擎进行分表,会创建一个总表(如alluser)作为接口,实际数据存储在各个分表(如user1和user2)中。总表并不存储数据,只是一...

    深入理解MySQL核心技术_MYSQL_

    分区通常基于时间、范围或哈希,而分表则涉及垂直分割和水平分割。 8. **复制技术**:MySQL的主从复制是实现高可用性和数据冗余的关键。复制模式有异步、半同步和全同步,了解其工作原理和故障恢复策略至关重要。 ...

    高性能的mysql

    书中会讲解如何通过垂直分区和水平分区(分片)来管理大数据,并提升查询性能。 7. **性能监控与调优**:书中会介绍如何使用性能监视工具,如SHOW STATUS、SHOW VARIABLES和性能_schema,以及如何分析和调整MySQL的...

    MySQL分表和分区的具体实现方法

    MySQL数据库在处理大数据量时,可能会遇到性能瓶颈...垂直分表适用于列多且锁竞争激烈的情况,水平分表和分区适用于数据量大、查询性能要求高的场景,而Merge存储引擎则为分片操作提供了透明性,简化了应用程序的处理。

    一个MySQL分库分表php类

    当一个表数据记录过大时就会出现性能瓶颈,而一般对应的解决办法是要么做分区表,要么分表,分区表就不说了,分表又分为垂直分割和水平分割,具体区 别请自行搜索。一般而言,分库分表属于水平分割,按照一定的规则...

Global site tag (gtag.js) - Google Analytics