Skip to content

Commit

Permalink
Add descriptions of new panels and update the plan cache doc (#11799)
Browse files Browse the repository at this point in the history
  • Loading branch information
fzzf678 authored Nov 7, 2022
1 parent 4d974f4 commit 5f7ad64
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 3 deletions.
2 changes: 2 additions & 0 deletions grafana-tidb-dashboard.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,8 @@ aliases: ['/docs-cn/dev/grafana-tidb-dashboard/','/docs-cn/dev/reference/key-mon
- Expensive Executor OPS:每秒消耗系统资源比较多的算子。包括 Merge Join、Hash Join、Index Look Up Join、Hash Agg、Stream Agg、Sort、TopN 等。
- Queries Using Plan Cache OPS:每秒使用 Plan Cache 的查询数量。
- Plan Cache Miss OPS:每秒出现 Plan Cache Miss 的数量。
- Plan Cache Memory Usage:每个 TiDB 实例上所有 Plan Cache 缓存的执行计划占用的总内存。
- Plan Cache Plan Num:每个 TiDB 实例上所有 Plan Cache 缓存的执行计划总数。

- Distsql
- Distsql Duration:Distsql 处理的时长
Expand Down
Binary file added media/planCache-memoryUsage-planNum-panels.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
14 changes: 11 additions & 3 deletions sql-prepared-plan-cache.md
Original file line number Diff line number Diff line change
Expand Up @@ -134,11 +134,19 @@ MySQL [test]> select @@last_plan_from_cache;

## Prepared Plan Cache 的内存管理

使用 Prepared Plan Cache 会有一定的内存开销,在内部测试中,平均每个缓存计划会消耗 100 KiB 内存,且目前 Plan Cache `SESSION` 级别的,因此总内存消耗大致为 `SESSION 个数 * SESSION 平均缓存计划个数 * 100KiB`
使用 Prepared Plan Cache 会有一定的内存开销,可以通过 Grafana 中的 [`Plan Cache Memory Usage` 监控](/grafana-tidb-dashboard.md)查看每台 TiDB 实例上所有 `SESSION` 所缓存的计划占用的总内存

比如目前 TiDB 实例的 `SESSION` 并发数是 50,平均每个 `SESSION` 大致缓存 100 个计划,则总内存开销为 `50 * 100 * 100KiB` 约等于 `512MB`
> **注意:**
>
> 考虑到 Golang 的内存回收机制以及部分未统计的内存结构,Grafana 中显示的内存与实际的堆内存使用量并不相等。经过实验验证存在约 ±20% 的误差。
对于每台 TiDB 实例上所缓存的执行计划总数量,可以通过 Grafana 中的 [`Plan Cache Plan Num` 监控](/grafana-tidb-dashboard.md)查看。

Grafana 中 `Plan Cache Memory Usage``Plan Cache Plan Num` 监控如下图所示:

![grafana_panels](/media/planCache-memoryUsage-planNum-panels.png)

目前可以通过变量 `tidb_prepared_plan_cache_size` 来设置每个 `SESSION` 最多缓存的计划数量,针对不同的环境,推荐的设置如下:
目前可以通过变量 `tidb_prepared_plan_cache_size` 来设置每个 `SESSION` 最多缓存的计划数量,针对不同的环境,推荐的设置如下,你可以结合监控进行调整

- TiDB Server 实例内存阈值 <= 64 GiB 时,`tidb_prepared_plan_cache_size = 50`
- TiDB Server 实例内存阈值 > 64 GiB 时,`tidb_prepared_plan_cache_size = 100`
Expand Down

0 comments on commit 5f7ad64

Please sign in to comment.