select query_time, query, user
from information_schema.cluster_slow_query -- 检索全部 TiDB 节点的慢查询
where is_internal = false
and user = "test"
order by query_time desc
limit 2;
1 个赞
我们这边发生这个故障的时候,占内存高的SQL并发也非常高,导致TiDB Server OOM.定位到问题后SQL也优化好了
把tikv和tidb-server单独部署吧
新导入的数据是插入新表还是已经存在的表?如果是插入已经存在的表,且表数据量非常大的情况下,收集统计信息会消耗大量内存,可能会导致OOM.
https://docs.pingcap.com/zh/tidb/stable/statistics#统计信息简介
因为 ANALYZE 语句是开启了自动 ANALYZE 后 TiDB 自动执行的,使用以下 SQL 语句生成 DROP STATS 的语句并执行:
SELECT DISTINCT(CONCAT('DROP STATS ', table_schema, ‘.’, table_name, ‘;’)) FROM information_schema.tables, mysql.stats_histograms WHERE stats_ver = 2 AND table_id = tidb_table_id;
针对这个查询可以把tidb目录下的slow.log清理下
1 个赞
你这个配置10亿不到的数据即使是混合部署也不应该资源不够啊
tidb和tikv争抢内存导致的
可以试试下面的解决办法:
-
如果确认 OOM 时是系统在收集和加载统计信息的过程中消耗太多内存。
-
可以指定采样率、指定只收集特定列的统计信息、减少
ANALYZE
并发度等方式减少内存使用。 -
v6.1.0 以后引入了系统变量
tidb_stats_cache_mem_quota
对统计信息的内存使用进行限制,引入了系统变量tidb_mem_quota_analyze
控制 TiDB 更新统计信息时的最大总内存占用。
-
之前就让你重点排查慢查询,你不信。
此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。