为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【 TiDB 使用环境】
v6.1.0(v5.4.1)
【概述】 场景 + 问题概述
CREATE TABLE dashboard_dataset
(
dataset_id
bigint(20) NOT NULL AUTO_INCREMENT,
user_id
varchar(100) NOT NULL,
category_name
varchar(100) DEFAULT NULL,
dataset_name
varchar(100) DEFAULT NULL,
data_json
text DEFAULT NULL,
create_time
timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
update_time
datetime DEFAULT NULL,
type
varchar(100) DEFAULT NULL,
jobUUid
varchar(100) DEFAULT NULL,
PRIMARY KEY (dataset_id
) /*T![clustered_index] CLUSTERED */,
KEY user_id
(user_id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=71472179902385
CREATE TABLE dashboard_user
(
user_id
varchar(50) NOT NULL,
login_name
varchar(100) DEFAULT NULL,
user_name
varchar(100) DEFAULT NULL,
user_password
varchar(100) DEFAULT NULL,
user_status
varchar(100) DEFAULT NULL,
PRIMARY KEY (user_id
) /*T![clustered_index] NONCLUSTERED */
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
CREATE TABLE dashboard_user_role
(
user_role_id
bigint(20) NOT NULL AUTO_INCREMENT,
user_id
varchar(100) DEFAULT NULL,
role_id
varchar(100) DEFAULT NULL,
PRIMARY KEY (user_role_id
) /*T![clustered_index] CLUSTERED */,
KEY user_id
(user_id
),
KEY role_id
(role_id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=70447245620785
CREATE TABLE dashboard_role_res
(
role_res_id
bigint(20) NOT NULL AUTO_INCREMENT,
role_id
varchar(100) DEFAULT NULL,
res_type
varchar(100) DEFAULT NULL,
res_id
bigint(20) DEFAULT NULL,
permission
varchar(20) DEFAULT NULL,
PRIMARY KEY (role_res_id
) /*T![clustered_index] CLUSTERED */,
KEY role_id
(role_id
),
KEY res_id
(res_id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=70471468087217
explain SELECT dataset_id AS id, s.user_id AS userId, dataset_name AS name, data_json AS data, category_name AS categoryName, type AS type, jobUUid AS jobUUid, u.user_name AS userName, u.login_name AS loginName, create_time AS createTime, update_time AS updateTime FROM dashboard_dataset s LEFT JOIN dashboard_user u ON u.user_id = s.user_id WHERE “80566854-c62d-4cfb-bd0d-5d7b2cd8d7e7” IN (“feb29428-0cf4-4bf6-95a5-4c7a8f54d8ee”,“35738ee8-c9be-4d63-acda-694778ad13d2”) OR s.user_id = “80566854-c62d-4cfb-bd0d-5d7b2cd8d7e7” OR dataset_id IN ( SELECT res_id FROM dashboard_user_role ur LEFT JOIN dashboard_role_res rr ON ur.role_id = rr.role_id WHERE ur.user_id = “80566854-c62d-4cfb-bd0d-5d7b2cd8d7e7” AND rr.res_type = ‘dataset’ ) ORDER BY dataset_name
【背景】 做过哪些操作
【现象】 业务和数据库现象
CARTESIAN left outer semi join, other cond:eq(custombi.dashboard_dataset.dataset_id, custombi.dashboard_role_res.res_id)
去掉前面两个or之后就变正常了(两个or在业务中是为了判断是否超级管理员)
【问题】 当前遇到的问题
笛卡儿积导致缓慢
【业务影响】
【TiDB 版本】
【应用软件及版本】
【附件】 相关日志及配置信息
- TiUP Cluster Display 信息
- TiUP CLuster Edit config 信息
监控(https://metricstool.pingcap.com/)
- TiDB-Overview Grafana监控
- TiDB Grafana 监控
- TiKV Grafana 监控
- PD Grafana 监控
- 对应模块日志(包含问题前后 1 小时日志)
若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。