分区就是将表的数据按照特定规则存放在不同的区域,也就是将表的数据文件分割成多个小块,在查询数据的时候,只要知道数据数据存储在哪些区域,然后直接在对应的区域进行查询,不需要对表数据进行全部的查询,提高查询的性能。同时,如果表数据特别大,一个磁盘磁盘放不下时,我们也可以将数据分配到不同的磁盘去,解决存储瓶颈的问题,利用多个磁盘,也能够提高磁盘的IO效率,提高数据库的性能。在使用分区表时,需要注意分区字段必须放在主键或者唯一索引中、每个表最大分区数为1024;常见的分区类型有:Range分区、List分区、Hash分区、Key分区,
(1)表分区的优点:
① 可伸缩性:
- 将分区分在不同磁盘,可以解决单磁盘容量瓶颈问题,存储更多的数据,也能解决单磁盘的IO瓶颈问题。
② 提升数据库的性能:
- 减少数据库检索时需要遍历的数据量,在查询时只需要在数据对应的分区进行查询。
- 避免Innodb的单个索引的互斥访问限制
- 对于聚合函数,例如sum()和count(),可以在每个分区进行并行处理,最终只需要统计所有分区得到的结果
③ 方便对数据进行运维管理:
- 方便管理,对于失去保存意义的数据,通过删除对应的分区,达到快速删除的作用。比如删除>+ 某一时间的历史数据,直接执行truncate,或者直接drop整个分区,这比detele删除效率更高;
在某些场景下,单个分区表的备份很恢复会更有效率。