MySQL表可以有不同类型的分区吗?

时间:2013-10-31 20:16:30

标签: mysql partitioning

我的MySql表超过了允许的分区数(1024)。

我按值使用分区(LIST):

ALTER TABLE phplist_usermessage ADD PARTITION (PARTITION p14 VALUES IN (14))

结果:

EXPLAIN PARTITIONS SELECT * FROM phplist_usermessage;   

看起来像:

p14,p160,p161,p177,p183,p184,p185,p186,p191,p193,p204, ...... , p1287

是否可以(通过运行ALTER TABLE ... REORGANIZE)通过RANGE创建1个分区,该分区将保存值的范围(例如从14到1000),同时保持分区值为p1001,p1002,...(对于值> 1000)?

1个表是否可以同时按范围分区列表和分区?

感谢!!!

1 个答案:

答案 0 :(得分:1)

不,你不能让一个表被LIST和RANGE分区。

您可以拥有SUBPARTITIONS但仅当主要分区是LIST或RANGE(选择一个)时,子分区是HASH或KEY(选择一个)。

如果您使用SPIDER存储引擎,那么实现LIST和RANGE混合的唯一方法就是使每个分区都位于MySQL的另一个实例上,其中表格可以通过您想要的任何方式进一步分区。但恕我直言,SPIDER存储引擎仍处于试验阶段,它会给网络请求带来大量开销。