# [Known Issues] 频繁 Truncate 或批量删除数据，大量 Region Cache 失效，导致 SQL Duration 增高

## Key Words

Truncate, 批量删除数据, batch delete, Region Cache, Duration 升高

## Description

频繁执行清空表的操作（例如 truncate table、delete from 不带 where 等），导致大量的 region cache 失效，tidb-server 执行 SQL 的耗时变高，包括 DML 和 DDL 操作。

## Root Cause

在执行 Region Merge 时需要更新 Region Cache ，insertRegionToCache 只更新首个 Region，其余的 Region 并不会清理，导致无效的垃圾 Region Cache 越来越多，最终放大了对 Region Cache 的资源竞争。

请参考 [https://github.com/tikv/client-go/issues/565](https://github.com/tikv/client-go/issues/565)

## Diagnostic Steps

1、频繁执行清空表的操作后，发现 SQL Duration 有明显上升

2、从 debug mutex 上可以看到 findRegionByKey() 和 OnRegionEpochNotMatch() 对 Region Cache 的 mutex 竞争激烈

## Resolution

Master 版本已经 merge，需要持续追踪正式的 Release 修复版本。

请参考 [https://github.com/tikv/client-go/pull/566](https://github.com/tikv/client-go/pull/566)

## Workaround

重启延迟严重的 TiDB 实例

## Affected Versions

ALL