hhdb数据库介绍(10-23)
监控
JOIN关系分析
“JOIN关系分析功能”是通过解析查询日志(即操作日志智能分析表格数据)中的SQL语句,绘制出当前业务场景中的表的JOIN关系图,从而让用户对当前业务的JOIN情况有一个全局的掌控。同时提供跨库有交叉JOIN关系图,用户可关注当前跨库有交叉JOIN情况,针对性优化分片方案或改写SQL查询语句。
使用前提
查看JOIN关系图需要满足如下前提:
当前用户拥有“操作日志智能分析”菜单权限
当前计算节点参数“允许JOIN查询”为开启状态
当前计算节点参数“统计SQL执行情况”为开启状态
JOIN关系图
选择一个逻辑库和表名称后,可查看所有JOIN关系图(如下图)或跨库有交叉JOIN关系图。管理平台在每天零点刷新解析结果,也可点击 手动刷新解析结果。
JOIN关系图中的顶点与边说明:
- 顶点表示表,根据表类型分为四种颜色
-
顶点A到顶点B之间的边表示表A与表B之间的所有/跨库有交叉JOIN(根据过滤选项)关系;黄色的边表示表之间存在因关联字段不是分片字段等原因,属于跨库有交叉JOIN的查询语句;
-
表的总JOIN查询次数越多,顶点的圆圈越大;鼠标在顶点上悬停时显示表名称与总所有/跨库有交叉JOIN(根据过滤选项)次数;
-
鼠标滚轮缩放JOIN关系图,图上始终跟随顶点显示总JOIN次数最多的十个表的表名称;
-
暂无JOIN关系的表以散点的形式显示在图上:假设当前选择的逻辑库下的表都没有JOIN查询或跨库有交叉JOIN查询(根据过滤选项)时,则选择的表会以散点形式显示;
-
点击顶点显示JOIN关系详情
跨库有交叉JOIN查询判断逻辑:
不满足以下条件的JOIN查询,被判断为跨库有交叉JOIN查询(如下图):
-
若JOIN查询含两个以上水平分片表,这些表必须分片类型相同,节点分布相同,且关联条件中存在使用各自的分片字段进行等值关联,如a.shardkey_a=b.shardkey_b,这些表被这样的等值关联联通;
-
父子表之间的JOIN查询必须存在用join_key进行关联的等值关联条件;
-
JOIN查询中存在全局表,这些全局表所在节点必须包含所有其他分片表、子表所在的节点;
-
若一个JOIN查询中仅有垂直分片表,这些表的节点都必须在同一个节点中。
注意
管理平台的判断逻辑当前属于简化逻辑,和具体某个版本的计算节点相比,在复杂、特殊的情况下判断结果可能不同。例如以下两类JOIN查询,管理平台统一判断为跨库有交叉JOIN查询,但根据值范围可能会是单库查询:
- 关联字段包含所有表的分片字段,且为等值判断,例如:
select * from table01 join table02 on table01.shardcol=1 and table02.shardcol=2
shardcol为两表的分片字段,若数据值table01.shardcol=1与table02.shardcol=2存储的节点相同,则该JOIN查询为单库查询。
- 两表关联查询时,其中一个表为垂直分片表,且正好存储在另一个表关联查询条件节点上,例如:
select * from table01 join table02 on table02.i=10;
若table02.i=10的所有数据存放在数据节点dn_01上,table01为垂直分片表,且也存储于dn_01上,则该JOIN查询为单库查询。
跨库有交叉与跨库无交叉的区别:
-
跨库有交叉:JOIN查询需要跨数据节点做匹配计算
-
跨库无交叉:JOIN查询需要下发到多个数据节点,但是只需在数据节点内做计算,无需数据节点与数据节点间的交叉计算
JOIN关系详情
点击顶点显示所有/跨库有交叉JOIN关系详情。此文档以所有JOIN关系详情为例,表格信息格式说明如下:
- JOIN关系表:与当前表有JOIN关系的表。表名称颜色根据表类型与顶点颜色一致
点击表名称,跳转到该表的JOIN关系详情页面
- 当前表关联字段:JOIN查询语句中当前表的关联字段。多个关联字段用括号表示如(a,b,c)
关联字段说明:该表中用于JOIN关联查询的字段,例如:SELECT * FROM Persons INNER JOIN Orders ON Persons.id = Orders.oid,则id为Persons的关联字段,oid为Orders的关联字段
-
JOIN关系表关联字段:JOIN查询语句中JOIN关系表的关联字段。多个关联字段用括号表示如(a,b,c)
-
执行情况: 合并显示JOIN关系表、当前表关联字段和JOIN关系表关联字段完全相同的JOIN查询语句。点击【点击展开】查看被折叠的所有JOIN查询语句的执行详情
-
总查询次数:同类JOIN查询语句累加的总查询次数
-
橙色的角标: 此关联字段或此组关联字段没有添加索引,请综合此字段数值分布、字段类型和长度、查询执行频率、查询过滤条件、表中现有索引等因素,决定是否调整索引
点击【点击展开】查看被折叠的所有JOIN查询语句的执行详情。点击计算节点平均时间下的查看详情将跳转到操作日志智能分析页面。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2021-12-03 如何使用模板生成大量的sql语句