主键查询为啥会这么慢

【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】
主键查询语句为啥会这么慢

SELECT

  cast(
    aes_decrypt(xxx
      from_base64(xxx),
      'xxx',
      'xxx'
    ) AS char
  ) AS contact1,
  还有三个字段...
  resident_city,
  resident_address,
  company_name,
  company_city,
  company_address
FROM
  a
WHERE
  account_id = 220812010051109359
LIMIT
  1;

表结构

![image|690x253](upload://6YV9V4wrzHWa4gH1cRak54jweIo.png)

执行计划:

id              	task	estRows	operator info                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            	actRows	execution info                                                                                                                                                                                                                                                     	memory 	disk
	Projection_7    	root	1      	cast函数加解处理	1      	time:358.8ms, loops:2, Concurrency:OFF       	45.0 KB	N/A
	└─Limit_8       	root	1      	offset:0, count:1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        	1      	time:358.8ms, loops:2                                                                                                                                                                                                                                              	N/A    	N/A
	  └─Point_Get_10	root	1      	table:a, handle:220812010051109359               	1      	time:358.8ms, loops:1, Get:{num_rpc:1, total_time:358.7ms}, total_wait_time: 357ms, tikv_wall_time: 358.5ms, scan_detail: {total_process_keys: 1, total_process_keys_size: 462, total_keys: 1, get_snapshot_time: 9.16µs, rocksdb: {block: {cache_hit_count: 14}}}	N/A    	N/A

单表查询慢应该是集群整体延迟高,集群资源不足了吧


看着资源够用,也不是每次都慢,偶尔慢

dashboard看一看你的p99 延迟呢

https://docs.pingcap.com/zh/tidb/stable/sql-statement-trace#trace

trace一下看看,感觉和

这个问题有点像。

拓扑结构啥样

TiKV Detail → Unified Read Pool 和thread cpu 里unified read pool看下


现在初步怀疑是磁盘资源不足,业务低谷期变配一下,再看看

tikv 2台?

执行计划没有问题。是不是资源不够

类型转换没走索引?id加个引号试试?

都已经是Point_Get,这个是没有问题的,不存在类型隐式转换

1 个赞

id是bigint

我昨天磁盘变配了一台,哪个指标可以看到是否有改善,看io utils和之前一样

看磁盘io延时监控

抱歉,刚才冒进了,没认真看。看了下执行计划和SQL分析截图,看不出什么问题。这个语句有多次执行么?

能不能试一试把select 那部分只拿出一个字段,不要做函数计算?有没有可能是函数里面的解密和encode比较慢呀


在io密集时,很明显