分区
写在前面的话
本文是本学渣因为考试需要写的一篇总结,只总结了需要考察的考点,所以可能有的内容引申的不多,请见谅。
一、本节考点
- 分区干嘛用的,为什么要分区
- 有哪几种分区的方式
- 根据example选择partition key
- 选择key的原则是什么,原则分区的原则
- 破例的原因是什么
二、分区是什么
分区就是将一个大表根据条件分割成若干个小表,将一张表从物理上划分到不同的介质中,但是逻辑上还是原来的那张表,是一种数据分组方式。
分区能够提高并发性和并行性,从而增强可伸缩性
提供了一种数据管理的方法
三、分区的类型
根据分区键(Partition Key)的类型分类,分区有以下几种类型:
- 哈希分区:按散列决定记录分在哪个分区
把不同的列随机平均的分布到不同的物理环境,达到提高备份和恢复的效率,降低错误回滚压力(为了管理) - 范围分区:将数据基于顺序范围映射到每一个分区,这个范围是你在创建分区时指定的分区键决定的。这种分区方式是最为常用的。
- 列表分区:把不同的列存到不同的分区中
(分区大家都一样,只不过用的分区键不同所以分为三类分区
第一个使用的分区键是哈希函数,
第二个使用的是行的范围,比如每十行作为分区键,
第三个使用的是列,但是分区键只能是一列)
四、如何选择分区键、选择原则是什么
本节也对应第三个考点:根据example选择partition key
哈希分区:根据分区键,可以快速找到记录,但对范围检索没有任何帮助。更接近于非数据驱动的循环分区,用于负载均衡,提高并发的能力。
范围分区:比较常用,非常适合处理历史数据,例如按照时间划分。
列表分区:查询时,通常只查询某几个字段,或者,某几个字段通常一起被查询。但,每个分区都必须有主键,因此会造成冗余。
五、破例的原因
此处老师的原话是:要知道根据分区键选择什么分区,但是凡事都有破例的,那这个原因是啥
按什么字段进行分区要整体考虑,因为:更新分区键会引起移动数据,应该避免这么做
分区确实可以满足高速检索的需求,但是当某个数据库存在并发压力,有访问集中性的问题(高并发插入)的时候,过于细致的分区就会极大影响插入效率。此时就不可以根据显而易见的分区键来进行分区了。