实用SQL-查询数据库中所有的buffer表及其级别

对于一些热点表,为了避免读放大问题,会对其设置为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)

111