跳到主要内容

MAJOR 和 MINOR

描述

该语句用于系统发起存储层合并或转储(冻结)。手动合并和转储支持实例级别和分区级别。

语法

ALTER SYSTEM merge_action;

merge_action:
MAJOR FREEZE
| MAJOR FREEZE TABLET_ID = tablet_id
| MINOR FREEZE [TABLET_ID = tablet_id]
| {SUSPEND | RESUME} MERGE
| CLEAR MERGE ERROR

参数解释

参数描述
MAJOR FREEZE发起每日合并。
MINOR FREEZE发起转储。
{SUSPEND | RESUME} MERGE暂停或恢复每日合并。
CLEAR MERGE ERROR清理合并出错的标记。
MAJOR FREEZE TABLET_ID = tablet_id指定 TABLET ID 合并,即分区级别合并。
TABLET_ID指定分区合并或转储。
LS指定日志流转储。

注意事项

分区与 Tablet 一一对应,在进行分区级合并时,需要注意以下事项:

  • 当对应的分区正在执行实例级合并任务时,无法发起分区级合并。
  • 当对应的分区正在执行自适应调度的合并任务时,无法发起分区级合并。
  • 当合并任务被暂停时,不允许发起分区级合并。
  • 分区级合并会消耗 CPU 及磁盘 I/O。在执行分区级合并操作前,您需要权衡当前用户的资源占用情况,并且当分区级合并命令执行成功后,会出现 CPU、I/O 占用升高的情况。

示例

存储层合并的示例

  • 发起系统的每日合并。

    ALTER SYSTEM MAJOR FREEZE;

存储层转储的示例

  • 发起系统的转储。

    ALTER SYSTEM MINOR FREEZE;
  • 对指定分区进行转储。

    ALTER SYSTEM MINOR FREEZE tablet_id = 1100611139453887;

暂停或恢复每日合并的示例

  • 暂停每日合并。

    ALTER SYSTEM SUSPEND MERGE;

清理合并出错标记的示例

  • 清理合并的出错标记。

    ALTER SYSTEM CLEAR MERGE ERROR;

发起分区级的合并

  1. 查询表的 TABLET ID。

    示例如下:

    SELECT t1.tenant_id, t2.tenant_name, t1.database_name, t1.table_id, t1.table_name, t1.tablet_id, t1.PARTITION_NAME, t1.SUBPARTITION_NAME
    FROM oceanbase.CDB_OB_TABLE_LOCATIONS t1, oceanbase.DBA_OB_TENANTS t2
    WHERE t1.tenant_id=t2.tenant_id
    AND t1.table_name = 'test_tbl1'
    AND t2.tenant_name = 'oracle001';

    返回结果如下:

    +-----------+-------------+---------------+----------+------------+-----------+----------------+-------------------+
    | tenant_id | tenant_name | database_name | table_id | table_name | tablet_id | PARTITION_NAME | SUBPARTITION_NAME |
    +-----------+-------------+---------------+----------+------------+-----------+----------------+-------------------+
    | 1004 | oracle001 | SYS | 500011 | TEST_TBL1 | 200008 | P1 | SP0 |
    | 1004 | oracle001 | SYS | 500011 | TEST_TBL1 | 200009 | P1 | SP1 |
    | 1004 | oracle001 | SYS | 500011 | TEST_TBL1 | 200010 | P1 | SP2 |
    | 1004 | oracle001 | SYS | 500011 | TEST_TBL1 | 200011 | P1 | SP3 |
    | 1004 | oracle001 | SYS | 500011 | TEST_TBL1 | 200012 | P2 | SP4 |
    | 1004 | oracle001 | SYS | 500011 | TEST_TBL1 | 200013 | P2 | SP5 |
    | 1004 | oracle001 | SYS | 500011 | TEST_TBL1 | 200014 | P2 | SP6 |
    | 1004 | oracle001 | SYS | 500011 | TEST_TBL1 | 200015 | P2 | SP7 |
    +-----------+-------------+---------------+----------+------------+-----------+----------------+-------------------+
    8 rows in set (0.012 sec)

    更多视图字段信息,请参见 oceanbase.CDB_OB_TABLE_LOCATIONS

  2. 发起合并。

    示例如下:

    ALTER SYSTEM MAJOR FREEZE TENANT = oracle001 TABLET_ID = 200008;

发起分区级的转储

  1. 查询表的 TABLET ID。

    示例如下:

    SELECT database_name, table_id, table_name, tablet_id, PARTITION_NAME, SUBPARTITION_NAME
    FROM oceanbase.CDB_OB_TABLE_LOCATIONS
    WHERE table_name = 'tbl1';

    返回结果如下:

    +---------------+----------+------------+-----------+----------------+-------------------+
    | database_name | table_id | table_name | tablet_id | PARTITION_NAME | SUBPARTITION_NAME |
    +---------------+----------+------------+-----------+----------------+-------------------+
    | test_db | 500197 | tbl1 | 200067 | NULL | NULL |
    | test_table | 500557 | tbl1 | 200276 | NULL | NULL |
    | test_data | 500658 | tbl1 | 200337 | NULL | NULL |
    | mysql | 500722 | tbl1 | 200365 | NULL | NULL |
    +---------------+----------+------------+-----------+----------------+-------------------+
    4 rows in set (0.277 sec)

    更多视图字段信息,请参见 oceanbase.CDB_OB_TABLE_LOCATIONS

  2. 发起转储。

    示例如下:

    ALTER SYSTEM MINOR FREEZE TABLET_ID = 200067;

相关文档