对于大事物的限制,一些疑问?

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

  • 【TiDB 版本】:V3.0.12
  • 【问题描述】: tidb 4.0 之前有下面的限制: 每个键值对不超过 6MB 键值对的总数不超过 300,000 键值对的总大小不超过 100MB

疑问的是,如果表上面有三个索引,那其实我一个大事物,插入30万的话,可能1/4的量就报错的,因为每个索引也包括在内吗?

若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

事物的限制

单个事物的 SQL statement 不超过 5000(stmt-count-limit 参数可调);

每个键值对不超过 6M;

键值对的总数不超过 300000;

键值对的总大小不超过 100M;

为了直观的表达些,假定表中存在 2 个索引

键值对是指一张表里有* 2 个索引,那么一共就是数值 +2 个索引,总共 3 个键值对,那么每个键值对的总是不能超过 30 /3 = 10 万。

一行数据会映射为一个 KV entry,每多一个索引,也会增加一个 KV entry,所以这个限制反映在 SQL 层面是:总的行数 *(1 + 索引个数) < 30w。