1.定义
分区表通过分区函数,把物理表结构相同的多张表组成逻辑上的一张大表,分区函数包括RANGE、LIST、HASH、KEY、COLUMNS。
2.设计
分区表的主键一定要包含分区函数的列,每张表有自己的索引,从逻辑上看是一张表,但物理上存储在不同文件中。
分区表的索引都是局部,而非全局。也就是说,索引在每个分区文件中都是独立的,所以分区表上的唯一索引必须包含分区列信息,否则创建会报错。
唯一索引使用全局唯一的字符串来保证全局唯一。
3.性能
分区表技术不是用于提升 MySQL 数据库的性能,而是方便数据的管理。
分区表的查询务必使用到分区列作为条件,否则会增加io的次数,性能变差。
在server层,认为这是同一张表,因此所有分区共用同一MDL锁;
在引擎层,认为这是不同表,因此MDL锁之后的执行过程,会根据分区表规则,只访问必要的分区。