**TiDB升级5.x连接效率问题**
--2021-09-03 春雷
1、现象
情况: 某业务有3套集群
- 新的业务部署了5.0.1 和 5.0.3 版本的集群,
- 老的业务是4.0.2 版本的集群
问题:
但是业务反馈:发现程序连接tidb集群4.0.2时,特别快, 毫秒级;
连接tidb集群5.0.1、5.0.3特别慢, 百毫秒级。
2、具体
2.1、旧程序参数
JDK: 1.6 (1.6.0_45)
驱动包: mysql-connector-java-5.1.6.jar
驱动类: com.mysql.jdbc.Driver
连接url示例: "jdbc:mysql://10.0.0.1:100/db_name?connectTimeout=1000&useUnicode=true&characterEncoding=utf-8&autoReconnect=true
2.2、新程序参数
JDK: 1.8 (1.8.0_231)
驱动包: mysql-connector-java-6.0.6.jar
驱动类: com.mysql.cj.jdbc.Driver
连接url示例: "jdbc:mysql://10.0.0.1:100/
升级了程序的JDK后,连接正常
3、原因
- TiDB 的 4.0.9+、5.0 版本都有一个缺陷,就是一个连接第一执行 SHOW VARIABLES 的时候会很慢,这个问题在 5.1 版本修复了,预计会在 4.0、5.0 的下一个小版本修复。
- JDBC 5.1.6 又有一个问题,是每一个连接在创建的时候都会执行一次 SHOW VARIABLES,跟 TiDB 4.0.9+、5.0 一起用的时候观察到的现象就是连接的建立比较慢
所以用户升级 JDBC 驱动以后,看到变快了。
TiDB 在下一个 4.0、5.0 版本会修复那个问题,到时候用户就不需要升级 JDBC 版本
综上 :为了避免升级连接时间变长,推荐先升级下JDBC版本,再进行数据库版本升级