升级 TiDB 版本后,JDBC 调用 SQL 出现结果集拉取阻塞,pipeline_queue_wait 等等待耗时高,除 JDBC 驱动参数外,可调整哪些会话及集群参数优化该问题?
可上调会话 / 全局tidb_distsql_scan_concurrency、tidb_distsql_stream_buffer_size、tidb_stream_concurrency,同步适度调高 TiKV 读池并发与 grpc 流批量大小来降低 pipeline_queue_wait 排队耗时。
优先调大tidb_pipeline_queue_size、减小tidb_max_chunk_size,关闭向量化执行与结果集缓存,按需调高执行并发、放宽查询内存限额,集群侧同步对应配置并调优网络缓冲与刷写延迟,缓解 pipeline_queue_wait 及结果集拉取阻塞。
从 MySQL 迁到 TiDB,如果原来用了自增主键,高并发下会产生写入热点,因为所有写操作都集中在同一个 Region。建议评估下改成 AUTO_RANDOM 或者业务自己生成分布式ID,利用 TiDB 的 Region 自动拆分机制提高写入吞吐。
调大流水线队列、扫描与流处理并发,调整 chunk 大小,关闭结果集缓存与向量化执行,同时优化 TiKV 读池和 GRPC 参数。
可调整会话参数 tidb_max_chunk_size、tidb_init_chunk_size、tidb_distsql_concurrency、tidb_stream_concurrency优化数据分片与流式并发;同时调优集群层面 TiKV 的readpool.unified.max-thread-count、server.grpc-concurrency以及 pipeline 队列相关阈值参数,缓解队列排队与结果集拉取阻塞问题。
用Dumpling导出加Lightning导入比mysqldump快很多。
@BI小z 请问做了那些调整,有效果吗?
此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。