OB 4.3.5 分区表创建全文索引后无法再扩充分区

NotSupportedError: (1235, 'alter partition operation on table with fulltext/multivalue index not supported')

在分区表上建立全文索引后,在 OBD 开发工具中 该表不再显示分区信息。
(目前全文索引给人的感觉像是GLOBAL的)
想问问后续有计划支持分区的修改吗? :pleading_face: :face_in_clouds:

1 个赞

@论坛小助手

根据文档库中的信息,OceanBase 数据库目前确实存在对某些索引类型的操作限制。针对您的问题,以下是详细解答:

1. 问题分析

  • 您提到在分区表上创建全文索引后,无法再扩充分区,并且遇到了错误 (1235, 'alter partition operation on table with fulltext/multivalue index not supported')
  • 根据错误信息,这表明 OceanBase 数据库当前不支持对带有全文索引或多值索引的分区表进行分区修改操作。

2. 原因解释

  • 全文索引和多值索引在实现上具有特殊性,可能涉及全局数据结构(如倒排索引)。因此,当这些索引存在于分区表上时,数据库需要确保数据一致性,而目前的技术实现尚未支持对这类表的分区动态调整。
  • 此外,您提到在 OBD 开发工具中该表不再显示分区信息,这可能是由于全文索引的特性导致系统将其视为一个整体(类似于全局索引的行为)。

3. 官方支持计划

  • 关于后续是否支持分区修改的问题,目前检索到的文档中并未明确提及具体的开发计划。建议您关注 OceanBase 的官方发布渠道(如版本更新日志、社区公告等),以获取最新的功能进展。
  • 如果此功能对您的业务至关重要,您可以向 OceanBase 社区提交功能需求(Feature Request),以便开发团队评估并优先考虑实现。

4. 可能的解决方案

在当前版本下,如果您需要扩充分区,可以考虑以下变通方案:

方案 1:重建表

  • 删除全文索引。
  • 扩充分区。
  • 重新创建全文索引。

示例代码如下:

-- 假设表名为 `partitioned_table`
ALTER TABLE partitioned_table DROP INDEX fulltext_index;

-- 扩充分区
ALTER TABLE partitioned_table ADD PARTITION (PARTITION p_new VALUES LESS THAN (TO_DATE('2024-01-01', 'YYYY-MM-DD')));

-- 重新创建全文索引
CREATE FULLTEXT INDEX fulltext_index ON partitioned_table(column_name);

方案 2:使用非分区表

  • 如果分区功能并非必须,您可以考虑将数据存储在非分区表中,并通过其他方式(如逻辑分片)管理数据分布。

5. 总结

根据现有文档信息,OceanBase 数据库当前不支持对带有全文索引的分区表进行分区修改操作。建议您根据实际需求选择合适的变通方案,并持续关注官方发布的功能更新。

如有进一步疑问,请随时联系 OceanBase 的人工答疑团队以获取更多帮助。

检索到的文档如下:

  1. 5000 ~ 5999
  2. 分区索引
  3. 0001 ~ 3999
  4. 并行 DML
  5. 4000 ~ 4499
  6. 创建索引
2 个赞

你好,咨询了相关同学,该需求后续有计划实施。目前版本还未敲定

1 个赞