From 7558074683fa57a4af358c8d7edf5c83b22fbf6a Mon Sep 17 00:00:00 2001 From: qw4990 Date: Wed, 8 Jan 2025 16:43:27 +0800 Subject: [PATCH 1/7] fixup --- .../plancache-session-instance-comparison.PNG | Bin 0 -> 204043 bytes sql-plan-cache.md | 401 ++++++++++++++++++ 2 files changed, 401 insertions(+) create mode 100644 media/plancache-session-instance-comparison.PNG create mode 100644 sql-plan-cache.md diff --git a/media/plancache-session-instance-comparison.PNG b/media/plancache-session-instance-comparison.PNG new file mode 100644 index 0000000000000000000000000000000000000000..509b760b5ba4532afb86be36349a2208454a179f GIT binary patch literal 204043 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 set global tidb_enable_prepared_plan_cache=1; +Query OK, 0 rows affected (0.00 sec) + +myaql> set global tidb_enable_instance_plan_cache=0; +Query OK, 0 rows affected (0.00 sec) + +mysql> prepare st from "select a from t"; +Query OK, 0 rows affected (0.00 sec) + +mysql> execute st; +Empty set (0.00 sec) + +mysql> execute st; +Empty set (0.00 sec) + +mysql> select @@last_plan_from_cache; ++------------------------+ +| @@last_plan_from_cache | ++------------------------+ +| 1 | ++------------------------+ +``` + +## Use Instance Plan Cache + +> **Warning:** +> +> Instance Plan Cache is an experimental feature. + +TiDB starts supporting Instance Plan Cache after v8.4. + +To enable Instance Plan Cache, you need to set `tidb_enable_prepared_plan_cache` to true and set `tidb_enable_instance_plan_cache` to true. + +Cached plans can shared across different sessions when enabling this feature: + +```sql +-- execute below SQLs in session-1 +mysql> set global tidb_enable_instance_plan_cache=1; +Query OK, 0 rows affected (0.01 sec) + +mysql> prepare st from "select a from t"; +Query OK, 0 rows affected (0.01 sec) + +mysql> execute st; +Empty set (0.00 sec) + +-- execute below SQLs in session-2 +mysql> prepare st from "select a from t"; +Query OK, 0 rows affected (0.00 sec) + +mysql> execute st; +Empty set (0.00 sec) + +mysql> select @@last_plan_from_cache; ++------------------------+ +| @@last_plan_from_cache | ++------------------------+ +| 1 | ++------------------------+ +``` + +## Comparison of Session and Instance Plan Cache +Session Plan Cache means each session has its own Plan Cache, for example, if there are 10 sessions executing the same query `select a from t`, then there are 10 same plans cached in memory. In the opposite, if you are using Instance Plan Cache, then there is only 1 plan cached in memory for this query. + +Session Plan Cache has a slightly better performance (around 1~3%), but incurs more memory usage. Below is a test based on Sysbench-oltp_read_only with 120 concurrency, where Session Plan Cache costs more than 1GB memory usage while Instance Plan Cache only costs 58MB. + +![comparison](/media/plancache-session-instance-comparison.PNG) + +## Non-Prepared Plan Cache + +Set `tidb_enable_non_prepared_plan_cache` to true to enable this feature: + +```sql +mysql> SET tidb_enable_non_prepared_plan_cache = ON; +Query OK, 0 rows affected (0.00 sec) + +mysql> select * from t where a<10 and b=1; +Empty set (0.01 sec) + +mysql> select * from t where a<20 and b=20; +Empty set (0.00 sec) + +mysql> select @@last_plan_from_cache; ++------------------------+ +| @@last_plan_from_cache | ++------------------------+ +| 1 | ++------------------------+ +``` + +Non-Prepared Plan Cache needs to parameterizes the query (for example, parameterize `SELECT * FROM t WHERE b < 10 AND a = 1` to `SELECT * FROM t WHERE b < ? and a = ?`) and use it to search the plan cache, which might incur additional overhead, so it's not suitable for all situations. Please decide whether to use this feature according to your workload. + +# Management and diagnosis of Plan Cache + +## Related Metrics + +In [the Grafana dashboard](/grafana-tidb-dashboard.md) on the TiDB page in the Executor section, there are the Queries Using Plan Cache OPS and Plan Cache Miss OPS graphs, and they can help you to know the number quereis can and can't hit Plan Cache: + +![`sql_plan_cache`](/media/performance/sql_plan_cache.png) + +To view the total memory consumption by the cached execution plans of all sessions in each TiDB instance, you can use [**Plan Cache Memory Usage** monitoring panel](/grafana-tidb-dashboard.md) in Grafana. + +To view the total number of execution plans cached in each TiDB instance, you can use [**Plan Cache Plan Num** panel](/grafana-tidb-dashboard.md) in Grafana. + +The following is an example of the Plan Cache Memory Usage and Plan Cache Plan Num panels in Grafana: + +![grafana_panels](/media/planCache-memoryUsage-planNum-panels.png) + +## Memory Usage Management + +### Session Plan Cache + +Starting from v7.1.0, you can control the maximum number of plans that can be cached in each session by configuring the system variable [`tidb_session_plan_cache_size`](/system-variables.md#tidb_session_plan_cache_size-new-in-v710). For different environments, the recommended value is as follows and you can adjust it according to the monitoring panels: + +- When the memory threshold of the TiDB server instance is <= 64 GiB, set `tidb_session_plan_cache_size` to 50. +- When the memory threshold of the TiDB server instance is > 64 GiB, set `tidb_session_plan_cache_size` to 100. + +Starting from v7.1.0, you can control the maximum size of a plan that can be cached using the system variable [`tidb_plan_cache_max_plan_size`](/system-variables.md#tidb_plan_cache_max_plan_size-new-in-v710). The default value is 2 MB. If the size of a plan exceeds this value, the plan will not be cached. + +When the unused memory of the TiDB server is less than a certain threshold, the memory protection mechanism of plan cache is triggered, through which some cached plans will be evicted. + +You can control the threshold by configuring the system variable `tidb_prepared_plan_cache_memory_guard_ratio`. The threshold is 0.1 by default, which means when the unused memory of the TiDB server is less than 10% of the total memory (90% of the memory is used), the memory protection mechanism is triggered. + +### Instance Plan Cache + +Use `tidb_instance_plan_cache_max_size` to set the total memory limitation of Instance Plan Cache. For example, `set global tidb_instance_plan_cache_max_size=200MiB` . + +TiDB purges the Instance Plan Cache periodically, and you can set `tidb_instance_plan_cache_reserved_percentage` to control the amount of memory to purge each time. For example, the default percentage is `0.1`, and if the max size is `200MiB`, then TiDB purges `200*0.1=20MiB` memory each time. + +## Why the query can't hit Plan Cache + +Optimzier outputs the reason why the current query can't hit Plan Cache as warnings, so you can use `SHOW WARNINGS` statement to check the reason: + +```sql +mysql> PREPARE st FROM 'SELECT * FROM t WHERE a > (SELECT MAX(a) FROM t)'; -- The query contains a subquery and cannot be cached. +Query OK, 0 rows affected, 1 warning (0.01 sec) + +mysql> SHOW WARNINGS; -- Checks the reason why the query plan cannot be cached. ++---------+------+-----------------------------------------------+ +| Level | Code | Message | ++---------+------+-----------------------------------------------+ +| Warning | 1105 | skip plan-cache: sub-queries are un-cacheable | ++---------+------+-----------------------------------------------+ +1 row in set (0.00 sec) + +mysql> prepare st from 'select * from t where a set @a='1'; +Query OK, 0 rows affected (0.00 sec) + +mysql> execute st using @a; -- The optimization converts a non-INT type to an INT type, and the execution plan might change with the change of the parameter, so TiDB does not cache the plan. +Empty set, 1 warning (0.01 sec) + +mysql> SHOW WARNINGS; ++---------+------+----------------------------------------------+ +| Level | Code | Message | ++---------+------+----------------------------------------------+ +| Warning | 1105 | skip plan-cache: '1' may be converted to INT | ++---------+------+----------------------------------------------+ +1 row in set (0.00 sec) +``` + +## Which queries can't hit Plan Cache in your workload + +The `Statements Summary` table contains two fields, `plan_cache_unqualified` and `plan_cache_unqualified_last_reason`, which respectively indicate the number of times and the reason why the corresponding query is unable to use the plan cache. + +You can use these two fields for diagnostic purposes: + +```sql +mysql> SELECT digest_text, plan_cache_unqualified, plan_cache_unqualified_last_reason + FROM information_schema.statements_summary + WHERE plan_cache_unqualified > 0 ORDER BY plan_cache_unqualified DESC + LIMIT 10; ++---------------------------------+------------------------+----------------------------------------+ +| digest_text | plan_cache_unqualified | plan_cache_unqualified_last_reason | ++---------------------------------+------------------------+----------------------------------------+ +| select * from `t` where `a` < ? | 10 | '1' may be converted to INT | +| select * from `t` order by ? | 4 | query has 'order by ?' is un-cacheable | +| select database ( ) from `t` | 2 | query has 'database()' is un-cacheable | +... ++---------------------------------+------------------------+----------------------------------------+ +``` + +## Cached Plans in Instance Plan Cache + +For Instance Plan Cache, TiDB provides 2 system views (after v8.5) `information_schema.tidb_plan_cache` and `information_schema.cluster_tidb_plan_cache` to see the internal information of the Instance Plan Cache of the current instance and the whole cluster: + +```sql +mysql> select *, tidb_decode_binary_plan(binary_plan) from information_schema.tidb_plan_cache\G; +*************************** 1. row *************************** + SQL_DIGEST: 3689d7f367e2fdaf53c962c378efdf47799143b9af12f47e13ec247332269eac + SQL_TEXT: select a from t where a 100; +``` + +# When to Recompile + +Sometimes the optimizer has to recompile a cached plan due to environment changes, for example, if the user changes the table schema, the optimizer has to recompile related queries: + +```sql +create table t (a int, b int, key(a)); +prepare st from "select a from t where a=?"; +set @a=1; +execute st using @a; +execute st using @a; +select @@last_plan_from_cache; -- return 1 since it can hit the last plan + +alter table t drop index a; -- drop an index on this table +execute st using @a; +select @@last_plan_from_cache; -- return 0 since the DDL change triggers plan recompile +``` + +Below list all cases that the optimizer has to recompile the plan: + +- The current DB name, user name, timezone, charset, collation are changed. +- Values of these variables or config are changed: `tidb_restricted_read_only`, `sql_mode`, `tidb_super_read_only`, `foreign_key_checks`, `tidb_enable_shared_lock_promotion`, `pessimistic-auto-commit`. +- Table schema is changed. +- Table statistics is changed and `tidb_plan_cache_invalidation_on_fresh_stats` is true. +- Numbers in Limit-Clause like `limit ?` is changed and `tidb_enable_plan_cache_for_param_limit` is true. +- Whether this query is in a transaction or not. +- A new SQL binding is created for this SQL. + +# Limitations + +## Plan Cache + +In the current version of TiDB, if the statement meets any of the following conditions, the query or the plan is not cached: + +- The query contains SQL statements other than `SELECT`, `UPDATE`, `INSERT`, `DELETE`, `Union`, `Intersect`, and `Except`. +- The query accesses temporary tables, or a table that contains generated columns, or uses static mode (that is, [`tidb_partition_prune_mode`](/system-variables.md#tidb_partition_prune_mode-new-in-v51) is set to `static`) to access partitioning tables. +- The query contains non-correlated sub-queries, such as `SELECT * FROM t1 WHERE t1.a > (SELECT 1 FROM t2 WHERE t2.b < 1)`. +- The query contains correlated sub-queries with `PhysicalApply` operators in the execution plan, such as `SELECT * FROM t1 WHERE t1.a > (SELECT a FROM t2 WHERE t1.b > t2.b)`. +- The query contains the `ignore_plan_cache` or `set_var` hint, such as `SELECT /*+ ignore_plan_cache() */ * FROM t` or `SELECT /*+ set_var(max_execution_time=1) */ * FROM t`. +- The query contains variables other than `?` (including system variables or user-defined variables), such as `select * from t where a>? and b>@x`. +- The query contains the functions that cannot be cached: `database()`, `current_user`, `current_role`, `user`, `connection_id`, `last_insert_id`, `row_count`, `version`, and `like`. +- The query uses a variable as the `LIMIT` parameter (such as `LIMIT ?` and `LIMIT 10, ?`) and the variable value is greater than 10000. +- The query contains `?` after `Order By`, such as `Order By ?`. Such queries sort data based on the column specified by `?`. If the queries targeting different columns use the same execution plan, the results will be wrong. Therefore, such queries are not cached. However, if the query is a common one, such as `Order By a+?`, it is cached. +- The query contains `?` after `Group By`, such as `Group By?`. Such queries group data based on the column specified by `?`. If the queries targeting different columns use the same execution plan, the results will be wrong. Therefore, such queries are not cached. However, if the query is a common one, such as `Group By a+?`, it is cached. +- The query contains `?` in the definition of the `Window Frame` window function, such as `(partition by year order by sale rows ? preceding)`. If `?` appears elsewhere in the window function, the query is cached. +- The query contains parameters for comparing `int` and `string`, such as `c_int >= ?` or `c_int in (?, ?)`, in which `?` indicates the string type, such as `set @x='123'`. To ensure that the query result is compatible with MySQL, parameters need to be adjusted in each query, so such queries are not cached. +- The plan attempts to access `TiFlash`. +- In most cases, the plan that contains `TableDual` is not cached, unless the current `Prepare` statement does not have parameters. +- The query accesses TiDB system views, such as `information_schema.columns`. It is not recommended to use `Prepare` and `Execute` statements to access system views. +- TiDB has a limitation on the number of `?` in a query. If a query contains more than 65535 `?`, an error `Prepared statement contains too many placeholders` is reported. + +## Non-Prepared Plan Cache + +Non-Prepared Plan Cache has all limitations that Prepared Plan Cache has, and besides that, Non-Prepared Plan Cache only supports simple TP queries. + +Below are its limitations: + +- Queries or plans that are not supported by the Prepared plan cache are also not supported by the non-prepared plan cache. +- Queries or plans that are not supported by the [Prepared plan cache](/sql-prepared-plan-cache.md) are also not supported by the non-prepared plan cache. +- Queries that contain complex operators such as `Window` or `Having` are not supported. +- Queries that contain three or more `Join` tables or subqueries are not supported. +- Queries that contain numbers or expressions directly after `ORDER BY` or `GROUP BY` are not supported, such as `ORDER BY 1` and `GROUP BY a+1`. Only `ORDER BY column_name` and `GROUP BY column_name` are supported. +- Queries that filter on columns of `JSON`, `ENUM`, `SET`, or `BIT` type are not supported, such as `SELECT * FROM t WHERE json_col = '{}'`. +- Queries that filter on `NULL` values are not supported, such as `SELECT * FROM t WHERE a is NULL`. +- Queries with more than 200 parameters after parameterization are not supported by default, such as `SELECT * FROM t WHERE a in (1, 2, 3, ... 201)`. Starting from v7.3.0, you can modify this limit by setting the [`44823`](/optimizer-fix-controls.md#44823-new-in-v730) fix in the [`tidb_opt_fix_control`](/system-variables.md#tidb_opt_fix_control-new-in-v653-and-v710) system variable. +- Queries that access virtual columns, temporary tables, views, or memory tables are not supported, such as `SELECT * FROM INFORMATION_SCHEMA.COLUMNS`, where `COLUMNS` is a TiDB memory table. +- Queries with hints or bindings are not supported. +- DML statements or `SELECT` statements with the `FOR UPDATE` clause are not supported by default. To remove this restriction, you can execute `SET tidb_enable_non_prepared_plan_cache_for_dml = ON`. + +After you enable this feature, the optimizer quickly evaluates the query. If it does not meet the support conditions for non-prepared plan cache, the query falls back to the regular optimization process. + +# Others + +## Ignore the `COM_STMT_CLOSE` command and the `DEALLOCATE PREPARE` statement + +To reduce the syntax parsing cost of SQL statements, it is recommended that you run `prepare stmt` once, then `execute stmt` multiple times before running `deallocate prepare`: + +{{< copyable "sql" >}} + +```sql +MySQL [test]> prepare stmt from '...'; -- Prepare once +MySQL [test]> execute stmt using ...; -- Execute once +MySQL [test]> ... +MySQL [test]> execute stmt using ...; -- Execute multiple times +MySQL [test]> deallocate prepare stmt; -- Release the prepared statement +``` + +In real practice, you may be used to running `deallocate prepare` each time after running `execute stmt`, as shown below: + +{{< copyable "sql" >}} + +```sql +MySQL [test]> prepare stmt from '...'; -- Prepare once +MySQL [test]> execute stmt using ...; +MySQL [test]> deallocate prepare stmt; -- Release the prepared statement +MySQL [test]> prepare stmt from '...'; -- Prepare twice +MySQL [test]> execute stmt using ...; +MySQL [test]> deallocate prepare stmt; -- Release the prepared statement +``` + +In such practice, the plan obtained by the first executed statement cannot be reused by the second executed statement. + +To address the problem, you can set the system variable [`tidb_ignore_prepared_cache_close_stmt`](/system-variables.md#tidb_ignore_prepared_cache_close_stmt-new-in-v600) to `ON` so TiDB ignores commands to close `prepare stmt`: + +{{< copyable "sql" >}} + +```sql +mysql> set @@tidb_ignore_prepared_cache_close_stmt=1; -- Enable the variable +Query OK, 0 rows affected (0.00 sec) + +mysql> prepare stmt from 'select * from t'; -- Prepare once +Query OK, 0 rows affected (0.00 sec) + +mysql> execute stmt; -- Execute once +Empty set (0.00 sec) + +mysql> deallocate prepare stmt; -- Release after the first execute +Query OK, 0 rows affected (0.00 sec) + +mysql> prepare stmt from 'select * from t'; -- Prepare twice +Query OK, 0 rows affected (0.00 sec) + +mysql> execute stmt; -- Execute twice +Empty set (0.00 sec) + +mysql> select @@last_plan_from_cache; -- Reuse the last plan ++------------------------+ +| @@last_plan_from_cache | ++------------------------+ +| 1 | ++------------------------+ +1 row in set (0.00 sec) +``` \ No newline at end of file From 165899d22f5272f9308851e1d1922eb83dc44519 Mon Sep 17 00:00:00 2001 From: qw4990 Date: Wed, 8 Jan 2025 16:49:04 +0800 Subject: [PATCH 2/7] fixup --- sql-non-prepared-plan-cache.md | 188 ----------------- sql-prepared-plan-cache.md | 374 --------------------------------- 2 files changed, 562 deletions(-) delete mode 100644 sql-non-prepared-plan-cache.md delete mode 100644 sql-prepared-plan-cache.md diff --git a/sql-non-prepared-plan-cache.md b/sql-non-prepared-plan-cache.md deleted file mode 100644 index 1378361f75c97..0000000000000 --- a/sql-non-prepared-plan-cache.md +++ /dev/null @@ -1,188 +0,0 @@ ---- -title: SQL Non-Prepared Execution Plan Cache -summary: Learn about the principle, usage, and examples of the SQL non-prepared execution plan cache in TiDB. ---- - -# SQL Non-Prepared Execution Plan Cache - -TiDB supports execution plan caching for some non-`PREPARE` statements, similar to the [`Prepare`/`Execute` statements](/sql-prepared-plan-cache.md). This feature allows these statements to skip the optimization phase and improve performance. - -Enabling the non-prepared plan cache might incur additional memory and CPU overhead and might not be suitable for all situations. To determine whether to enable this feature in your scenario, refer to the [Performance benefits](#performance-benefits) and [Memory monitoring](#monitoring) sections. - -## Principle - -The non-prepared plan cache is a session-level feature that shares a cache with the [prepared plan cache](/sql-prepared-plan-cache.md). The basic principle of the non-prepared plan cache is as follows: - -1. After you enable the non-prepared plan cache, TiDB first parameterizes the query based on the abstract syntax tree (AST). For example, `SELECT * FROM t WHERE b < 10 AND a = 1` is parameterized as `SELECT * FROM t WHERE b < ? and a = ?`. -2. Then, TiDB uses the parameterized query to search the plan cache. -3. If a reusable plan is found, it is directly used and the optimization phase is skipped. -4. Otherwise, the optimizer generates a new plan and adds it back into the cache for reuse in the subsequent query. - -## Usage - -To enable or disable the non-prepared plan cache, you can set the [`tidb_enable_non_prepared_plan_cache`](/system-variables.md#tidb_enable_non_prepared_plan_cache) system variable. You can also control the size of the non-prepared plan cache using the [`tidb_session_plan_cache_size`](/system-variables.md#tidb_session_plan_cache_size-new-in-v710) system variable. When the number of cached plans exceeds `tidb_session_plan_cache_size`, TiDB evicts plans using the least recently used (LRU) strategy. - -Starting from v7.1.0, you can control the maximum size of a plan that can be cached using the system variable [`tidb_plan_cache_max_plan_size`](/system-variables.md#tidb_plan_cache_max_plan_size-new-in-v710). The default value is 2 MB. If the size of a plan exceeds this value, the plan will not be cached. - -> **Note:** -> -> The memory specified by `tidb_session_plan_cache_size` is shared between the prepared and non-prepared plan cache. If you have enabled the prepared plan cache for the current cluster, enabling the non-prepared plan cache might reduce the hit rate of the original prepared plan cache. - -## Example - -The following example shows how to use the non-prepared plan cache: - -1. Create a table `t` for testing: - - ```sql - CREATE TABLE t (a INT, b INT, KEY(b)); - ``` - -2. Enable the non-prepared plan cache: - - ```sql - SET tidb_enable_non_prepared_plan_cache = ON; - ``` - -3. Execute the following two queries: - - ```sql - SELECT * FROM t WHERE b < 10 AND a = 1; - SELECT * FROM t WHERE b < 5 AND a = 2; - ``` - -4. Check whether the second query hits the cache: - - ```sql - SELECT @@last_plan_from_cache; - ``` - - If the value of `last_plan_from_cache` in the output is `1`, it means that the execution plan of the second query comes from the cache: - - ```sql - +------------------------+ - | @@last_plan_from_cache | - +------------------------+ - | 1 | - +------------------------+ - 1 row in set (0.00 sec) - ``` - -## Restrictions - -### Cache suboptimal plans - -TiDB only caches one plan for a parameterized query. For example, the queries `SELECT * FROM t WHERE a < 1` and `SELECT * FROM t WHERE a < 100000` share the same parameterized form, `SELECT * FROM t WHERE a < ?`, and thus share the same plan. - -If this causes performance issues, you can use the `ignore_plan_cache()` hint to ignore plans in the cache, so that the optimizer generates a new execution plan for the SQL every time. If the SQL cannot be modified, you can create a binding to solve the problem. For example, `CREATE BINDING FOR SELECT ... USING SELECT /*+ ignore_plan_cache() */ ...`. - -### Usage restrictions - -Due to the preceding risks and the fact that the execution plan cache only provides significant benefits for simple queries (if a query is complex and takes a long time to execute, using the execution plan cache might not be very helpful), TiDB has strict restrictions on the scope of non-prepared plan cache. The restrictions are as follows: - -- Queries or plans that are not supported by the [Prepared plan cache](/sql-prepared-plan-cache.md) are also not supported by the non-prepared plan cache. -- Queries that contain complex operators such as `Window` or `Having` are not supported. -- Queries that contain three or more `Join` tables or subqueries are not supported. -- Queries that contain numbers or expressions directly after `ORDER BY` or `GROUP BY` are not supported, such as `ORDER BY 1` and `GROUP BY a+1`. Only `ORDER BY column_name` and `GROUP BY column_name` are supported. -- Queries that filter on columns of `JSON`, `ENUM`, `SET`, or `BIT` type are not supported, such as `SELECT * FROM t WHERE json_col = '{}'`. -- Queries that filter on `NULL` values are not supported, such as `SELECT * FROM t WHERE a is NULL`. -- Queries with more than 200 parameters after parameterization are not supported by default, such as `SELECT * FROM t WHERE a in (1, 2, 3, ... 201)`. Starting from v7.3.0, you can modify this limit by setting the [`44823`](/optimizer-fix-controls.md#44823-new-in-v730) fix in the [`tidb_opt_fix_control`](/system-variables.md#tidb_opt_fix_control-new-in-v653-and-v710) system variable. -- Queries that access virtual columns, temporary tables, views, or memory tables are not supported, such as `SELECT * FROM INFORMATION_SCHEMA.COLUMNS`, where `COLUMNS` is a TiDB memory table. -- Queries with hints or bindings are not supported. -- DML statements or `SELECT` statements with the `FOR UPDATE` clause are not supported by default. To remove this restriction, you can execute `SET tidb_enable_non_prepared_plan_cache_for_dml = ON`. - -After you enable this feature, the optimizer quickly evaluates the query. If it does not meet the support conditions for non-prepared plan cache, the query falls back to the regular optimization process. - -## Performance benefits - -In internal tests, enabling the non-prepared plan cache feature can achieve significant performance benefits in most TP scenarios. For example, a performance improvement of about 4% in TPC-C tests, over 10% in some banking workloads, and 15% in Sysbench RangeScan. - -However, this feature also introduces some additional memory and CPU overhead, including determining whether the query is supported, parameterizing the query, and searching for a plan in the cache. If the cache cannot hit the majority of queries in your workload, enabling it might actually adversely affect performance. - -In this case, you need to observe the `non-prepared` metric in the **Queries Using Plan Cache OPS** panel and the `non-prepared-unsupported` metric in the **Plan Cache Miss OPS** panel on Grafana. If most queries are not supported and only a few can hit the plan cache, you can disable this feature. - -![non-prepared-unsupported](/media/non-prepapred-plan-cache-unsupprot.png) - -## Diagnostics - -After enabling the non-prepared plan cache, you can execute the `EXPLAIN FORMAT='plan_cache' SELECT ...` statement to verify whether the query can hit the cache. For queries that cannot hit the cache, the system returns the reason in a warning. - -Note that if you do not add `FORMAT='plan_cache'`, the `EXPLAIN` statement will never hit the cache. - -To verify whether the query hits the cache, execute the following `EXPLAIN FORMAT='plan_cache'` statement: - -```sql -EXPLAIN FORMAT='plan_cache' SELECT * FROM (SELECT a+1 FROM t) t; -``` - -The output is as follows: - -```sql -3 rows in set, 1 warning (0.00 sec) -``` - -To view the queries that cannot hit the cache, execute `SHOW warnings;`: - -```sql -SHOW warnings; -``` - -The output is as follows: - -```sql -+---------+------+-------------------------------------------------------------------------------+ -| Level | Code | Message | -+---------+------+-------------------------------------------------------------------------------+ -| Warning | 1105 | skip non-prepared plan-cache: queries that have sub-queries are not supported | -+---------+------+-------------------------------------------------------------------------------+ -1 row in set (0.00 sec) -``` - -In the preceding example, the query cannot hit the cache because the non-prepared plan cache does not support the `+` operation. - -## Monitoring - -After enabling the non-prepared plan cache, you can monitor the memory usage, number of plans in the cache, and cache hit rate in the following panes: - -![non-prepare-plan-cache](/media/tidb-non-prepared-plan-cache-metrics.png) - -You can also monitor the cache hit rate in the `statements_summary` table and slow query log. The following shows how to view the cache hit rate in the `statements_summary` table: - -1. Create a table `t`: - - ```sql - CREATE TABLE t (a int); - ``` - -2. Enable the non-prepared plan cache: - - ```sql - SET @@tidb_enable_non_prepared_plan_cache=ON; - ``` - -3. Execute the following three queries: - - ```sql - SELECT * FROM t WHERE a<1; - SELECT * FROM t WHERE a<2; - SELECT * FROM t WHERE a<3; - ``` - -4. Query the `statements_summary` table to view the cache hit rate: - - ```sql - SELECT digest_text, query_sample_text, exec_count, plan_in_cache, plan_cache_hits FROM INFORMATION_SCHEMA.STATEMENTS_SUMMARY WHERE query_sample_text LIKE '%SELECT * FROM %'; - ``` - - The output is as follows: - - ```sql - +---------------------------------+------------------------------------------+------------+---------------+-----------------+ - | digest_text | query_sample_text | exec_count | plan_in_cache | plan_cache_hits | - +---------------------------------+------------------------------------------+------------+---------------+-----------------+ - | SELECT * FROM `t` WHERE `a` < ? | SELECT * FROM t WHERE a<1 | 3 | 1 | 2 | - +---------------------------------+------------------------------------------+------------+---------------+-----------------+ - 1 row in set (0.01 sec) - ``` - - From the output, you can see that the query was executed three times and hit the cache twice. diff --git a/sql-prepared-plan-cache.md b/sql-prepared-plan-cache.md deleted file mode 100644 index 1b85d938d6416..0000000000000 --- a/sql-prepared-plan-cache.md +++ /dev/null @@ -1,374 +0,0 @@ ---- -title: SQL Prepared Execution Plan Cache -summary: Learn about SQL Prepared Execution Plan Cache in TiDB. -aliases: ['/tidb/dev/sql-prepare-plan-cache'] ---- - -# SQL Prepared Execution Plan Cache - -TiDB supports execution plan caching for `Prepare` and `Execute` queries. This includes both forms of prepared statements: - -- Using the `COM_STMT_PREPARE` and `COM_STMT_EXECUTE` protocol features. -- Using the SQL statements `PREPARE` and `EXECUTE`. - -The TiDB optimizer handles these two types of queries in the same way: when preparing, the parameterized query is parsed into an AST (Abstract Syntax Tree) and cached; in later execution, the execution plan is generated based on the stored AST and specific parameter values. - -When the execution plan cache is enabled, in the first execution every `Prepare` statement checks whether the current query can use the execution plan cache, and if the query can use it, then put the generated execution plan into a cache implemented by LRU (Least Recently Used) linked list. In the subsequent `Execute` queries, the execution plan is obtained from the cache and checked for availability. If the check succeeds, the step of generating an execution plan is skipped. Otherwise, the execution plan is regenerated and saved in the cache. - -TiDB also supports execution plan caching for some non-`PREPARE` statements, similar to the `Prepare`/`Execute` statements. For more details, refer to [Non-prepared plan cache](/sql-non-prepared-plan-cache.md). - -In the current version of TiDB, if a `Prepare` statement meets any of the following conditions, the query or the plan is not cached: - -- The query contains SQL statements other than `SELECT`, `UPDATE`, `INSERT`, `DELETE`, `Union`, `Intersect`, and `Except`. -- The query accesses temporary tables, or a table that contains generated columns, or uses static mode (that is, [`tidb_partition_prune_mode`](/system-variables.md#tidb_partition_prune_mode-new-in-v51) is set to `static`) to access partitioning tables. -- The query contains non-correlated sub-queries, such as `SELECT * FROM t1 WHERE t1.a > (SELECT 1 FROM t2 WHERE t2.b < 1)`. -- The query contains correlated sub-queries with `PhysicalApply` operators in the execution plan, such as `SELECT * FROM t1 WHERE t1.a > (SELECT a FROM t2 WHERE t1.b > t2.b)`. -- The query contains the `ignore_plan_cache` or `set_var` hint, such as `SELECT /*+ ignore_plan_cache() */ * FROM t` or `SELECT /*+ set_var(max_execution_time=1) */ * FROM t`. -- The query contains variables other than `?` (including system variables or user-defined variables), such as `select * from t where a>? and b>@x`. -- The query contains the functions that cannot be cached: `database()`, `current_user`, `current_role`, `user`, `connection_id`, `last_insert_id`, `row_count`, `version`, and `like`. -- The query uses a variable as the `LIMIT` parameter (such as `LIMIT ?` and `LIMIT 10, ?`) and the variable value is greater than 10000. -- The query contains `?` after `Order By`, such as `Order By ?`. Such queries sort data based on the column specified by `?`. If the queries targeting different columns use the same execution plan, the results will be wrong. Therefore, such queries are not cached. However, if the query is a common one, such as `Order By a+?`, it is cached. -- The query contains `?` after `Group By`, such as `Group By?`. Such queries group data based on the column specified by `?`. If the queries targeting different columns use the same execution plan, the results will be wrong. Therefore, such queries are not cached. However, if the query is a common one, such as `Group By a+?`, it is cached. -- The query contains `?` in the definition of the `Window Frame` window function, such as `(partition by year order by sale rows ? preceding)`. If `?` appears elsewhere in the window function, the query is cached. -- The query contains parameters for comparing `int` and `string`, such as `c_int >= ?` or `c_int in (?, ?)`, in which `?` indicates the string type, such as `set @x='123'`. To ensure that the query result is compatible with MySQL, parameters need to be adjusted in each query, so such queries are not cached. -- The plan attempts to access `TiFlash`. -- In most cases, the plan that contains `TableDual` is not cached, unless the current `Prepare` statement does not have parameters. -- The query accesses TiDB system views, such as `information_schema.columns`. It is not recommended to use `Prepare` and `Execute` statements to access system views. - -TiDB has a limitation on the number of `?` in a query. If a query contains more than 65535 `?`, an error `Prepared statement contains too many placeholders` is reported. - -The LRU linked list is designed as a session-level cache because `Prepare`/`Execute` cannot be executed across sessions. Each element of the LRU list is a key-value pair. The value is the execution plan, and the key is composed of the following parts: - -- The name of the database where `Execute` is executed -- The identifier of the `Prepare` statement, that is, the name after the `PREPARE` keyword -- The current schema version, which is updated after every successfully executed DDL statement -- The SQL mode when executing `Execute` -- The current time zone, which is the value of the `time_zone` system variable -- The value of the `sql_select_limit` system variable - -Any change in the preceding information (for example, switching databases, renaming `Prepare` statement, executing DDL statements, or modifying the value of SQL mode/`time_zone`), or the LRU cache elimination mechanism causes the execution plan cache miss when executing. - -After the execution plan cache is obtained from the cache, TiDB first checks whether the execution plan is still valid. If the current `Execute` statement is executed in an explicit transaction, and the referenced table is modified in the transaction pre-order statement, the cached execution plan accessing this table does not contain the `UnionScan` operator, then it cannot be executed. - -After the validation test is passed, the scan range of the execution plan is adjusted according to the current parameter values, and then used to perform data querying. - -There are several points worth noting about execution plan caching and query performance: - -- No matter an execution plan is cached or not, it is affected by SQL bindings. For execution plans that have not been cached (the first `Execute`), these plans are affected by existing SQL bindings. For execution plans that have been cached, if new SQL Bindings are created, these plans become invalid. -- Cached plans are not affected by changes in statistics, optimization rules, and blocklist pushdown by expressions. -- Considering that the parameters of `Execute` are different, the execution plan cache prohibits some aggressive query optimization methods that are closely related to specific parameter values to ensure adaptability. This causes that the query plan may not be optimal for certain parameter values. For example, the filter condition of the query is `where a > ? And a < ?`, the parameters of the first `Execute` statement are `2` and `1` respectively. Considering that these two parameters maybe be `1` and `2` in the next execution time, the optimizer does not generate the optimal `TableDual` execution plan that is specific to current parameter values; -- If cache invalidation and elimination are not considered, an execution plan cache is applied to various parameter values, which in theory also results in non-optimal execution plans for certain values. For example, if the filter condition is `where a < ?` and the parameter value used for the first execution is `1`, then the optimizer generates the optimal `IndexScan` execution plan and puts it into the cache. In the subsequent executions, if the value becomes `10000`, the `TableScan` plan might be the better one. But due to the execution plan cache, the previously generated `IndexScan` is used for execution. Therefore, the execution plan cache is more suitable for application scenarios where the query is simple (the ratio of compilation is high) and the execution plan is relatively fixed. - -Starting from v6.1.0, the execution plan cache is enabled by default. You can control prepared plan cache via the system variable [`tidb_enable_prepared_plan_cache`](/system-variables.md#tidb_enable_prepared_plan_cache-new-in-v610). - -> **Note:** -> -> The [`tidb_enable_prepared_plan_cache`](/system-variables.md#tidb_enable_prepared_plan_cache-new-in-v610) system variable controls the execution plan cache only for `Prepare`/`Execute` queries, not for normal queries. For the execution plan cache for normal queries, see [SQL Non-Prepared Execution Plan Cache](/sql-non-prepared-plan-cache.md). - -After the execution plan cache feature is enabled, you can use the session-level system variable [`last_plan_from_cache`](/system-variables.md#last_plan_from_cache-new-in-v40) to see whether the previous `Execute` statement used the cached execution plan, for example: - -{{< copyable "sql" >}} - -```sql -MySQL [test]> create table t(a int); -Query OK, 0 rows affected (0.00 sec) -MySQL [test]> prepare stmt from 'select * from t where a = ?'; -Query OK, 0 rows affected (0.00 sec) -MySQL [test]> set @a = 1; -Query OK, 0 rows affected (0.00 sec) - --- The first execution generates an execution plan and saves it in the cache. -MySQL [test]> execute stmt using @a; -Empty set (0.00 sec) -MySQL [test]> select @@last_plan_from_cache; -+------------------------+ -| @@last_plan_from_cache | -+------------------------+ -| 0 | -+------------------------+ -1 row in set (0.00 sec) - --- The second execution hits the cache. -MySQL [test]> execute stmt using @a; -Empty set (0.00 sec) -MySQL [test]> select @@last_plan_from_cache; -+------------------------+ -| @@last_plan_from_cache | -+------------------------+ -| 1 | -+------------------------+ -1 row in set (0.00 sec) -``` - -If you find that a certain set of `Prepare`/`Execute` has unexpected behavior due to the execution plan cache, you can use the `ignore_plan_cache()` SQL hint to skip using the execution plan cache for the current statement. Still, use the preceding statement as an example: - -{{< copyable "sql" >}} - -```sql -MySQL [test]> prepare stmt from 'select /*+ ignore_plan_cache() */ * from t where a = ?'; -Query OK, 0 rows affected (0.00 sec) -MySQL [test]> set @a = 1; -Query OK, 0 rows affected (0.00 sec) -MySQL [test]> execute stmt using @a; -Empty set (0.00 sec) -MySQL [test]> select @@last_plan_from_cache; -+------------------------+ -| @@last_plan_from_cache | -+------------------------+ -| 0 | -+------------------------+ -1 row in set (0.00 sec) -MySQL [test]> execute stmt using @a; -Empty set (0.00 sec) -MySQL [test]> select @@last_plan_from_cache; -+------------------------+ -| @@last_plan_from_cache | -+------------------------+ -| 0 | -+------------------------+ -1 row in set (0.00 sec) -``` - -## Diagnostics of Prepared Plan Cache - -### Use `SHOW WARNINGS` to diagnose - -Some queries or plans cannot be cached. You can use the `SHOW WARNINGS` statement to check whether the query or plan is cached. If it is not cached, you can check the reason for the failure in the result. For example: - -```sql -mysql> PREPARE st FROM 'SELECT * FROM t WHERE a > (SELECT MAX(a) FROM t)'; -- The query contains a subquery and cannot be cached. - -Query OK, 0 rows affected, 1 warning (0.01 sec) - -mysql> SHOW WARNINGS; -- Checks the reason why the query plan cannot be cached. - -+---------+------+-----------------------------------------------+ -| Level | Code | Message | -+---------+------+-----------------------------------------------+ -| Warning | 1105 | skip plan-cache: sub-queries are un-cacheable | -+---------+------+-----------------------------------------------+ -1 row in set (0.00 sec) - -mysql> prepare st from 'select * from t where a set @a='1'; - -Query OK, 0 rows affected (0.00 sec) - -mysql> execute st using @a; -- The optimization converts a non-INT type to an INT type, and the execution plan might change with the change of the parameter, so TiDB does not cache the plan. - -Empty set, 1 warning (0.01 sec) - -mysql> SHOW WARNINGS; - -+---------+------+----------------------------------------------+ -| Level | Code | Message | -+---------+------+----------------------------------------------+ -| Warning | 1105 | skip plan-cache: '1' may be converted to INT | -+---------+------+----------------------------------------------+ -1 row in set (0.00 sec) -``` - -### Use `Statements Summary` to diagnose - -The `Statements Summary` table contains two fields, `plan_cache_unqualified` and `plan_cache_unqualified_last_reason`, which respectively indicate the number of times and the reason why the corresponding query is unable to use the plan cache. You can use these two fields for diagnostic purposes: - -```sql -mysql> SELECT digest_text, plan_cache_unqualified, plan_cache_unqualified_last_reason FROM information_schema.statements_summary WHERE plan_cache_unqualified > 0 ORDER BY plan_cache_unqualified DESC -LIMIT 10; - -+---------------------------------+------------------------+----------------------------------------+ -| digest_text | plan_cache_unqualified | plan_cache_unqualified_last_reason | -+---------------------------------+------------------------+----------------------------------------+ -| select * from `t` where `a` < ? | 10 | '1' may be converted to INT | -| select * from `t` order by ? | 4 | query has 'order by ?' is un-cacheable | -| select database ( ) from `t` | 2 | query has 'database()' is un-cacheable | -... -+---------------------------------+------------------------+----------------------------------------+ -10 row in set (0.01 sec) -``` - -## Memory management of Prepared Plan Cache - - - -Using Prepared Plan Cache incurs memory overhead. To view the total memory consumption by the cached execution plans of all sessions in each TiDB instance, you can use the [**Plan Cache Memory Usage** monitoring panel](/grafana-tidb-dashboard.md) in Grafana. - -> **Note:** -> -> Because of the memory reclaim mechanism of Golang and some uncounted memory structures, the memory displayed in Grafana is not equal to the actual heap memory usage. It is tested that there is a deviation of about ±20% between the memory displayed in Grafana and the actual heap memory usage. - -To view the total number of execution plans cached in each TiDB instance, you can use the [**Plan Cache Plan Num** panel](/grafana-tidb-dashboard.md) in Grafana. - -The following is an example of the **Plan Cache Memory Usage** and **Plan Cache Plan Num** panels in Grafana: - -![grafana_panels](/media/planCache-memoryUsage-planNum-panels.png) - -Starting from v7.1.0, you can control the maximum number of plans that can be cached in each session by configuring the system variable [`tidb_session_plan_cache_size`](/system-variables.md#tidb_session_plan_cache_size-new-in-v710). For different environments, the recommended value is as follows and you can adjust it according to the monitoring panels: - - - - - -Using Prepared Plan Cache has some memory overhead. In internal tests, each cached plan consumes an average of 100 KiB of memory. Because Plan Cache is currently at the `SESSION` level, the total memory consumption is approximately `the number of sessions * the average number of cached plans in a session * 100 KiB`. - -For example, the current TiDB instance has 50 sessions in concurrency and each session has approximately 100 cached plans. The total memory consumption is approximately `50 * 100 * 100 KiB` = `512 MB`. - -You can control the maximum number of plans that can be cached in each session by configuring the system variable [`tidb_session_plan_cache_size`](/system-variables.md#tidb_session_plan_cache_size-new-in-v710). For different environments, the recommended value is as follows: - - - -- When the memory threshold of the TiDB server instance is <= 64 GiB, set `tidb_session_plan_cache_size` to `50`. -- When the memory threshold of the TiDB server instance is > 64 GiB, set `tidb_session_plan_cache_size` to `100`. - -Starting from v7.1.0, you can control the maximum size of a plan that can be cached using the system variable [`tidb_plan_cache_max_plan_size`](/system-variables.md#tidb_plan_cache_max_plan_size-new-in-v710). The default value is 2 MB. If the size of a plan exceeds this value, the plan will not be cached. - -When the unused memory of the TiDB server is less than a certain threshold, the memory protection mechanism of plan cache is triggered, through which some cached plans will be evicted. - -You can control the threshold by configuring the system variable `tidb_prepared_plan_cache_memory_guard_ratio`. The threshold is 0.1 by default, which means when the unused memory of the TiDB server is less than 10% of the total memory (90% of the memory is used), the memory protection mechanism is triggered. - - - -Due to memory limit, plan cache might be missed sometimes. You can check the status by viewing the [`Plan Cache Miss OPS` metric](/grafana-tidb-dashboard.md) in the Grafana dashboard. - - - - - -Due to memory limit, plan cache might be missed sometimes. - - - -## Clear execution plan cache - -You can clear execution plan cache by executing the `ADMIN FLUSH [SESSION | INSTANCE] PLAN_CACHE` statement. - -In this statement, `[SESSION | INSTANCE]` specifies whether the plan cache is cleared for the current session or the whole TiDB instance. If the scope is not specified, the preceding statement applies to the `SESSION` cache by default. - -The following is an example of clearing the `SESSION` execution plan cache: - -{{< copyable "sql" >}} - -```sql -MySQL [test]> create table t (a int); -Query OK, 0 rows affected (0.00 sec) - -MySQL [test]> prepare stmt from 'select * from t'; -Query OK, 0 rows affected (0.00 sec) - -MySQL [test]> execute stmt; -Empty set (0.00 sec) - -MySQL [test]> execute stmt; -Empty set (0.00 sec) - -MySQL [test]> select @@last_plan_from_cache; -- Select the cached plan -+------------------------+ -| @@last_plan_from_cache | -+------------------------+ -| 1 | -+------------------------+ -1 row in set (0.00 sec) - -MySQL [test]> admin flush session plan_cache; -- Clear the cached plan of the current session -Query OK, 0 rows affected (0.00 sec) - -MySQL [test]> execute stmt; -Empty set (0.00 sec) - -MySQL [test]> select @@last_plan_from_cache; -- The cached plan cannot be selected again, because it has been cleared -+------------------------+ -| @@last_plan_from_cache | -+------------------------+ -| 0 | -+------------------------+ -1 row in set (0.00 sec) -``` - -Currently, TiDB does not support clearing `GLOBAL` execution plan cache. That means you cannot clear the cached plan of the whole TiDB cluster. The following error is reported if you try to clear the `GLOBAL` execution plan cache: - -{{< copyable "sql" >}} - -```sql -MySQL [test]> admin flush global plan_cache; -ERROR 1105 (HY000): Do not support the 'admin flush global scope.' -``` - -## Ignore the `COM_STMT_CLOSE` command and the `DEALLOCATE PREPARE` statement - -To reduce the syntax parsing cost of SQL statements, it is recommended that you run `prepare stmt` once, then `execute stmt` multiple times before running `deallocate prepare`: - -{{< copyable "sql" >}} - -```sql -MySQL [test]> prepare stmt from '...'; -- Prepare once -MySQL [test]> execute stmt using ...; -- Execute once -MySQL [test]> ... -MySQL [test]> execute stmt using ...; -- Execute multiple times -MySQL [test]> deallocate prepare stmt; -- Release the prepared statement -``` - -In real practice, you may be used to running `deallocate prepare` each time after running `execute stmt`, as shown below: - -{{< copyable "sql" >}} - -```sql -MySQL [test]> prepare stmt from '...'; -- Prepare once -MySQL [test]> execute stmt using ...; -MySQL [test]> deallocate prepare stmt; -- Release the prepared statement -MySQL [test]> prepare stmt from '...'; -- Prepare twice -MySQL [test]> execute stmt using ...; -MySQL [test]> deallocate prepare stmt; -- Release the prepared statement -``` - -In such practice, the plan obtained by the first executed statement cannot be reused by the second executed statement. - -To address the problem, you can set the system variable [`tidb_ignore_prepared_cache_close_stmt`](/system-variables.md#tidb_ignore_prepared_cache_close_stmt-new-in-v600) to `ON` so TiDB ignores commands to close `prepare stmt`: - -{{< copyable "sql" >}} - -```sql -mysql> set @@tidb_ignore_prepared_cache_close_stmt=1; -- Enable the variable -Query OK, 0 rows affected (0.00 sec) - -mysql> prepare stmt from 'select * from t'; -- Prepare once -Query OK, 0 rows affected (0.00 sec) - -mysql> execute stmt; -- Execute once -Empty set (0.00 sec) - -mysql> deallocate prepare stmt; -- Release after the first execute -Query OK, 0 rows affected (0.00 sec) - -mysql> prepare stmt from 'select * from t'; -- Prepare twice -Query OK, 0 rows affected (0.00 sec) - -mysql> execute stmt; -- Execute twice -Empty set (0.00 sec) - -mysql> select @@last_plan_from_cache; -- Reuse the last plan -+------------------------+ -| @@last_plan_from_cache | -+------------------------+ -| 1 | -+------------------------+ -1 row in set (0.00 sec) -``` - -### Monitoring - - - -In [the Grafana dashboard](/grafana-tidb-dashboard.md) on the TiDB page in the **Executor** section, there are the "Queries Using Plan Cache OPS" and "Plan Cache Miss OPS" graphs. These graphs can be used to check if both TiDB and the application are configured correctly to allow the SQL Plan Cache to work correctly. The **Server** section on the same page provides the "Prepared Statement Count" graph. This graph shows a non-zero value if the application uses prepared statements, which is required for the SQL Plan Cache to function correctly. - -![`sql_plan_cache`](/media/performance/sql_plan_cache.png) - - - - - -On the [**Monitoring**](/tidb-cloud/built-in-monitoring.md) page of the [TiDB Cloud console](https://tidbcloud.com/), you can check the `Queries Using Plan Cache OPS` metric to get the number of queries using or missing plan cache per second in all TiDB instances. - - From d07b3e386d6334f1c98969deb55a7f5ed3f83e7b Mon Sep 17 00:00:00 2001 From: qw4990 Date: Wed, 8 Jan 2025 16:50:07 +0800 Subject: [PATCH 3/7] fixup --- TOC-tidb-cloud.md | 4 +-- TOC.md | 4 +-- basic-features.md | 2 +- benchmark/benchmark-tidb-using-sysbench.md | 2 +- optimizer-fix-controls.md | 2 +- sql-optimization-concepts.md | 2 +- sql-plan-cache.md | 2 +- sql-statements/sql-statement-explain.md | 2 +- system-variable-reference.md | 34 ++++++++++---------- system-variables.md | 22 ++++++------- tidb-cloud/monitor-datadog-integration.md | 2 +- tidb-cloud/monitor-new-relic-integration.md | 2 +- tidb-cloud/tidb-cloud-sql-tuning-overview.md | 2 +- tidb-performance-tuning-config.md | 4 +-- troubleshoot-tidb-oom.md | 2 +- 15 files changed, 44 insertions(+), 44 deletions(-) diff --git a/TOC-tidb-cloud.md b/TOC-tidb-cloud.md index d6ba4ecbd2253..247181c1d0491 100644 --- a/TOC-tidb-cloud.md +++ b/TOC-tidb-cloud.md @@ -200,8 +200,8 @@ - [Distinct Optimization](/agg-distinct-optimization.md) - [Cost Model](/cost-model.md) - [Runtime Filter](/runtime-filter.md) - - [Prepared Execution Plan Cache](/sql-prepared-plan-cache.md) - - [Non-Prepared Execution Plan Cache](/sql-non-prepared-plan-cache.md) + - [Prepared Execution Plan Cache](/sql-plan-cache.md) + - [Non-Prepared Execution Plan Cache](/sql-plan-cache.md) - Control Execution Plans - [Overview](/control-execution-plan.md) - [Optimizer Hints](/optimizer-hints.md) diff --git a/TOC.md b/TOC.md index 0ebfe61be7a87..e8b32ecea3266 100644 --- a/TOC.md +++ b/TOC.md @@ -362,8 +362,8 @@ - [Distinct Optimization](/agg-distinct-optimization.md) - [Cost Model](/cost-model.md) - [Runtime Filter](/runtime-filter.md) - - [Prepared Execution Plan Cache](/sql-prepared-plan-cache.md) - - [Non-Prepared Execution Plan Cache](/sql-non-prepared-plan-cache.md) + - [Prepared Execution Plan Cache](/sql-plan-cache.md) + - [Non-Prepared Execution Plan Cache](/sql-plan-cache.md) - Control Execution Plans - [Overview](/control-execution-plan.md) - [Optimizer Hints](/optimizer-hints.md) diff --git a/basic-features.md b/basic-features.md index 05aa8b0d0099c..686e5e84e3caa 100644 --- a/basic-features.md +++ b/basic-features.md @@ -100,7 +100,7 @@ You can try out TiDB features on [TiDB Playground](https://play.tidbcloud.com/?u |---|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:| | [Vector search](/vector-search/vector-search-overview.md) | E | N | N | N | N | N | N | N | N | N | | [Prepared statement cache](/sql-prepared-plan-cache.md) | Y | Y | Y | Y | Y | Y | Y | Y | E | E | -| [Non-prepared statement cache](/sql-non-prepared-plan-cache.md) | Y | Y | Y | E | N | N | N | N | N | N | +| [Non-prepared statement cache](/sql-plan-cache.md) | Y | Y | Y | E | N | N | N | N | N | N | | [Instance-level execution plan cache](/system-variables.md#tidb_enable_instance_plan_cache-new-in-v840) | E | N | N | N | N | N | N | N | N | N | | [SQL binding](/sql-plan-management.md#sql-binding) | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | | [Cross-database binding](/sql-plan-management.md#cross-database-binding) | Y | Y | N | N | N | N | N | N | N | N | diff --git a/benchmark/benchmark-tidb-using-sysbench.md b/benchmark/benchmark-tidb-using-sysbench.md index f821bdb1ff03f..c218b61b1e1fb 100644 --- a/benchmark/benchmark-tidb-using-sysbench.md +++ b/benchmark/benchmark-tidb-using-sysbench.md @@ -20,7 +20,7 @@ server_configs: log.level: "error" ``` -It is also recommended to make sure [`tidb_enable_prepared_plan_cache`](/system-variables.md#tidb_enable_prepared_plan_cache-new-in-v610) is enabled and that you allow sysbench to use prepared statements by using `--db-ps-mode=auto`. See the [SQL Prepared Execution Plan Cache](/sql-prepared-plan-cache.md) for documentation about what the SQL plan cache does and how to monitor it. +It is also recommended to make sure [`tidb_enable_prepared_plan_cache`](/system-variables.md#tidb_enable_prepared_plan_cache-new-in-v610) is enabled and that you allow sysbench to use prepared statements by using `--db-ps-mode=auto`. See the [SQL Prepared Execution Plan Cache](/sql-plan-cache.md) for documentation about what the SQL plan cache does and how to monitor it. > **Note:** > diff --git a/optimizer-fix-controls.md b/optimizer-fix-controls.md index 0d0b905a07cbe..637216712fbc5 100644 --- a/optimizer-fix-controls.md +++ b/optimizer-fix-controls.md @@ -30,7 +30,7 @@ SET SESSION tidb_opt_fix_control = '44262:ON,44389:ON'; - Default value: `OFF` - Possible values: `ON`, `OFF` -- This variable controls whether to allow plan cache for partitioned tables. If it is set to `ON`, neither [Prepared statement plan cache](/sql-prepared-plan-cache.md) nor [Non-prepared statement plan cache](/sql-non-prepared-plan-cache.md) will be enabled for [partitioned tables](/partitioned-table.md). +- This variable controls whether to allow plan cache for partitioned tables. If it is set to `ON`, neither [Prepared statement plan cache](/sql-prepared-plan-cache.md) nor [Non-prepared statement plan cache](/sql-plan-cache.md) will be enabled for [partitioned tables](/partitioned-table.md). ### [`44262`](https://github.com/pingcap/tidb/issues/44262) New in v6.5.3 and v7.2.0 diff --git a/sql-optimization-concepts.md b/sql-optimization-concepts.md index e1c8935f02eae..9af0b83174312 100644 --- a/sql-optimization-concepts.md +++ b/sql-optimization-concepts.md @@ -14,4 +14,4 @@ After parsing the original query text by `parser` and some simple validity check Through these equivalent changes, this query becomes easier to handle in the logical execution plan. After the equivalent change is done, TiDB obtains a query plan structure equivalent to the original query, and then obtains a final execution plan based on the data distribution and the specific execution cost of an operator. For details, see [SQL Physical Optimization](/sql-physical-optimization.md). -At the same time, when TiDB executes the [`PREPARE`](/sql-statements/sql-statement-prepare.md) statement, you can choose to enable caching to reduce the cost of generating the execution plan in TiDB. For details, see [Execution Plan Cache](/sql-prepared-plan-cache.md). \ No newline at end of file +At the same time, when TiDB executes the [`PREPARE`](/sql-statements/sql-statement-prepare.md) statement, you can choose to enable caching to reduce the cost of generating the execution plan in TiDB. For details, see [Execution Plan Cache](/sql-plan-cache.md). \ No newline at end of file diff --git a/sql-plan-cache.md b/sql-plan-cache.md index a85c1f682dece..4db5f2c881dad 100644 --- a/sql-plan-cache.md +++ b/sql-plan-cache.md @@ -324,7 +324,7 @@ Non-Prepared Plan Cache has all limitations that Prepared Plan Cache has, and be Below are its limitations: - Queries or plans that are not supported by the Prepared plan cache are also not supported by the non-prepared plan cache. -- Queries or plans that are not supported by the [Prepared plan cache](/sql-prepared-plan-cache.md) are also not supported by the non-prepared plan cache. +- Queries or plans that are not supported by the [Prepared plan cache](/sql-plan-cache.md) are also not supported by the non-prepared plan cache. - Queries that contain complex operators such as `Window` or `Having` are not supported. - Queries that contain three or more `Join` tables or subqueries are not supported. - Queries that contain numbers or expressions directly after `ORDER BY` or `GROUP BY` are not supported, such as `ORDER BY 1` and `GROUP BY a+1`. Only `ORDER BY column_name` and `GROUP BY column_name` are supported. diff --git a/sql-statements/sql-statement-explain.md b/sql-statements/sql-statement-explain.md index 2c2f4ef77b9d3..15f04a08c7c3c 100644 --- a/sql-statements/sql-statement-explain.md +++ b/sql-statements/sql-statement-explain.md @@ -201,7 +201,7 @@ To specify the format of the `EXPLAIN` output, you can use the `FORMAT = xxx` sy | `row` | The `EXPLAIN` statement outputs results in a tabular format. See [Understand the Query Execution Plan](/explain-overview.md) for more information. | | `tidb_json` | The `EXPLAIN` statement outputs execution plans in JSON and stores the operator information in a JSON array. | | `verbose` | The `EXPLAIN` statement outputs results in the `row` format, with an additional `estCost` column for the estimated cost of the query in the results. For more information about how to use this format, see [SQL Plan Management](/sql-plan-management.md). | -| `plan_cache` | The `EXPLAIN` statement outputs results in the `row` format, with the [Plan Cache](/sql-non-prepared-plan-cache.md#diagnostics) information as a warning. | +| `plan_cache` | The `EXPLAIN` statement outputs results in the `row` format, with the [Plan Cache](/sql-plan-cache.md#diagnostics) information as a warning. | diff --git a/system-variable-reference.md b/system-variable-reference.md index 7f0643abb192e..a7a44a3c13416 100644 --- a/system-variable-reference.md +++ b/system-variable-reference.md @@ -449,7 +449,7 @@ Referenced in: - [Connect to TiDB with mysql2](/develop/dev-guide-sample-application-ruby-mysql2.md) - [Information Functions](/functions-and-operators/information-functions.md) - [SHOW BUILTINS](/sql-statements/sql-statement-show-builtins.md) -- [SQL Prepared Execution Plan Cache](/sql-prepared-plan-cache.md) +- [SQL Prepared Execution Plan Cache](/sql-plan-cache.md) - [System Variables](/system-variables.md#last_insert_id) - [TiDB 7.2.0 Release Notes](/releases/release-7.2.0.md) - [TiDB 3.1 RC Release Notes](/releases/release-3.1.0-rc.md) @@ -469,8 +469,8 @@ Referenced in: Referenced in: - [Index Selection](/choose-index.md) -- [SQL Non-Prepared Execution Plan Cache](/sql-non-prepared-plan-cache.md) -- [SQL Prepared Execution Plan Cache](/sql-prepared-plan-cache.md) +- [SQL Non-Prepared Execution Plan Cache](/sql-plan-cache.md) +- [SQL Prepared Execution Plan Cache](/sql-plan-cache.md) - [System Variables](/system-variables.md#last_plan_from_cache-new-in-v40) - [TiDB 4.0.2 Release Notes](/releases/release-4.0.2.md) @@ -524,7 +524,7 @@ Referenced in: - [Connection Pools and Connection Parameters](/develop/dev-guide-connection-parameters.md) - [Optimizer Hints](/optimizer-hints.md) - [SQL Plan Management (SPM)](/sql-plan-management.md) -- [SQL Prepared Execution Plan Cache](/sql-prepared-plan-cache.md) +- [SQL Prepared Execution Plan Cache](/sql-plan-cache.md) - [System Variables](/system-variables.md#max_execution_time) - [Timeouts in TiDB](/develop/dev-guide-timeouts-in-tidb.md) - [Troubleshoot TiDB OOM Issues](/troubleshoot-tidb-oom.md) @@ -701,7 +701,7 @@ Referenced in: Referenced in: -- [SQL Prepared Execution Plan Cache](/sql-prepared-plan-cache.md) +- [SQL Prepared Execution Plan Cache](/sql-plan-cache.md) - [System Variables](/system-variables.md#sql_select_limit-new-in-v402) - [TiDB 4.0.2 Release Notes](/releases/release-4.0.2.md) @@ -1709,7 +1709,7 @@ Referenced in: Referenced in: -- [SQL Non-Prepared Execution Plan Cache](/sql-non-prepared-plan-cache.md) +- [SQL Non-Prepared Execution Plan Cache](/sql-plan-cache.md) - [System Variables](/system-variables.md#tidb_enable_non_prepared_plan_cache) - [tidb-performance-tuning-config](/tidb-performance-tuning-config.md) - [TiDB 7.4.0 Release Notes](/releases/release-7.4.0.md) @@ -1722,7 +1722,7 @@ Referenced in: Referenced in: -- [SQL Non-Prepared Execution Plan Cache](/sql-non-prepared-plan-cache.md) +- [SQL Non-Prepared Execution Plan Cache](/sql-plan-cache.md) - [System Variables](/system-variables.md#tidb_enable_non_prepared_plan_cache_for_dml-new-in-v710) - [TiDB 7.1.0 Release Notes](/releases/release-7.1.0.md) @@ -1849,7 +1849,7 @@ Referenced in: Referenced in: - [How to Test TiDB Using Sysbench](/benchmark/benchmark-tidb-using-sysbench.md) -- [SQL Prepared Execution Plan Cache](/sql-prepared-plan-cache.md) +- [SQL Prepared Execution Plan Cache](/sql-plan-cache.md) - [System Variables](/system-variables.md#tidb_enable_prepared_plan_cache-new-in-v610) - [TiDB Cloud Release Notes in 2022](https://docs.pingcap.com/tidbcloud/release-notes-2022) - [TiDB Dashboard FAQs](/dashboard/dashboard-faq.md) @@ -2357,7 +2357,7 @@ Referenced in: - [Performance Analysis and Tuning](/performance-tuning-methods.md) - [Performance Tuning Practices for OLTP Scenarios](/performance-tuning-practices.md) -- [SQL Prepared Execution Plan Cache](/sql-prepared-plan-cache.md) +- [SQL Prepared Execution Plan Cache](/sql-plan-cache.md) - [System Variables](/system-variables.md#tidb_ignore_prepared_cache_close_stmt-new-in-v600) - [tidb-performance-tuning-config](/tidb-performance-tuning-config.md) - [TiDB 6.0.0 Release Notes](/releases/release-6.0.0-dmr.md) @@ -2957,7 +2957,7 @@ Referenced in: - [Control Execution Plan](/control-execution-plan.md) - [Optimizer Fix Controls](/optimizer-fix-controls.md) -- [SQL Non-Prepared Execution Plan Cache](/sql-non-prepared-plan-cache.md) +- [SQL Non-Prepared Execution Plan Cache](/sql-plan-cache.md) - [System Variables](/system-variables.md#tidb_opt_fix_control-new-in-v653-and-v710) - [tidb-performance-tuning-config](/tidb-performance-tuning-config.md) - [TiDB 7.2.0 Release Notes](/releases/release-7.2.0.md) @@ -3135,7 +3135,7 @@ Referenced in: Referenced in: - [Partitioning](/partitioned-table.md) -- [SQL Prepared Execution Plan Cache](/sql-prepared-plan-cache.md) +- [SQL Prepared Execution Plan Cache](/sql-plan-cache.md) - [System Variables](/system-variables.md#tidb_partition_prune_mode-new-in-v51) - [TiFlash Upgrade Guide](/tiflash-upgrade-guide.md) - [Use TiFlash MPP Mode](/tiflash/use-tiflash-mpp-mode.md) @@ -3181,8 +3181,8 @@ Referenced in: Referenced in: -- [SQL Non-Prepared Execution Plan Cache](/sql-non-prepared-plan-cache.md) -- [SQL Prepared Execution Plan Cache](/sql-prepared-plan-cache.md) +- [SQL Non-Prepared Execution Plan Cache](/sql-plan-cache.md) +- [SQL Prepared Execution Plan Cache](/sql-plan-cache.md) - [System Variables](/system-variables.md#tidb_plan_cache_max_plan_size-new-in-v710) - [TiDB 7.1.0 Release Notes](/releases/release-7.1.0.md) @@ -3214,7 +3214,7 @@ Referenced in: Referenced in: -- [SQL Prepared Execution Plan Cache](/sql-prepared-plan-cache.md) +- [SQL Prepared Execution Plan Cache](/sql-plan-cache.md) - [System Variables](/system-variables.md#tidb_prepared_plan_cache_memory_guard_ratio-new-in-v610) - [TiDB 6.1.0 Release Notes](/releases/release-6.1.0.md) @@ -3517,8 +3517,8 @@ Referenced in: Referenced in: -- [SQL Non-Prepared Execution Plan Cache](/sql-non-prepared-plan-cache.md) -- [SQL Prepared Execution Plan Cache](/sql-prepared-plan-cache.md) +- [SQL Non-Prepared Execution Plan Cache](/sql-plan-cache.md) +- [SQL Prepared Execution Plan Cache](/sql-plan-cache.md) - [System Variables](/system-variables.md#tidb_session_plan_cache_size-new-in-v710) - [TiDB Cloud Sysbench Performance Test Report for TiDB v8.1.0](https://docs.pingcap.com/tidbcloud/v8.1-performance-benchmarking-with-sysbench) - [TiDB 7.4.0 Release Notes](/releases/release-7.4.0.md) @@ -4105,7 +4105,7 @@ Referenced in: - [Date and Time Types](/data-type-date-and-time.md) - [SHOW [GLOBAL|SESSION] VARIABLES](/sql-statements/sql-statement-show-variables.md) -- [SQL Prepared Execution Plan Cache](/sql-prepared-plan-cache.md) +- [SQL Prepared Execution Plan Cache](/sql-plan-cache.md) - [System Variables](/system-variables.md#time_zone) - [Time Zone Support](/configure-time-zone.md) - [TiDB 6.0.0 Release Notes](/releases/release-6.0.0-dmr.md) diff --git a/system-variables.md b/system-variables.md index 1ac19b609ce1a..f99f4ccdf30cd 100644 --- a/system-variables.md +++ b/system-variables.md @@ -2198,7 +2198,7 @@ mysql> SELECT job_info FROM mysql.analyze_jobs ORDER BY end_time DESC LIMIT 1; - Applies to hint [SET_VAR](/optimizer-hints.md#set_varvar_namevar_value): Yes - Type: Boolean - Default value: `OFF` -- This variable controls whether to enable the [Non-prepared plan cache](/sql-non-prepared-plan-cache.md) feature. +- This variable controls whether to enable the [Non-prepared plan cache](/sql-plan-cache.md) feature. - Enabling this feature might incur additional memory and CPU overhead and might not be suitable for all situations. Please determine whether to enable this feature according to your actual scenario. ### tidb_enable_non_prepared_plan_cache_for_dml New in v7.1.0 @@ -2212,7 +2212,7 @@ mysql> SELECT job_info FROM mysql.analyze_jobs ORDER BY end_time DESC LIMIT 1; - Applies to hint [SET_VAR](/optimizer-hints.md#set_varvar_namevar_value): No - Type: Boolean - Default value: `OFF`. -- This variable controls whether to enable the [Non-prepared plan cache](/sql-non-prepared-plan-cache.md) feature for DML statements. +- This variable controls whether to enable the [Non-prepared plan cache](/sql-plan-cache.md) feature for DML statements. ### tidb_enable_gogc_tuner New in v6.4.0 @@ -2425,7 +2425,7 @@ mysql> SELECT job_info FROM mysql.analyze_jobs ORDER BY end_time DESC LIMIT 1; - Applies to hint [SET_VAR](/optimizer-hints.md#set_varvar_namevar_value): No - Type: Boolean - Default value: `OFF` -- This variable controls whether to enable the Instance Plan Cache feature. This feature implements instance-level execution plan cache, which allows all sessions within the same TiDB instance to share the execution plan cache, thereby improving memory utilization. Before enabling Instance Plan Cache, it is recommended to disable session-level [Prepared execution plan cache](/sql-prepared-plan-cache.md) and [Non-prepared execution plan cache](/sql-non-prepared-plan-cache.md). +- This variable controls whether to enable the Instance Plan Cache feature. This feature implements instance-level execution plan cache, which allows all sessions within the same TiDB instance to share the execution plan cache, thereby improving memory utilization. Before enabling Instance Plan Cache, it is recommended to disable session-level [Prepared execution plan cache](/sql-plan-cache.md) and [Non-prepared execution plan cache](/sql-plan-cache.md). ### tidb_enable_ordered_result_mode @@ -2555,7 +2555,7 @@ mysql> SELECT job_info FROM mysql.analyze_jobs ORDER BY end_time DESC LIMIT 1; - Applies to hint [SET_VAR](/optimizer-hints.md#set_varvar_namevar_value): Yes - Type: Boolean - Default value: `ON` -- Determines whether to enable [Prepared Plan Cache](/sql-prepared-plan-cache.md). When it is enabled, the execution plans of `Prepare` and `Execute` are cached so that the subsequent executions skip optimizing the execution plans, which brings performance improvement. +- Determines whether to enable [Prepared Plan Cache](/sql-plan-cache.md). When it is enabled, the execution plans of `Prepare` and `Execute` are cached so that the subsequent executions skip optimizing the execution plans, which brings performance improvement. - This setting was previously a `tidb.toml` option (`prepared-plan-cache.enabled`), but changed to a system variable starting from TiDB v6.1.0. ### tidb_enable_prepared_plan_cache_memory_monitor New in v6.4.0 @@ -2564,7 +2564,7 @@ mysql> SELECT job_info FROM mysql.analyze_jobs ORDER BY end_time DESC LIMIT 1; - Persists to cluster: Yes - Applies to hint [SET_VAR](/optimizer-hints.md#set_varvar_namevar_value): No - Default value: `ON` -- This variable controls whether to count the memory consumed by the execution plans cached in the Prepared Plan Cache. For details, see [Memory management of Prepared Plan Cache](/sql-prepared-plan-cache.md#memory-management-of-prepared-plan-cache). +- This variable controls whether to count the memory consumed by the execution plans cached in the Prepared Plan Cache. For details, see [Memory management of Prepared Plan Cache](/sql-plan-cache.md#memory-management-of-prepared-plan-cache). ### tidb_enable_pseudo_for_outdated_stats New in v5.3.0 @@ -3162,7 +3162,7 @@ For a system upgraded to v5.0 from an earlier version, if you have not modified - Type: Integer - Default value: `100` - Range: `[1, 100000]` -- This variable controls the maximum number of execution plans that can be cached by [Non-prepared plan cache](/sql-non-prepared-plan-cache.md). +- This variable controls the maximum number of execution plans that can be cached by [Non-prepared plan cache](/sql-plan-cache.md). ### tidb_pre_split_regions New in v8.4.0 @@ -3344,7 +3344,7 @@ For a system upgraded to v5.0 from an earlier version, if you have not modified - Type: Boolean - Default value: `OFF` - This variable is used to set whether to ignore the commands for closing prepared statement cache. -- When this variable is set to `ON`, the `COM_STMT_CLOSE` command of the Binary protocol and the [`DEALLOCATE PREPARE`](/sql-statements/sql-statement-deallocate.md) statement of the text protocol are ignored. For details, see [Ignore the `COM_STMT_CLOSE` command and the `DEALLOCATE PREPARE` statement](/sql-prepared-plan-cache.md#ignore-the-com_stmt_close-command-and-the-deallocate-prepare-statement). +- When this variable is set to `ON`, the `COM_STMT_CLOSE` command of the Binary protocol and the [`DEALLOCATE PREPARE`](/sql-statements/sql-statement-deallocate.md) statement of the text protocol are ignored. For details, see [Ignore the `COM_STMT_CLOSE` command and the `DEALLOCATE PREPARE` statement](/sql-plan-cache.md#ignore-the-com_stmt_close-command-and-the-deallocate-prepare-statement). ### tidb_index_join_batch_size @@ -4932,7 +4932,7 @@ SHOW WARNINGS; - Applies to hint [SET_VAR](/optimizer-hints.md#set_varvar_namevar_value): Yes - Default value: `2097152` (which is 2 MiB) - Range: `[0, 9223372036854775807]`, in bytes. The memory format with the units "KiB|MiB|GiB|TiB" is also supported. `0` means no limit. -- This variable controls the maximum size of a plan that can be cached in prepared or non-prepared plan cache. If the size of a plan exceeds this value, the plan will not be cached. For more details, see [Memory management of prepared plan cache](/sql-prepared-plan-cache.md#memory-management-of-prepared-plan-cache) and [Non-prepared plan cache](/sql-plan-management.md#usage). +- This variable controls the maximum size of a plan that can be cached in prepared or non-prepared plan cache. If the size of a plan exceeds this value, the plan will not be cached. For more details, see [Memory management of prepared plan cache](/sql-plan-cache.md#memory-management-of-prepared-plan-cache) and [Non-prepared plan cache](/sql-plan-management.md#usage). ### tidb_pprof_sql_cpu New in v4.0 @@ -4965,7 +4965,7 @@ SHOW WARNINGS; - Type: Float - Default value: `0.1` - Range: `[0, 1]` -- The threshold at which the prepared plan cache triggers a memory protection mechanism. For details, see [Memory management of Prepared Plan Cache](/sql-prepared-plan-cache.md). +- The threshold at which the prepared plan cache triggers a memory protection mechanism. For details, see [Memory management of Prepared Plan Cache](/sql-plan-cache.md). - This setting was previously a `tidb.toml` option (`prepared-plan-cache.memory-guard-ratio`), but changed to a system variable starting from TiDB v6.1.0. ### tidb_prepared_plan_cache_size New in v6.1.0 @@ -4980,7 +4980,7 @@ SHOW WARNINGS; - Type: Integer - Default value: `100` - Range: `[1, 100000]` -- The maximum number of plans that can be cached in a session. For details, see [Memory management of Prepared Plan Cache](/sql-prepared-plan-cache.md). +- The maximum number of plans that can be cached in a session. For details, see [Memory management of Prepared Plan Cache](/sql-plan-cache.md). - This setting was previously a `tidb.toml` option (`prepared-plan-cache.capacity`), but changed to a system variable starting from TiDB v6.1.0. ### tidb_projection_concurrency @@ -5328,7 +5328,7 @@ SHOW WARNINGS; - Type: Integer - Default value: `100` - Range: `[1, 100000]` -- This variable controls the maximum number of plans that can be cached. [Prepared plan cache](/sql-prepared-plan-cache.md) and [non-prepared plan cache](/sql-non-prepared-plan-cache.md) share the same cache. +- This variable controls the maximum number of plans that can be cached. [Prepared plan cache](/sql-plan-cache.md) and [non-prepared plan cache](/sql-plan-cache.md) share the same cache. - When you upgrade from an earlier version to a v7.1.0 or later version, this variable remains the same value as [`tidb_prepared_plan_cache_size`](#tidb_prepared_plan_cache_size-new-in-v610) ### tidb_shard_allocate_step New in v5.0 diff --git a/tidb-cloud/monitor-datadog-integration.md b/tidb-cloud/monitor-datadog-integration.md index 7f1edc90d4759..91ec23f49e177 100644 --- a/tidb-cloud/monitor-datadog-integration.md +++ b/tidb-cloud/monitor-datadog-integration.md @@ -60,7 +60,7 @@ Datadog tracks the following metric data for your TiDB clusters. | tidb_cloud.db_active_connections| gauge | cluster_name: ``
instance: tidb-0\|tidb-1…
component: `tidb` | The number of active connections. | | tidb_cloud.db_disconnections| gauge | result: ok\|error\|undetermined
cluster_name: ``
instance: tidb-0\|tidb-1…
component: `tidb` | The number of disconnected clients. | | tidb_cloud.db_command_per_second| gauge | type: Query\|StmtPrepare\|...
cluster_name: ``
instance: tidb-0\|tidb-1…
component: `tidb` | The number of commands processed by TiDB per second, which is classified according to the success or failure of command execution results. | -| tidb_cloud.db_queries_using_plan_cache_ops| gauge | cluster_name: ``
instance: tidb-0\|tidb-1…
component: `tidb` | The statistics of queries using [Plan Cache](/sql-prepared-plan-cache.md) per second. The execution plan cache only supports the prepared statement command. | +| tidb_cloud.db_queries_using_plan_cache_ops| gauge | cluster_name: ``
instance: tidb-0\|tidb-1…
component: `tidb` | The statistics of queries using [Plan Cache](/sql-plan-cache.md) per second. The execution plan cache only supports the prepared statement command. | | tidb_cloud.db_transaction_per_second| gauge | txn_mode: pessimistic\|optimistic
type: abort\|commit\|...
cluster_name: ``
instance: tidb-0\|tidb-1…
component: `tidb` | The number of transactions executed per second. | | tidb_cloud.node_storage_used_bytes | gauge | cluster_name: ``
instance: tikv-0\|tikv-1…\|tiflash-0\|tiflash-1…
component: tikv\|tiflash | The disk usage of TiKV/TiFlash nodes, in bytes. | | tidb_cloud.node_storage_capacity_bytes | gauge | cluster_name: ``
instance: tikv-0\|tikv-1…\|tiflash-0\|tiflash-1…
component: tikv\|tiflash | The disk capacity of TiKV/TiFlash nodes, in bytes. | diff --git a/tidb-cloud/monitor-new-relic-integration.md b/tidb-cloud/monitor-new-relic-integration.md index b8b6b1c11164d..f47f058e23be2 100644 --- a/tidb-cloud/monitor-new-relic-integration.md +++ b/tidb-cloud/monitor-new-relic-integration.md @@ -58,7 +58,7 @@ New Relic tracks the following metric data for your TiDB clusters. | tidb_cloud.db_active_connections| gauge | cluster_name: ``

