【博客文章2026】MySQL 9.x数据库管理技巧7:分区和分区性能 Author: Bo Tang 1. 创建RANGE分区: 登录Mysql客户端,查看innodb_file_per_table变量的值:
创建一个range分区表,共分4个分区。值分段点是“100”、“300”、“500”和剩余更大的值:
使用“show table status”命令,查看分区表的信息:
2. 向RANGE分区表填充数据: 使用“insert into ... select”命令,填充数据:
查看一下InnoDB中每个分区所对应的一个文件:
因为每个分区的数据量不尽相同,Range分区的每个文件很难做到大小一致。下面查看数据字典中的分区信息:
3. 查看RANGE分区表在不同查询场景中的性能(分区裁剪): 看看SQL执行计划中分区裁剪操作是否会发生:
可以看到,范围查询场景中,Range分区的分区裁剪也发生了。
下面查看数据字典中的分区信息:
发现分区类型已经从“Range”改变为“Key”。查看一下InnoDB中每个分区所对应的一个文件:
因为Key分区表的每个分区的数据量都是基本相同的(对应于Oracle数据库的HASH分区),Key分区的每个文件基本上大小一致。 5. 查看KEY分区表在不同查询场景中的性能(分区裁剪): 看看SQL执行计划中分区裁剪操作是否会发生:
可以看到,单值查询场景中,Key分区表的分区裁剪的确发生了:查询语句只访问了p2这个分区,而不是整个表。下面再执行范围查询:
6. 删除分区操作: 无法删除Key分区表的分区:
查看一下InnoDB中每个分区所对应的一个文件:
查看文件:
|
GMT+8, 2026-3-23 21:37 , Processed in 0.074423 second(s), 21 queries .