关联表删除,参数失效

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】: 2.1.10
  • 【问题描述】: 表join 进行删除 ,设置的参数不生效,a 表 一千万 ,join子表 一万;

set @@session.tidb_batch_delete = 1; set @SESSION.tidb_dml_batch_size = 1; DELETE a FROM ods_order_item_base_two a INNER JOIN order_data_difference_temp b ON a.item_no = b.item_no AND b.pay_flag = ‘1’;

问题:transaction is too large

你好。麻烦提供以下信息 :

  1. 完整的报错信息。
  2. 查询以下 GC 的配置 。 select VARIABLE_NAME,VARIABLE_VALUE from mysql.tidb where variable_name like 'tikv_gc%';

我们尝试 将batch 参数设置成 1 条,很快就会返回 transaction is too large,感觉参数就没有生效tidb报错.txt (9.6 KB)

  1. 麻烦提供下完整的版本信息:select tidb_version()
  2. 请问一下这个在做 delete 的时候请问有没有显式打开事务。

tidb版本 :2.1.10 没有事务

检查了一下 TIDB 的报错日志 ,发现 SET @@SESSION.tidb_dml_batch_size = 1000; 麻烦设置成 1 看能否执行成功。另外报错是执行马上报错还是运行一段时间再报错?

这个设置成 1 我也测试了,也不行。报错是执行了大约一秒后就会返回错误

麻烦执行下下面 SQL :
commit ; set @@session.tidb_batch_delete = 1; set @SESSION.tidb_dml_batch_size = 1; DELETE a FROM ods_order_item_base_two a INNER JOIN order_data_difference_temp b ON a.item_no = b.item_no AND b.pay_flag = ‘1’; 如果还是有报错的话,麻烦再一次提供 TiDB 完整的报错信息 。

tidb_error_log.txt (9.0 KB)

刚刚跟研发确认了一下,暂时 tidb_batch_delete 暂时不支持表关联的这种删除场景。

预计哪个版本会支持这种关联,如果使用in的话,tidb我看了下解释语句,它不走索引

另外请教一个查询问题,对应某些字段的查询,我们不希望区分大小写,事实上,查询对大小写很敏感,是否有参数配置什么的 。

TiDB 目前的 Collation 只支持区分大小写的比较排序规则。所以如果需要不区分大小写的话需要在应用端处理。

麻烦提供下具体的 SQL ,表结构,以及执行计划分析一下。