mysql的分库分表详细介绍

背景

    1、单台数据库是最容易产⽣性能瓶颈的服务组件。数据库连接数资源捉襟⻅肘和数据库因为表多、数据多造成的性能问题。 

    2、单⼀服务中⼼的数据访问压⼒也必然会达到单机数据库的承载上限,所以在进⾏服务化改造的同⼀时间段内,需要对数据库能⼒做扩展的⼯作

    3、Mysql默认的最⼤连接数为100.这个连接连接数可以修改,⽽mysql服务允许的最⼤连接数为16384

 

三个概念——分库、分表、分区

    分库就是将原本由一个数据库承载的数据分摊到多个数据库中,常见的有水平分库和垂直分库。 

    分表就是将原本由一个表承载的数据分摊到多个表中,常见的有水平分表和垂直分表。 

    分区是把⼀张表的数据分成N多个区块,这些区块可以在同⼀个磁盘上,也可以在不同的磁盘上。物理上多表存储,但是逻辑上单表操作。分区通常是数据库可以自己完成。

 

垂直分库和水平分库

    垂直分库:垂直分库针对的是⼀个系统中的【不同业务领域】进⾏拆分, 数据库的连接资源⽐较宝贵且单机处理能⼒也有限,在⾼并发场景下,垂直分库⼀定程度上能够突破IO、连接数及单机硬件资源的瓶颈。 

    ⽔平分库:将单张表的数据切分到多个数据库服务器上去,每个服务器具有相应的库与表,只是表中数据集合不同。⽔平分库能够有效的缓 解单机和单库的性能瓶颈和压⼒,突破IO、连接数、硬件资源等的瓶颈。

垂直分表和水平分表

    垂直分表:也就是“⼤表拆⼩表”,基于【列字段】进⾏的。⼀般是表中的字段较多,将不常⽤的, 数据较⼤,⻓度较⻓(⽐如text类型字段) 的拆分到“扩展表“。垂直分表的核心在于不要让一个表的字段数量过多。

    ⽔平分表:针对数据量巨⼤的单张表(⽐如订单表),按照某种规则(RANGE,HASH取模等),切分到多张表⾥⾯去。但是这些表还是在同 ⼀个库中,所以库级别的数据库操作还是有IO瓶颈。水平分表的核心在于不要让一个表的记录数过多。


数据运维技术 » mysql的分库分表详细介绍