从json字段取值慢

【 TiDB 使用环境】生产环境
【 TiDB 版本】v6.5
【复现路径】查询从json字段取值慢
【遇到的问题:问题现象及影响】

从json字段里面取具体值就会很慢


单独取这个字段就很快

执行计划.txt (3.6 KB)

【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】

set session tidb_executor_concurrency=15 再试试呢?

1 个赞

收一下 clinic

多次执行稳定复现么?看执行计划是一样的,会不会是其他操作造成的抖动?

这里不是执行计划不稳定的问题,是在从json里面获取具体数据的时候慢,很稳定

json字段多大?刚好我这边也是v6.5版本,可以脱敏发一下,我这边试试

如何评估json字段多大

:thinking:就是这个字段里包含了多少内容?或者这个字段的值长度多少?

按1楼的说法,把并发度调大一点,效果好不好呢?


加大并发,没有效果

1 个赞

字段里面的值,配置并不确定,有的可能有这个列,有的可能没有这个列值,就是可以key values 字段,例如 {col:111 ,col2,:112 ,col3:113 } 类似这样的,都是数值类型的values

你这字段数据很多有1m吗
json

应该没有1m,数据之类的应该在kb之内吧,在where条件的限制下,查询结果条数2000多条数据,select列表单独整个json字段,查询整个json很快25ms,见帖子最上面的图片,但是要把json内的具体值拿出来需要1.5s

我认为这里并不是整个集群的问题,只是从json里面取值慢,整个集群的性能还是可以的

1 个赞

试试把 https://docs.pingcap.com/zh/tidb/v8.2/system-variables#tidb_opt_projection_push_down-从-v610-版本开始引入 这个打开看

1 个赞

我感觉是你json里计算引起的

是的就是从json字段里面取值慢