对于一些热点表,为了避免读放大问题,会对其设置为buffer表,调整表的合并策略(table_mode),这类表多了后需要统一管理,需要统计数据库中哪些表是设置了table_mode以及设置的table_mode的级别,下面是查询这类场景的SQL小技巧
-- 创建6张表
create table t0(id int);
create table t1(id int);
create table t2(id int);
create table t3(id int);
create table t4(id int);
create table t5(id int);
-- 对其中5张表分别调整合并策略
alter table t1 set table_mode='normal';
alter table t2 set table_mode='queuing';
alter table t3 set table_mode='moderate';
alter table t4 set table_mode='super';
alter table t5 set table_mode='extreme';
-- 用基础库查看表的类型
obclient [test]> select tenant_id,table_id,table_name,table_type,table_mode,(table_mode & 0xff) AS table_mode_1 from oceanbase.__all_table where table_name in('t0','t1','t2','t3','t4','t5');
+-----------+----------+------------+------------+------------+--------------+
| tenant_id | table_id | table_name | table_type | table_mode | table_mode_1 |
+-----------+----------+------------+------------+------------+--------------+
| 0 | 500011 | t0 | 3 | 66048 | 0 | -- 未设置合并策略
| 0 | 500006 | t1 | 3 | 66048 | 0 | -- 设置了normal(默认值)合并策略,和未设置状态一样
| 0 | 500007 | t2 | 3 | 66049 | 1 | -- queuing
| 0 | 500008 | t3 | 3 | 66051 | 3 | -- moderate
| 0 | 500009 | t4 | 3 | 66052 | 4 | -- super
| 0 | 500010 | t5 | 3 | 66053 | 5 | -- extreme
+-----------+----------+------------+------------+------------+--------------+
6 rows in set (0.004 sec)