大漠孤烟
(Ti D Ber Gj Skl5n G)
1
【问题描述】:查询速度问题,在mysql中查询,一般不超过1ms,在tidb中查询,时间为7ms(在建立连接的情况下初次查询有时超过30ms)。
【 TiDB 使用环境】生产环境
Tidb:3pd,3kv,3db
Tidb:无写入,
Mysql:单机,无写入
数据记录:520万条记录
【 TiDB 版本】v8.3.0
【 查询语句】:
select * from business_msg where sign_number=‘17747715421’;
【表结构】
表结构:
CREATE TABLE business (
人如其名
(人如其名)
2
就你发的这一个执行计划来看应该不太具有代表性,这个里面耗时最多的是get_snapshot时间,应该当时raft租约到期等待选主过程。如果频繁的出现这种get_snapshot慢的情况,需要查看静默region是否被频繁的唤醒了,或者磁盘是否存在一些写入瓶颈等等。
最好多发几次explain analyze执行计划看看,主要瓶颈在哪里。一般情况下点查1-3ms能完成。
有猫万事足
4
mysql能解决的问题不用上tidb。
总共才520w条。2000w都不到,正好是mysql的理想数据范围内。
这个数据量考虑分布式属于过度设计。
就像随手开门前还要先考虑一下国际形势一样。十分多余。
再多2个数量级,到5.2亿,再考虑分布式。
2 个赞
大漠孤烟
(Ti D Ber Gj Skl5n G)
6
补充一下dump信息
dump.txt (258.2 KB)
大漠孤烟
(Ti D Ber Gj Skl5n G)
7
不能以不变的眼光看问题吧,我们现在是520w,后面1年就有可能过千万。
我们现在有的业务数据已经是每天都过5000w了,mysql完全扛不过来。
现在是要看是否能把查询速度提上来。我们也考虑多个方案,现在是比较哪个方案更好。看看tidb是否可以解决我们的问题
1 个赞
大漠孤烟
(Ti D Ber Gj Skl5n G)
8
我们是在虚机上部署的,和mysql基本上一样的环境,硬盘配置应该是只高不低。主要是查询差距太大了。mysql一般都是1ms内返回,估计平均响应时间是0.7ms。即便是高并发情况下(2000qps)也能做到1ms返回。如果查询速度还不如mysql,那tidb在某些地方还是不能做到平替mysql。不知道我还能提供哪些信息,能帮我解决瓶颈问题
MrSylar
( Mr.Sylar)
9
table-range-scan 想对比 mysql,TiDB 比 mysql 应该是预期的。只有 point get 能差不多接近 mysql 的效率。响应时间不那么复合 TiDB 的定位,特别当前只有几百万数据
小龙虾爱大龙虾
(Minghao Ren)
10
打开监控 disk-performance 面板,看下磁盘响应时间和吞吐量
大漠孤烟
(Ti D Ber Gj Skl5n G)
11
这个没看,我们是直接ssh过去,我找运维帮忙看一下,不过可以确定的是:这个机器在查询的时候,除了必要的监控,基本上没跑啥程序,就是单独的用来测试数据库的,新机器,环境问题可以忽略。
小龙虾爱大龙虾
(Minghao Ren)
12
你这是抖动,你看不是每次都那么慢,跟磁盘有关,分布式数据库对磁盘和网络的要求高
大漠孤烟
(Ti D Ber Gj Skl5n G)
14
我用我们线上程序跑测试,连续请求每次都是7-8ms,第一次用时更长,达到35ms(我们程序50ms超时,35ms实际上已经是第二次了)。我们线上的mysql才1ms。这个差距实在是太大了
小龙虾爱大龙虾
(Minghao Ren)
16
还有如果上生产不要选 8.3 版本,选一个 LTS 版本
大漠孤烟
(Ti D Ber Gj Skl5n G)
17
可以,你这边可以提供一下相关命令吗?我是centos,你想查哪些数据,可以发命令,我统一回复一个txt文件,你看行不?
小龙虾爱大龙虾
(Minghao Ren)
18
通过中控机(就是你执行 tiup 安装命令那台机器)执行 tiup cluster display <cluster_name> 获取集群拓扑,把这个发下,然后结果中有个 Grafana url,通过这个登录到 Grafana(默认密码 admin/admin) ,查看 disk-performance 面板,选择 TiKV 机器地址
大漠孤烟
(Ti D Ber Gj Skl5n G)
20
在红框时间段(我执行explain analyze)没有其他的写入,也没有其他读取