instance: tidb-0\|tidb-1…

component: `tidb` | The number of active connections. | | tidb_cloud.db_disconnections| gauge | result: ok\|error\|undetermined

cluster_name: ``

instance: tidb-0\|tidb-1…

component: `tidb` | The number of disconnected clients. | | tidb_cloud.db_command_per_second| gauge | type: Query\|StmtPrepare\|...

cluster_name: ``

instance: tidb-0\|tidb-1…

component: `tidb` | The number of commands processed by TiDB per second, which is classified according to the success or failure of command execution results. | -| tidb_cloud.db_queries_using_plan_cache_ops| gauge | cluster_name: ``

instance: tidb-0\|tidb-1…

component: `tidb` | The statistics of queries using [Plan Cache](/sql-prepared-plan-cache.md) per second. The execution plan cache only supports the prepared statement command. | +| tidb_cloud.db_queries_using_plan_cache_ops| gauge | cluster_name: ``

instance: tidb-0\|tidb-1…

component: `tidb` | The statistics of queries using [Plan Cache](/sql-plan-cache.md) per second. The execution plan cache only supports the prepared statement command. | | tidb_cloud.db_transaction_per_second| gauge | txn_mode: pessimistic\|optimistic

type: abort\|commit\|...

cluster_name: ``

instance: tidb-0\|tidb-1…

