将大表分成多个小表,物理方式隔开。特别适合按范围、列表、哈希或键等规则划分数据。
分区表能提升我们找数据的效率,如果分区表分的不好,就会导致适得其反。
对比单表和分区表加间隙锁
绿色区域就是间隙锁
(单表)
间隙锁已经把这个范围锁住了,其他事务想操作这块区域,只能等待事务处理完。
(分区表)
分区表隔开了间隙锁,不影响事务的插入操作。
分区表过程
- mysql第一次打开分区表,需要访问所有的分区
- server层,认为这是一张表,所有分区共用一把锁
- 引擎层,认为是不同表,锁之后的操作,根据分区表的规则,只访问必要的分区
分区表注意事项
分区表不是分的越细越好,一千万的数据量还只是小表。也不需要提前创建太多分区表。比如按月份分,到了年底再预创建下一年的分区表。