2

我有一个超过允许分区数(1024)的 MySql 表。

我使用按值分区(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个表可以同时有一个列表分区和范围分区吗?

谢谢!!!

4

1 回答 1

1

不,您不能让一张表同时按 LIST 和 RANGE 进行分区。

您可以有 SUBPARTITIONS,但前提是主分区是 LIST 或 RANGE(选择一个),而子分区是 HASH 或 KEY(选择一个)。

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

于 2013-10-31T20:22:07.590 回答