程序连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