MySQL 5.5(InnoDB)的分区策略

MySQL 5.5(InnoDB)的分区策略,mysql,innodb,partitioning,Mysql,Innodb,Partitioning,试图为MySQL 5.5(InnoDB)表实现分区策略,但我不确定我的理解是否正确,或者是否需要在创建分区时更改语法 表“苹果”有10行…列“A”到“H” PK是“A”、“B”和“C”列 列“A”是一个char列,可以标识200万行的组。 我认为列“A”将是一个很好的候选,可以尝试实现一个分区 我在此列中选择并删除,并且可以在不再需要数据时截断分区 我发出了这个命令: 改变餐桌苹果 按键划分(A) 使用此命令查看分区信息后: 从中选择分区名称、表行 信息_SCHEMA.PARTITIONS,其中

试图为MySQL 5.5(InnoDB)表实现分区策略,但我不确定我的理解是否正确,或者是否需要在创建分区时更改语法

表“苹果”有10行…列“A”到“H” PK是“A”、“B”和“C”列

列“A”是一个char列,可以标识200万行的组。 我认为列“A”将是一个很好的候选,可以尝试实现一个分区 我在此列中选择并删除,并且可以在不再需要数据时截断分区

我发出了这个命令: 改变餐桌苹果 按键划分(A)

使用此命令查看分区信息后: 从中选择分区名称、表行 信息_SCHEMA.PARTITIONS,其中表_NAME='Apple'

我看到所有的数据都在分区p0上

我错误地认为MySQL会自动地将分区划分为200万个组

我需要在Alter命令中指定分区的数量吗

我希望这将在一个分区中创建200万行的组,然后在新数据进入时为列“a”创建一个新分区

抱歉,如果这太冗长了。
谢谢-JeffSpicoli

是的,您需要指定分区的数量(我假设默认值是创建一个分区)。按键分区使用内部哈希函数,因此分区不是根据列的值选择的,而是根据从列计算的哈希值选择的。散列函数对相同的输入返回相同的结果,因此,是的,具有相同值的所有行都将位于同一分区中


但是,如果您希望能够删除分区,可能需要按范围分区(因为如果按键分区,您只知道分区中的行间隔均匀,但许多不同的值最终都在同一个分区中)。

是的,您需要指定分区数(我假设默认值是创建一个分区)。按键分区使用内部哈希函数,因此分区不是根据列的值选择的,而是根据从列计算的哈希值选择的。散列函数对相同的输入返回相同的结果,因此,是的,具有相同值的所有行都将位于同一分区中

但是,如果希望能够删除分区,可能需要按范围分区(因为如果按键分区,您只知道分区中的行是均匀分布的,但许多不同的值最终会在同一分区中)