component: `tidb` | The number of transactions executed per second. | | tidb_cloud.node_storage_used_bytes | gauge | cluster_name: ``

instance: tikv-0\|tikv-1…\|tiflash-0\|tiflash-1…

component: tikv\|tiflash | The disk usage of TiKV/TiFlash nodes, in bytes. | | tidb_cloud.node_storage_capacity_bytes | gauge | cluster_name: ``

instance: tikv-0\|tikv-1…\|tiflash-0\|tiflash-1…

component: tikv\|tiflash | The disk capacity of TiKV/TiFlash nodes, in bytes. | diff --git a/tidb-cloud/tidb-cloud-sql-tuning-overview.md b/tidb-cloud/tidb-cloud-sql-tuning-overview.md index 0058552892dfc..888c6c21ff1a3 100644 --- a/tidb-cloud/tidb-cloud-sql-tuning-overview.md +++ b/tidb-cloud/tidb-cloud-sql-tuning-overview.md @@ -57,7 +57,7 @@ After parsing the original query text by `parser` and basic validity verificatio Through these equivalence changes, the query can become easier to handle in the logical execution plan. After the equivalence changes, TiDB gets a query plan structure that is equivalent to the original query, and then gets a final execution plan based on the data distribution and the specific execution overhead of an operator. For more information, see [SQL Physical Optimization](/sql-physical-optimization.md). -Also, TiDB can choose to enable execution plan cache to reduce the creation overhead of the execution plan when executing the `PREPARE` statement, as introduced in [Prepare Execution Plan Cache](/sql-prepared-plan-cache.md). +Also, TiDB can choose to enable execution plan cache to reduce the creation overhead of the execution plan when executing the `PREPARE` statement, as introduced in [Prepare Execution Plan Cache](/sql-plan-cache.md). ### Optimize full table scan diff --git a/tidb-performance-tuning-config.md b/tidb-performance-tuning-config.md index 234bbbd731386..e6e47d72df636 100644 --- a/tidb-performance-tuning-config.md +++ b/tidb-performance-tuning-config.md @@ -26,7 +26,7 @@ This guide describes the non-default settings, including their benefits and pote The following settings are commonly used to optimize TiDB performance: -- Enhance execution plan cache, such as [SQL Prepared Execution Plan Cache](/sql-prepared-plan-cache.md), [Non-prepared plan cache](/sql-non-prepared-plan-cache.md), and [Instance-level execution plan cache](/system-variables.md#tidb_enable_instance_plan_cache-new-in-v840). +- Enhance execution plan cache, such as [SQL Prepared Execution Plan Cache](/sql-plan-cache.md), [Non-prepared plan cache](/sql-plan-cache.md), and [Instance-level execution plan cache](/system-variables.md#tidb_enable_instance_plan_cache-new-in-v840). - Optimize the behavior of the TiDB optimizer by using [Optimizer Fix Controls](/optimizer-fix-controls.md). - Use the [Titan](/storage-engine/titan-overview.md) storage engine more aggressively. @@ -57,7 +57,7 @@ The following table outlines the impact of specific system variable configuratio | System variable | Description | Note | | ---------| ---- | ----| | [`tidb_enable_instance_plan_cache`](/system-variables.md#tidb_enable_instance_plan_cache-new-in-v840) and [`tidb_instance_plan_cache_max_size`](/system-variables.md#tidb_instance_plan_cache_max_size-new-in-v840)| Use instance-level plan cache instead of session-level caching. This significantly improves performance for workloads with high connection counts or frequent prepared statement usage. | This is an experimental feature. Test in non-production environments first and monitor memory usage as the plan cache size increases. | -| [`tidb_enable_non_prepared_plan_cache`](/system-variables.md#tidb_enable_non_prepared_plan_cache)| Enable the [Non-prepared plan cache](/sql-non-prepared-plan-cache.md) feature to reduce compile costs for applications that do not use prepared statements. | N/A | +| [`tidb_enable_non_prepared_plan_cache`](/system-variables.md#tidb_enable_non_prepared_plan_cache)| Enable the [Non-prepared plan cache](/sql-plan-cache.md) feature to reduce compile costs for applications that do not use prepared statements. | N/A | | [`tidb_ignore_prepared_cache_close_stmt`](/system-variables.md#tidb_ignore_prepared_cache_close_stmt-new-in-v600)| Cache plans for applications that use prepared statements but close the plan after each execution. | N/A | | [`tidb_analyze_column_options`](/system-variables.md#tidb_analyze_column_options-new-in-v830)| Collect statistics for all columns to avoid suboptimal execution plans due to missing column statistics. By default, TiDB only collects statistics for [predicate columns](/statistics.md#collect-statistics-on-some-columns). | Setting this variable to `'ALL'` can cause more resource usage for the `ANALYZE TABLE` operation compared with the default value `'PREDICATE'`. | | [`tidb_enable_inl_join_inner_multi_pattern`](/system-variables.md#tidb_enable_inl_join_inner_multi_pattern-new-in-v700)| Enable Index Join support when the inner table has `Selection` or `Projection` operators on it. | N/A | diff --git a/troubleshoot-tidb-oom.md b/troubleshoot-tidb-oom.md index 1c2f102cd0681..6784f4a100d32 100644 --- a/troubleshoot-tidb-oom.md +++ b/troubleshoot-tidb-oom.md @@ -122,7 +122,7 @@ For more information, see [Introduction to Statistics](/statistics.md). #### Prepared statements are overused -The client side keeps creating prepared statements but does not execute [`deallocate prepare stmt`](/sql-prepared-plan-cache.md#ignore-the-com_stmt_close-command-and-the-deallocate-prepare-statement), which causes memory consumption to continue to rise and eventually triggers TiDB OOM. The reason is that the memory occupied by a prepared statement is not released until the session is closed. This is especially important for long-time connection sessions. +The client side keeps creating prepared statements but does not execute [`deallocate prepare stmt`](/sql-plan-cache.md#ignore-the-com_stmt_close-command-and-the-deallocate-prepare-statement), which causes memory consumption to continue to rise and eventually triggers TiDB OOM. The reason is that the memory occupied by a prepared statement is not released until the session is closed. This is especially important for long-time connection sessions. To solve the problem, consider the following measures: From 2b128b668f7735808bcd669bd0ff483298c60566 Mon Sep 17 00:00:00 2001 From: qw4990 Date: Wed, 8 Jan 2025 16:57:23 +0800 Subject: [PATCH 4/7] fixup --- TOC-tidb-cloud.md | 3 +-- TOC.md | 3 +-- basic-features.md | 3 +-- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/TOC-tidb-cloud.md b/TOC-tidb-cloud.md index 247181c1d0491..a31ea81de0786 100644 --- a/TOC-tidb-cloud.md +++ b/TOC-tidb-cloud.md @@ -200,8 +200,7 @@ - [Distinct Optimization](/agg-distinct-optimization.md) - [Cost Model](/cost-model.md) - [Runtime Filter](/runtime-filter.md) - - [Prepared Execution Plan Cache](/sql-plan-cache.md) - - [Non-Prepared Execution Plan Cache](/sql-plan-cache.md) + - [SQL Plan Cache](/sql-plan-cache.md) - Control Execution Plans - [Overview](/control-execution-plan.md) - [Optimizer Hints](/optimizer-hints.md) diff --git a/TOC.md b/TOC.md index e8b32ecea3266..3ec917a435dbd 100644 --- a/TOC.md +++ b/TOC.md @@ -362,8 +362,7 @@ - [Distinct Optimization](/agg-distinct-optimization.md) - [Cost Model](/cost-model.md) - [Runtime Filter](/runtime-filter.md) - - [Prepared Execution Plan Cache](/sql-plan-cache.md) - - [Non-Prepared Execution Plan Cache](/sql-plan-cache.md) + - [SQL Plan Cache](/sql-plan-cache.md) - Control Execution Plans - [Overview](/control-execution-plan.md) - [Optimizer Hints](/optimizer-hints.md) diff --git a/basic-features.md b/basic-features.md index 686e5e84e3caa..48ef73bc62bba 100644 --- a/basic-features.md +++ b/basic-features.md @@ -99,8 +99,7 @@ You can try out TiDB features on [TiDB Playground](https://play.tidbcloud.com/?u | Advanced SQL features | 8.5 | 8.1 | 7.5 | 7.1 | 6.5 | 6.1 | 5.4 | 5.3 | 5.2 | 5.1 | |---|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:| | [Vector search](/vector-search/vector-search-overview.md) | E | N | N | N | N | N | N | N | N | N | -| [Prepared statement cache](/sql-prepared-plan-cache.md) | Y | Y | Y | Y | Y | Y | Y | Y | E | E | -| [Non-prepared statement cache](/sql-plan-cache.md) | Y | Y | Y | E | N | N | N | N | N | N | +| [SQL Plan cache](/sql-plan-cache.md) | Y | Y | Y | Y | Y | Y | Y | Y | E | E | | [Instance-level execution plan cache](/system-variables.md#tidb_enable_instance_plan_cache-new-in-v840) | E | N | N | N | N | N | N | N | N | N | | [SQL binding](/sql-plan-management.md#sql-binding) | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | | [Cross-database binding](/sql-plan-management.md#cross-database-binding) | Y | Y | N | N | N | N | N | N | N | N | From 15678e641f7e1959dd63f7608381f7201271a9d0 Mon Sep 17 00:00:00 2001 From: qw4990 Date: Wed, 8 Jan 2025 16:57:56 +0800 Subject: [PATCH 5/7] fixup --- latency-breakdown.md | 2 +- optimizer-fix-controls.md | 2 +- optimizer-hints.md | 2 +- performance-tuning-methods.md | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/latency-breakdown.md b/latency-breakdown.md index 56fb881e7faf1..50e921a9d901c 100644 --- a/latency-breakdown.md +++ b/latency-breakdown.md @@ -66,7 +66,7 @@ e2e duration = - `tidb_server_get_token_duration_seconds` records the duration of Token waiting. This is usually less than 1 millisecond and is small enough to be ignored. - `tidb_session_parse_duration_seconds` records the duration of parsing SQL queries to an Abstract Syntax Tree (AST), which can be skipped by [`PREPARE/EXECUTE` statements](/develop/dev-guide-optimize-sql-best-practices.md#use-prepare). -- `tidb_session_compile_duration_seconds` records the duration of compiling an AST to an execution plan, which can be skipped by [SQL prepared execution plan cache](/sql-prepared-plan-cache.md). +- `tidb_session_compile_duration_seconds` records the duration of compiling an AST to an execution plan, which can be skipped by [SQL prepared execution plan cache](/sql-plan-cache.md). - `tidb_session_execute_duration_seconds{type="general"}` records the duration of execution, which mixes all types of user queries. This needs to be broken down into fine-grained durations for analyzing performance issues or bottlenecks. Generally, OLTP (Online Transactional Processing) workload can be divided into read and write queries, which share some critical code. The following sections describe latency in [read queries](#read-queries) and [write queries](#write-queries), which are executed differently. diff --git a/optimizer-fix-controls.md b/optimizer-fix-controls.md index 637216712fbc5..59172d1c5eb24 100644 --- a/optimizer-fix-controls.md +++ b/optimizer-fix-controls.md @@ -30,7 +30,7 @@ SET SESSION tidb_opt_fix_control = '44262:ON,44389:ON'; - Default value: `OFF` - Possible values: `ON`, `OFF` -- This variable controls whether to allow plan cache for partitioned tables. If it is set to `ON`, neither [Prepared statement plan cache](/sql-prepared-plan-cache.md) nor [Non-prepared statement plan cache](/sql-plan-cache.md) will be enabled for [partitioned tables](/partitioned-table.md). +- This variable controls whether to allow plan cache for partitioned tables. If it is set to `ON`, neither [Prepared statement plan cache](/sql-plan-cache.md) nor [Non-prepared statement plan cache](/sql-plan-cache.md) will be enabled for [partitioned tables](/partitioned-table.md). ### [`44262`](https://github.com/pingcap/tidb/issues/44262) New in v6.5.3 and v7.2.0 diff --git a/optimizer-hints.md b/optimizer-hints.md index d3468c85f89f7..2e6118ee14b99 100644 --- a/optimizer-hints.md +++ b/optimizer-hints.md @@ -771,7 +771,7 @@ In addition to this hint, setting the `tidb_replica_read` environment variable t The `IGNORE_PLAN_CACHE()` hint reminds the optimizer not to use the Plan Cache when handling the current `prepare` statement. -This hint is used to temporarily disable the Plan Cache for a certain type of queries when [prepare-plan-cache](/sql-prepared-plan-cache.md) is enabled. +This hint is used to temporarily disable the Plan Cache for a certain type of queries when [prepare-plan-cache](/sql-plan-cache.md) is enabled. In the following example, the Plan Cache is forcibly disabled when executing the `prepare` statement. diff --git a/performance-tuning-methods.md b/performance-tuning-methods.md index 45c7d746f8d07..04c74c9267f82 100644 --- a/performance-tuning-methods.md +++ b/performance-tuning-methods.md @@ -137,7 +137,7 @@ The diagrams of database time breakdown and execution time overview present both #### Query Per Second, Command Per Second, and Prepared-Plan-Cache -By checking the following three panels in Performance Overview, you can learn the application workload type, how the application interacts with TiDB, and whether the application fully utilizes TiDB [prepared plan cache](/sql-prepared-plan-cache.md). +By checking the following three panels in Performance Overview, you can learn the application workload type, how the application interacts with TiDB, and whether the application fully utilizes TiDB [prepared plan cache](/sql-plan-cache.md). - QPS: Short for Query Per Second. It shows the count of SQL statements executed by the application. - CPS By Type: Short for Command Per Second. Command indicates MySQL protocol-specific commands. A query statement can be sent to TiDB either by a query command or a prepared statement. @@ -148,7 +148,7 @@ By checking the following three panels in Performance Overview, you can learn th - No prepared plan cache is hit: `avg-hit` (the number of hits per second) is 0, and `avg-miss` is equal to the number of `StmtExecute` commands per second. The possible reasons include: - The application is using the query interface. - The cached plans are cleaned up because the application calls the `StmtClose` command after each `StmtExecute` execution. - - All statements executed by `StmtExecute` do not meet the [cache conditions](/sql-prepared-plan-cache.md) so the execution plan cache cannot be hit. + - All statements executed by `StmtExecute` do not meet the [cache conditions](/sql-plan-cache.md) so the execution plan cache cannot be hit. - All prepared plan cache is hit: `avg-hit` (the number of hits per second) is equal to the number of `StmtExecute` commands per second, and `avg-miss` (the number without hits per second) is 0. - Some prepared plan cache is hit: `avg-hit` (the number of hits per second) is fewer than the number of `StmtExecute` commands per second. Prepared plan cache has known limitations. For example, it does not support subqueries, so SQL statements with subqueries cannot use prepared plan cache. From f6f8dfa73b6370acc30da871ac17883f9a192b06 Mon Sep 17 00:00:00 2001 From: qw4990 Date: Wed, 8 Jan 2025 17:01:32 +0800 Subject: [PATCH 6/7] fixup --- basic-features.md | 1 - sql-statements/sql-statement-explain.md | 2 +- system-variable-reference.md | 33 ++++++++++++------------- 3 files changed, 17 insertions(+), 19 deletions(-) diff --git a/basic-features.md b/basic-features.md index 48ef73bc62bba..fdb7ee4b1a1fc 100644 --- a/basic-features.md +++ b/basic-features.md @@ -100,7 +100,6 @@ You can try out TiDB features on [TiDB Playground](https://play.tidbcloud.com/?u |---|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:| | [Vector search](/vector-search/vector-search-overview.md) | E | N | N | N | N | N | N | N | N | N | | [SQL Plan cache](/sql-plan-cache.md) | Y | Y | Y | Y | Y | Y | Y | Y | E | E | -| [Instance-level execution plan cache](/system-variables.md#tidb_enable_instance_plan_cache-new-in-v840) | E | N | N | N | N | N | N | N | N | N | | [SQL binding](/sql-plan-management.md#sql-binding) | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | | [Cross-database binding](/sql-plan-management.md#cross-database-binding) | Y | Y | N | N | N | N | N | N | N | N | | [Create bindings according to historical execution plans](/sql-plan-management.md#create-a-binding-according-to-a-historical-execution-plan) | Y | Y | Y | Y | E | N | N | N | N | N | diff --git a/sql-statements/sql-statement-explain.md b/sql-statements/sql-statement-explain.md index 15f04a08c7c3c..4cc45107d975d 100644 --- a/sql-statements/sql-statement-explain.md +++ b/sql-statements/sql-statement-explain.md @@ -201,7 +201,7 @@ To specify the format of the `EXPLAIN` output, you can use the `FORMAT = xxx` sy | `row` | The `EXPLAIN` statement outputs results in a tabular format. See [Understand the Query Execution Plan](/explain-overview.md) for more information. | | `tidb_json` | The `EXPLAIN` statement outputs execution plans in JSON and stores the operator information in a JSON array. | | `verbose` | The `EXPLAIN` statement outputs results in the `row` format, with an additional `estCost` column for the estimated cost of the query in the results. For more information about how to use this format, see [SQL Plan Management](/sql-plan-management.md). | -| `plan_cache` | The `EXPLAIN` statement outputs results in the `row` format, with the [Plan Cache](/sql-plan-cache.md#diagnostics) information as a warning. | +| `plan_cache` | The `EXPLAIN` statement outputs results in the `row` format, with the [Plan Cache](/sql-plan-cache.md#management-and-diagnosis-of-plan-cache) information as a warning. | diff --git a/system-variable-reference.md b/system-variable-reference.md index a7a44a3c13416..4c3cb50df52c0 100644 --- a/system-variable-reference.md +++ b/system-variable-reference.md @@ -449,7 +449,7 @@ Referenced in: - [Connect to TiDB with mysql2](/develop/dev-guide-sample-application-ruby-mysql2.md) - [Information Functions](/functions-and-operators/information-functions.md) - [SHOW BUILTINS](/sql-statements/sql-statement-show-builtins.md) -- [SQL Prepared Execution Plan Cache](/sql-plan-cache.md) +- [SQL Plan Cache](/sql-plan-cache.md) - [System Variables](/system-variables.md#last_insert_id) - [TiDB 7.2.0 Release Notes](/releases/release-7.2.0.md) - [TiDB 3.1 RC Release Notes](/releases/release-3.1.0-rc.md) @@ -469,8 +469,7 @@ Referenced in: Referenced in: - [Index Selection](/choose-index.md) -- [SQL Non-Prepared Execution Plan Cache](/sql-plan-cache.md) -- [SQL Prepared Execution Plan Cache](/sql-plan-cache.md) +- [SQL Plan Cache](/sql-plan-cache.md) - [System Variables](/system-variables.md#last_plan_from_cache-new-in-v40) - [TiDB 4.0.2 Release Notes](/releases/release-4.0.2.md) @@ -524,7 +523,7 @@ Referenced in: - [Connection Pools and Connection Parameters](/develop/dev-guide-connection-parameters.md) - [Optimizer Hints](/optimizer-hints.md) - [SQL Plan Management (SPM)](/sql-plan-management.md) -- [SQL Prepared Execution Plan Cache](/sql-plan-cache.md) +- [SQL Plan Cache](/sql-plan-cache.md) - [System Variables](/system-variables.md#max_execution_time) - [Timeouts in TiDB](/develop/dev-guide-timeouts-in-tidb.md) - [Troubleshoot TiDB OOM Issues](/troubleshoot-tidb-oom.md) @@ -701,7 +700,7 @@ Referenced in: Referenced in: -- [SQL Prepared Execution Plan Cache](/sql-plan-cache.md) +- [SQL Plan Cache](/sql-plan-cache.md) - [System Variables](/system-variables.md#sql_select_limit-new-in-v402) - [TiDB 4.0.2 Release Notes](/releases/release-4.0.2.md) @@ -1709,7 +1708,7 @@ Referenced in: Referenced in: -- [SQL Non-Prepared Execution Plan Cache](/sql-plan-cache.md) +- [SQL Non-Plan Cache](/sql-plan-cache.md) - [System Variables](/system-variables.md#tidb_enable_non_prepared_plan_cache) - [tidb-performance-tuning-config](/tidb-performance-tuning-config.md) - [TiDB 7.4.0 Release Notes](/releases/release-7.4.0.md) @@ -1722,7 +1721,7 @@ Referenced in: Referenced in: -- [SQL Non-Prepared Execution Plan Cache](/sql-plan-cache.md) +- [SQL Non-Plan Cache](/sql-plan-cache.md) - [System Variables](/system-variables.md#tidb_enable_non_prepared_plan_cache_for_dml-new-in-v710) - [TiDB 7.1.0 Release Notes](/releases/release-7.1.0.md) @@ -1849,7 +1848,7 @@ Referenced in: Referenced in: - [How to Test TiDB Using Sysbench](/benchmark/benchmark-tidb-using-sysbench.md) -- [SQL Prepared Execution Plan Cache](/sql-plan-cache.md) +- [SQL Plan Cache](/sql-plan-cache.md) - [System Variables](/system-variables.md#tidb_enable_prepared_plan_cache-new-in-v610) - [TiDB Cloud Release Notes in 2022](https://docs.pingcap.com/tidbcloud/release-notes-2022) - [TiDB Dashboard FAQs](/dashboard/dashboard-faq.md) @@ -2357,7 +2356,7 @@ Referenced in: - [Performance Analysis and Tuning](/performance-tuning-methods.md) - [Performance Tuning Practices for OLTP Scenarios](/performance-tuning-practices.md) -- [SQL Prepared Execution Plan Cache](/sql-plan-cache.md) +- [SQL Plan Cache](/sql-plan-cache.md) - [System Variables](/system-variables.md#tidb_ignore_prepared_cache_close_stmt-new-in-v600) - [tidb-performance-tuning-config](/tidb-performance-tuning-config.md) - [TiDB 6.0.0 Release Notes](/releases/release-6.0.0-dmr.md) @@ -2957,7 +2956,7 @@ Referenced in: - [Control Execution Plan](/control-execution-plan.md) - [Optimizer Fix Controls](/optimizer-fix-controls.md) -- [SQL Non-Prepared Execution Plan Cache](/sql-plan-cache.md) +- [SQL Non-Plan Cache](/sql-plan-cache.md) - [System Variables](/system-variables.md#tidb_opt_fix_control-new-in-v653-and-v710) - [tidb-performance-tuning-config](/tidb-performance-tuning-config.md) - [TiDB 7.2.0 Release Notes](/releases/release-7.2.0.md) @@ -3135,7 +3134,7 @@ Referenced in: Referenced in: - [Partitioning](/partitioned-table.md) -- [SQL Prepared Execution Plan Cache](/sql-plan-cache.md) +- [SQL Plan Cache](/sql-plan-cache.md) - [System Variables](/system-variables.md#tidb_partition_prune_mode-new-in-v51) - [TiFlash Upgrade Guide](/tiflash-upgrade-guide.md) - [Use TiFlash MPP Mode](/tiflash/use-tiflash-mpp-mode.md) @@ -3181,8 +3180,8 @@ Referenced in: Referenced in: -- [SQL Non-Prepared Execution Plan Cache](/sql-plan-cache.md) -- [SQL Prepared Execution Plan Cache](/sql-plan-cache.md) +- [SQL Non-Plan Cache](/sql-plan-cache.md) +- [SQL Plan Cache](/sql-plan-cache.md) - [System Variables](/system-variables.md#tidb_plan_cache_max_plan_size-new-in-v710) - [TiDB 7.1.0 Release Notes](/releases/release-7.1.0.md) @@ -3214,7 +3213,7 @@ Referenced in: Referenced in: -- [SQL Prepared Execution Plan Cache](/sql-plan-cache.md) +- [SQL Plan Cache](/sql-plan-cache.md) - [System Variables](/system-variables.md#tidb_prepared_plan_cache_memory_guard_ratio-new-in-v610) - [TiDB 6.1.0 Release Notes](/releases/release-6.1.0.md) @@ -3517,8 +3516,8 @@ Referenced in: Referenced in: -- [SQL Non-Prepared Execution Plan Cache](/sql-plan-cache.md) -- [SQL Prepared Execution Plan Cache](/sql-plan-cache.md) +- [SQL Non-Plan Cache](/sql-plan-cache.md) +- [SQL Plan Cache](/sql-plan-cache.md) - [System Variables](/system-variables.md#tidb_session_plan_cache_size-new-in-v710) - [TiDB Cloud Sysbench Performance Test Report for TiDB v8.1.0](https://docs.pingcap.com/tidbcloud/v8.1-performance-benchmarking-with-sysbench) - [TiDB 7.4.0 Release Notes](/releases/release-7.4.0.md) @@ -4105,7 +4104,7 @@ Referenced in: - [Date and Time Types](/data-type-date-and-time.md) - [SHOW [GLOBAL|SESSION] VARIABLES](/sql-statements/sql-statement-show-variables.md) -- [SQL Prepared Execution Plan Cache](/sql-plan-cache.md) +- [SQL Plan Cache](/sql-plan-cache.md) - [System Variables](/system-variables.md#time_zone) - [Time Zone Support](/configure-time-zone.md) - [TiDB 6.0.0 Release Notes](/releases/release-6.0.0-dmr.md) From 84e998922fac5d45b040ce913e744d8e7cec6cad Mon Sep 17 00:00:00 2001 From: qw4990 Date: Wed, 8 Jan 2025 17:07:38 +0800 Subject: [PATCH 7/7] fixup --- sql-plan-cache.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/sql-plan-cache.md b/sql-plan-cache.md index 4db5f2c881dad..e1373d1225070 100644 --- a/sql-plan-cache.md +++ b/sql-plan-cache.md @@ -343,8 +343,6 @@ After you enable this feature, the optimizer quickly evaluates the query. If it To reduce the syntax parsing cost of SQL statements, it is recommended that you run `prepare stmt` once, then `execute stmt` multiple times before running `deallocate prepare`: -{{< copyable "sql" >}} - ```sql MySQL [test]> prepare stmt from '...'; -- Prepare once MySQL [test]> execute stmt using ...; -- Execute once @@ -355,8 +353,6 @@ MySQL [test]> deallocate prepare stmt; -- Release the prepared statement In real practice, you may be used to running `deallocate prepare` each time after running `execute stmt`, as shown below: -{{< copyable "sql" >}} - ```sql MySQL [test]> prepare stmt from '...'; -- Prepare once MySQL [test]> execute stmt using ...;