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;
发起分区级的合并
-
查询表的 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。
-
发起合并。
示例如下:
ALTER SYSTEM MAJOR FREEZE TENANT = oracle001 TABLET_ID = 200008;
发起分区级的转储
-
查询表的 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。
-
发起转储。
示例如下:
ALTER SYSTEM MINOR FREEZE TABLET_ID = 200067;