tidb集群遇到大量的查询请求,io读非常高,重启整个集群tikv的IO读无法下降

昨天的问题已经解决,原因是有一张600万的业务表的健康度不高,业务侧大量的查询使用此表进行关联查询。对此表进行analyze table table_name统计信息收集后,tikv的io read立刻就降下来。

涉及到需要调整的参数如下:

--  1、打开收集信息的自动收集功能:
mysql> show variables like 'tidb_enable_auto_analyze';
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| tidb_enable_auto_analyze | ON    |
+--------------------------+-------+
1 row in set (0.00 sec)

-- 2、调整tidb_auto_analyze_ratio参数,由原来的0.7调整为0.3,指的是当表中超过 30% 的行被修改时,触发自动 ANALYZE 更新。

mysql> show variables like 'tidb_auto_analyze_ratio';
+-------------------------+-------+
| Variable_name           | Value |
+-------------------------+-------+
| tidb_auto_analyze_ratio | 0.3   |
+-------------------------+-------+
1 row in set (0.00 sec)

-- 3、修改为北京起始时间,代表从凌晨的00点到次日的08点,这段时间进行自动收集

mysql> set global tidb_auto_analyze_start_time='00:00 +0800';
Query OK, 0 rows affected (0.01 sec)

mysql> set global tidb_auto_analyze_end_time ='08:00 +0800';
Query OK, 0 rows affected (0.03 sec)