你在什么场景下用到了 DDL ?
新上功能需要新建表,新建字段;
提升效率新增索引;
DDL 任务的执行是模式有什么规律么?例如周期一批处理 DDL 任务,还是租户自行提交 DDL 变更任务。哪类 DDL 任务是你任务急需提升执行效率的语句,能描述一下具体痛点场景么?
新增字段和新增索引。大表的话可能会很慢
你觉得应该如何提升 DDL 的并发执行能力?
是不是可以新增关键字,让他在后台跑,同时可以hint指定并发度之类的。。。
你觉得 DDL 还需要在哪些层面上做优化?
同上
你explain analyze 执行下看看, 可能是explain执行计划有偏差,3000W数据过滤60W+就全表扫不太对
SELECT DISTINCT a.ti_jgywlb check_value FROM tcsjsjg a
UNION ALL
SELECT ‘TGZX’ check_value COLLATE gbk_bin FROM dual
先试一下
都是和pd节点来进行交互的,pd来管理tikv各个节点之间的状态
拓扑图在发一下吧,这个说的不太清楚,其实主要看看时候不是tidb和tikv有混布,混布的话,看下内存的使用情况。。。
[image]
哪有20240501。。。我瞎了?
tikv不支持一个节点配置多个目录,tiflash才支持
P20240501这个分区的stats healthy是啥样的,看着你应该这个分区统计信息收集成功了
如果不想region合并可以把enable-cross-table-merge关掉,然后把“max-merge-region-keys”和“max-merge-region-size”调整的大一点,merge-schedule-limit这个参数应该已经算小了,感觉有影响可以再改小一点。。。
分页的话,如果是从返回很多数据中抽取一部分数据返回,多表 Join 的分页语句,如果过滤条件在单个表上,内查询语句必须走覆盖索引,先分页,再 Join
范围的话,可能需要在对应字段上加上索引。如果已经有索引,可以考虑根据对应字段建立分区,走分区裁剪试一下。
你这种需要指定表或者列的排序格式是utf8mb4_general_ci啊,但是系统表tables他的默认排序格式不是这个。。。。
而且系统表不支持修改表结构
收集以下表的统计信息吧,这个执行计划问题太大,直接差点把你tikv干死了。。。。
要查询的数据量多吗?是汇总类需求,还是要展示很多数据?
应该还是gc的bug,有些节点的gc清理有问题,导致数据量一致,但是占用空间大
临时解决方案:可通过禁用 gc.enable-compaction-filter,并重启集群。
永久解决方案:升级 TiDB 集群版本,永久解决。