DOCUMENTATION: https://dev.mysql.com/doc/refman/8.0/en/partitioning.html
简单介绍
上图的CREATE TABLE部分是我们常用的建表语句,没什么特别的。
下半部分是按 范围分区的语句,可以看到是按照 store_id来分的。
总的来说,类似分库分表。但是没分区分表好,限制太多了。当然有些特殊需求,这个还是可以的。
应用场景
1.表太大
有时候一些操作没法一下子放到内存中,或者只有最近的几行数据用到,其他几百万行都是历史数据
2.易维护
3.物理分区
4.避免特殊瓶颈
1.innoDB的单个索引互斥访问
互斥访问:innoDB是按照索引加的锁,有时候锁等待时间会比较长
2.ext3文件系统的inode锁竞争
5.方便备份
限制
1.按主键,唯一索引列分区
如果是按主键或者唯一索引列进行分区的,那么所有的主键和唯一索引列都应该包含进来
2.无法使用外键约束
3.update分区列
如果要更新分区列的话,需要删除原分区的数值,然后再在新分区插入,会比较麻烦