You need to enable JavaScript to run this app.
导航
常见问题处理
最近更新时间:2024.08.22 10:29:57首次发布时间:2024.08.22 10:29:57

本文介绍在使用 HTAP 功能时常用的问题排查方法。

说明

在排查常见问题时,需要使用高权限账号进行查询。

HTAP TP/AP 分流明细查询

对于分流到 AP 的查询,或尝试分流到 AP 的查询,却回退到 TP 的查询原因,可以通过 performance_schema.htap_routing_table 进行查询。

select * from performance_schema.htap_routing_table;

说明

htap_routing_table 中记录了所在节点的执行信息。当存在多个只读节点,则每个只读节点中仅有部分数据。若要查看所有的执行信息,可通过 Hint 语法,分别指定查询语句在对应的只读节点上执行,详情请参见 Hint 语法使用

HTAP 表数据新鲜度的排查

HTAP 系统保证 RC 隔离级别下的一致性,因此查询可以下发到 AP 侧的一个必要条件是对应表在 AP 与 TP 的数据是一样新的(即 AP 侧数据的新鲜度),通过如下方式可以查看一张表的数据新鲜度。

SELECT * FROM performance_schema.htap_tables WHERE schema_name = 'db' AND table_name =  'table';

字段说明:

字段级别说明
HTAP_SHIPPING_LSN实例级当前实例 AP 系统数据新鲜度已经达到这个点位。
BINLOG_COMMITTED_LSN实例级当前实例 TP 最新点位。
TRX_COMMITTED_LSN表级对应表最后一次提交事务的点位。
TRX_COMMITTED_TIMESTAMP表级对应表最后一次提交事务的时间。

当查询涉及的表均满足 HTAP_SHIPPING_LSN > TRX_COMMITTED_LSN 时,该查询允许下发到 AP。

HTAP 表加载进度查询

对于系统已经加载的表,可以通过查看元数据表来查看加载进度(只读):

SELECT * FROM __bytehtap__.htap_loaded_tables WHERE db_name = 'XXX' and table_name = 'XXX';

字段说明:

字段说明

load_state

加载的状态,目前有以下几种状态:

  • NOLOAD:表尚未开始加载。
  • LOADING:表正在加载中。
  • AVAIL:表已加载完成并可用于查询。
  • UNAVAIL:表不可用。
load_progress加载的进度,取值为 [0, 100]。
is_unload表是否被卸载,取值 01

注意

__bytehtap__ 库后续版本可能会发生变动,请勿依赖该库做业务逻辑。

HTAP 表元数据查询

显示所有 HTAP 表名:

SELECT db_name, table_name FROM __bytehtap__.htap_loaded_tables WHERE load_state = 'AVAIL' AND is_unload = 0;
SELECT db_name, table_name FROM __bytehtap__.htap_tables_meta WHERE is_committed = true;