From 1cfb173dc8c16edbc75f3bf3018bb73362fd5a1b Mon Sep 17 00:00:00 2001 From: Roger Song Date: Fri, 29 Mar 2024 14:56:19 +0800 Subject: [PATCH] include the description of one critical Issue 51407 in doc (#16878) --- sql-prepared-plan-cache.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/sql-prepared-plan-cache.md b/sql-prepared-plan-cache.md index 1e6e735a79a2..b53336dd8b87 100644 --- a/sql-prepared-plan-cache.md +++ b/sql-prepared-plan-cache.md @@ -5,6 +5,13 @@ aliases: ['/docs-cn/dev/sql-prepare-plan-cache/','zh/tidb/dev/sql-prepare-plan-c # Prepare 语句执行计划缓存 +> **警告:** +> +> 如果已经被缓存的 `UPDATE` 或 `DELETE` 语句在执行过程中,同时遇到 DDL 对相关 schema 进行变更,可能会导致表和索引的数据不一致。详情参考 [Issue #51407](https://github.com/pingcap/tidb/issues/51407)。请关注该 Issue 的修复状态,并升级到[最新的 LTS 版本](https://docs.pingcap.com/zh/tidb/stable)解决该问题。在升级前,你可以尝试以下规避方法: +> +> - 在执行 DDL 前,暂时[关闭 Prepare 语句的执行计划缓存](/system-variables.md#tidb_enable_prepared_plan_cache-从-v610-版本开始引入),DDL 执行完毕后再恢复打开。 +> - 避免在业务高峰期执行 DDL。执行 DDL 后立即运行 [`ADMIN CHECK TABLE`](/sql-statements/sql-statement-admin-check-table-index.md) 检查表和索引的一致性,一旦发现错误则重建相关索引。 + TiDB 支持对 `Prepare`/`Execute` 请求的执行计划缓存。其中包括以下两种形式的预处理语句: - 使用 `COM_STMT_PREPARE` 和 `COM_STMT_EXECUTE` 的协议功能;