首页技术文章正文

MySQL数据库如何分区、分表?什么时候考虑使用分区?

更新时间:2021-03-05 来源:黑马程序员 浏览量:

IT培训班

MySQL数据库怎样分区分表?

(1)问题分析:

考官主要想考察学员对MySQL数据的理解和拓展,有没有深入的去理解过数据库,有没有在项目开发中对数据库做过优化。

(2)核心答案讲解:

分区:就是把一张表的数据分成N个区块,在逻辑上看最终只是一张表,但底层是由N个物理区块组成的

分表:就是把一张表按一定的规则分解成N个具有独立存储空间的实体表。系统读写时需要根据定义好的规则得到对应的字表明,然后操作它分表可以通过三种方式:MySQL集群、自定义规则(根据一定的算法(如用hash的方式,也可以用求余(取模)的方式)让用户访问不同的表。)和merge存储引擎。

分区有四类:

RANGE 分区:基于属于一个给定连续区间的列值,把多行分配给分区。

LIST 分区:类似于按RANGE分区,区别在于LIST分区是基于列值匹配一个离散值集合中的某个值来进行选择。

HASH分区:基于用户定义的表达式的返回值来进行选择的分区,该表达式使用将要插入到表中的这些行的列值进行计算。这个函数可以包含MySQL 中有效的、产生非负整数值的任何表达式。

KEY 分区:类似于按HASH分区,区别在于KEY分区只支持计算一列或多列,且MySQL 服务器提供其自身的哈希函数。必须有一列或多列包含整数值。

(3)问题扩展:

什么时候考虑使用分区?

①一张表的查询速度已经慢到影响使用的时候;②sql经过优化;③数据量大;④表中的数据是分段的;⑤对数据的操作往往只涉及一部分数据,而不是所有的数据。

分区解决的问题:

①主要可以提升查询效率。

什么时候考虑分表

①一张表的查询速度已经慢到影响使用的时候;②sql经过优化;③数据量大;④当频繁插入或者联合查询时,速度变慢。

分表解决的问题:

①分表后,单表的并发能力提高了,磁盘I/O性能也提高了,写操作效率提高了;②查询一次的时间短了;③数据分布在不同的文件,磁盘I/O性能提高;④读写锁影响的数据量变小;⑤插入数据库需要重新建立索引的数据减少。

(4)结合项目中使用:

分享到:
在线咨询 我要报名
和我们在线交谈!