TIDB3.0删除上亿数据

TIDB3.0删除上亿数据,有没有什么好的办法? 这边数据库有200多亿数据,想要删除100亿左右的,能不能提供个快速删除并安全的办法?

TiDB 基本兼容 MySQL 的 DML 操作。但是 TIDB 这边有 事务限制 。 所以建议根据要删除的数据的条件的基础上面再进行分批删除。另外可以参考下下面的帖子:

一次能删多少? 调低到多少合适? 我这边要删除大概100亿的数据

这个是需要根据您那里 key 的大小,以及一个事务涉及到的 key 的总大小有关系,一旦达到 6M,100M 的限制,仍然会出现相关报错。可以参照这个帖子,针对这个部分有较为详细的说明:

是否可以考虑把需要保留的数据写入一个新表, 然后直接drop旧表呢?一般而言,插入数据的代价会表删除要低一些。

我如果需要保留100亿左右的数据呢? 慢慢插入? 下个版本是否支持?

你好,批量插入也有set @@session.tidb_batch_insert=1 参数控制,我们 4.0 版本会开始支持 10g 大事务。发版时间预计大致是 3 月份出 beat 版 6 月份 GA

我如果需要保留100亿左右的数据呢? 慢慢插入?

  • 如果先使用mysqldumper导出来,然后导入回去,应该会快一点点,但不要期待太快。
  • 需要考虑一个问题:导出导入过程中,新写进去的数据如何处理?新改动的数据如何处理?