【 TiDB 使用环境】生产环境
【 TiDB 版本】tidbv6.1.0
【复现路径】做过哪些操作出现的问题
【遇到的问题:多表联合查询慢
【资源配置】2个tidbDB(8核/32G/100G)、3个PD(8核/32G/100G)5个KV(8核/32G/200G(ssd))
【附件:截图/日志/监控】
可以考虑下 Follower Read
https://docs.pingcap.com/zh/tidb/stable/follower-read#follower-read
也可以参考下面这个帖子
1 个赞
由于leader都是负载均衡到所有tikv的,负载已经是打散状态,没有必要读写分离。人为的读写分离,有可能破坏负载均衡的情况,而且follow的读本身就有延迟。tidb的查询和写入要想快,就要调整好并发和索引。
读写分离对分布式数据库意义不大
若表主键为 AUTO_RANDOM,数据在存储时,已经是分散 IO 到多个 TiKV 节点,所以无需考虑读写分离。同时,可引入 tiflash 组件,提高大数据量的查询速度。
tidb是原生的分布式,跟传统关系型不一样,读取的leader已经在各个节点进行了均衡,没有必要做读写分离
读写分离成本其实挺高的,备机的软硬件成本+开发适配,还要考虑数据不一致处理等等场景。
能通过弱读,打散等解决,还是不要考虑读写分离
读写分离是过去单机数据库的无奈之举,当时是分不开写流量,只能勉为其难把读流量分到其他机器,提升下单机数据库的处理能力。TiDB是能把读流量和写流量都均匀的负载到了所有机器,充分利用起来了所有机器,没必要用读写分离。
另外Follower Read 也需要去leader请求下,延迟也是会增加的。