# 大量 DML 操作导致 OOM 解决

+ 方案 A:
  + 通过 hint 或者 use index 的方式强制走索引
  + 问题:在大量读取数据的场景,强制走索引很有可能会带来更差的效果.

+ 方案 B:
  + 索引扫描
 
![left](./student-guide/diagram/20-OOM-resolution-01-01.png)

-------------------------------------------------------------
我们可以尝试通过 hint 或者 use index 的方式强制走索引。在大量读取数据的场景，强制走索引很有可能会带来更差的效果。那么此时我们可以换一种思路，有没有什么方法可以既走索引，又避免大量的 TiKV coprocessor 扫描操作。

如果业务上允许的话，我们可以通过将一个个大的 delete 操作通过主键或者索引列拆分成几个小的删除操作。在 delete 语句逻辑不变的情况下，我们可以考虑通过 limit 限制，将 一个 delete 拆分成多个，循环执行。每一个小的 delete 操作操作既可以通过索引扫描数据，又可以避免大量数据打满 TiDB 的内存。
