【 TiDB 使用环境】生产环境
【 TiDB 版本】
【复现路径】
【遇到的问题:问题现象及影响】
查询某个表很慢:select * from tab_A limit 10 (80万行)
我想重新组织表,不知道语法是怎样的?
【附件:截图/日志/监控】
【 TiDB 使用环境】生产环境
【 TiDB 版本】
【复现路径】
【遇到的问题:问题现象及影响】
查询某个表很慢:select * from tab_A limit 10 (80万行)
我想重新组织表,不知道语法是怎样的?
【附件:截图/日志/监控】
ANALYZE TABLE tab_A
explain analyze table tab_A
但是按说没有where条件的limit查询,不应该太慢才对。可以explain analyze select * from tab_A limit 10 拿一下执行计划看看是慢在哪一步
gc时间设置过长也会慢哦,会扫描过多无用的key
没有重新组织表,慢就找慢的原因就好了
这个表show table XXX regions 看看region数量,tidb评估数据量更适合参考regions
ANALYZE TABLE
重新组织按以下步骤:
create 新表 like 旧表;
insert into 新表 select * from 旧表;
drop table 旧表;
rename 新表 to 旧表;
先排查下tikv节点是否都正常
麦迪你说的重新组织表具体是想做什么,你的目的应该是解决慢查询吧。
如果是解决慢查询,可以通过 Dashboard 界面找到这条SQL,然后查看对应的执行计划信息,应该很快就可以定位到原因。
感觉是想重新组织索引?
重新组织表是想重建还是分析表?
你执行 explain analyze select * from tab_A limit 10提出执行计划看下
不加条件过滤查询有啥意义?
1、 建新表,插数据,rename,删旧表
2、 手工compact, 可以使用大佬写的脚本
ops/tidb-compact.py · wencycool/something_for_tidb - Gitee.com
alter table tab_A engine=innodb;
tidb肯定不支持这个
用etl工具将数据抽取到一个新表
重命名一下表名,然后重新抽取一下数据,然后再重命名回去。
重新建个表吧,索引和主键都加的合理一点,再不行就得看看你的某些参数设置的是不是有问题,是不是在全表扫描