程序连tidb,概率性报SQLSTATE[HY000]: General error: 9002 TiKV server timeout和SQLSTATE[HY000]: General error: 9002 TiKV server timeout,并且都是同一张表,并且都是select报错。单独把sql copy出来到命令行下运行,非常非常的慢,但是能跑出来。
举例说明:
mysql> desc test;
+-------+-----------------+------+------+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-----------------+------+------+---------+----------------+
| id | int(4) unsigned | NO | PRI | NULL | auto_increment |
| ids | varchar(4) | NO | | 0 | |
+-------+-----------------+------+------+---------+----------------+
2 rows in set (0.00 sec)
mysql> select * from test;
+----+-----+
| id | ids |
+----+-----+
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
+----+-----+
3 rows in set (0.00 sec)
mysql> select * from test where ids in (2,3); //非常慢
mysql> select * from test where ids in ('2','3'); //快
select * from test where ids in (2,3); 这个非常慢。
估计是in里面的值当成了int型,而表字段是varchar型,在执行过程中,做了类型转换,in里面的值越多越慢。
估计是in里面的值当成了int型,而表字段是varchar型,在执行过程中,做了类型转换,in里面的值越多越慢。
估计是in里面的值当成了int型,而表字段是varchar型,在执行过程中,做了类型转换,in里面的值越多越慢。
转载请注明
作者:海底苍鹰
地址:http://blog.51yip.com/tidb/2505.html