1.什么是分区表
分区表顾名思意就是将一张表拆分成多个区块。一个分区表在底层由多个物理子表组成,但逻辑上任然是一张表。分区表通过某种规则将表拆分成多个区块。
使用分区表需要注意以下几点:
1)一个表最多只能有1024个分区
2) MySQL5.1中,分区表达式必须是整数,或者返回整数的表达式。在MySQL5.5中提供了非整数表达式分区的支持。
3)如果分区字段中有主键或者唯一索引的列,那么多有主键列和唯一索引列都必须包含进来。即:分区字段要么不包含主键或者索引列,要么包含全部主键和索引列。
4)分区表中无法使用外键约束
5)MySQL的分区适用于一个表的所有数据和索引,不能只对表数据分区而不对索引分区,也不能只对索引分区而不对表分区,也不能只对表的一部分数据分区。
2. 分区表得原理
分区表上的操作按照下面的操作逻辑进行:
select查询:
当查询一个分区表时,分区表先打开并锁住所有的底层表,优化器先判断是否可以过滤部分分区,
然后再调用对应的存储引擎接口访问各个分区的数据。
insert操作:
当写入一条记录时,分区层先打开并锁住所有的底层表,然后确定哪个分区接收这条记录,再将记录写入对应底层表。
delete操作:
当删除一条记录时,分区层先打开并锁住所有的底层表,然后确定数据对应的分区,最后对相应底层表进行删除操作
update操作
当更新一条记录时,分区层先打开并锁住所有的底层表,m