简单主键等值查询sql在生成执行计划耗时很长

版本 6.1.7
问题:内存打满
现象:出现很多慢查询,一条简单的主键/唯一索引等值查询,在生成执行计划的时候耗时很长,但是实际去执行很快,这是啥情况,怎么排查一下(select 1和set也是很慢)

mysql> desc SELECT
    ->   dept_id,
    ->   dept_name,
    ->   dept_level,
    ->   leader_id,
    ->   leader_name,
    ->   count,
    ->   parent_id,
    ->   count_all,
    ->   child_count,
    ->   hrbp_uids
    -> FROM
    ->   corp_dept
    -> WHERE
    ->   (dept_id IN ('xxxxx'));
+-------------------+---------+------+-----------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| id                | estRows | task | access object                           | operator info                                                                                                                                                                                                                                                                                                                                     |
+-------------------+---------+------+-----------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Projection_4      | 1.00    | root |                                         | popo_im_info.corp_dept.dept_id, popo_im_info.corp_dept.dept_name, popo_im_info.corp_dept.dept_level, popo_im_info.corp_dept.leader_id, popo_im_info.corp_dept.leader_name, popo_im_info.corp_dept.count, popo_im_info.corp_dept.parent_id, popo_im_info.corp_dept.count_all, popo_im_info.corp_dept.child_count, popo_im_info.corp_dept.hrbp_uids |
| └─Point_Get_5     | 1.00    | root | table:corp_dept, index:PRIMARY(dept_id) |                                                                                                                                                                                                                                                                                                                                                   |
+-------------------+---------+------+-----------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

mysql> SELECT   dept_id,   dept_name,   dept_level,   leader_id,   leader_name,   count,   parent_id,   count_all,   child_count,   hrbp_uids FROM   corp_dept WHERE   (dept_id IN ('xxxx'));
+---------------+-----------+------------+-----------+-------------+-------+------------+-----------+-------------+-----------------------------------------------------------------------------------------------+
| dept_id       | dept_name | dept_level | leader_id | leader_name | count | parent_id  | count_all | child_count | hrbp_uids                                                                                     |
+---------------+-----------+------------+-----------+-------------+-------+------------+-----------+-------------+-----------------------------------------------------------------------------------------------+
| xxxx | G83       |          4 | G5593     |             |   103 | D099114002 |       146 |           1 | [""] |
+---------------+-----------+------------+-----------+-------------+-------+------------+-----------+-------------+-----------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql>

还有set命令也是

甚至是select 1

1.连接验证 → 2. SQL 解析 / 生成执行计划(优化器)→ 3. kv引擎取数据 → 4. 返回结果
第二步卡 第三步飞快
生成执行计划以来内存。
最佳实践 要求停掉swap。检查有没有启用,内存不足使用swap。
另外 show processlist 查看有没有阻塞。

关闭swap是标配

show processlist没有阻塞

如果是tidb节点的内存和cpu 打满,出现这种情况也符合逻辑

内存打满基本就卡住了,执行什么都慢

会不会是bug导致的

所有的tidb节点资源都使用满了?找个资源利用率相对较小的执行下看看呢。

统计信息正在梳理过程中吗

如果资源耗尽的话是有可能拖慢正常的语句

检查一下tidb组件的cpu和内存资源情况