Skip to content

Commit

Permalink
update metric: CPS by instance (pingcap#12332)
Browse files Browse the repository at this point in the history
  • Loading branch information
qiancai authored Dec 27, 2022
1 parent ca1886c commit ffed7d9
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 12 deletions.
10 changes: 4 additions & 6 deletions best-practices/java-app-best-practices.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,15 +75,13 @@ JDBC 实现通常通过 JDBC URL 参数的形式来提供实现相关的配置

默认情况下,`useServerPrepStmts` 的值为 `false`,即尽管使用了 Prepare API,也只会在客户端做 “prepare”。因此为了避免服务器重复解析的开销,如果同一条 SQL 语句需要多次使用 Prepare API,则建议设置该选项为 `true`

在 TiDB 监控中可以通过 **Query Summary** > **QPS By Instance** 查看请求命令类型,如果请求中 `COM_QUERY``COM_STMT_EXECUTE``COM_STMT_PREPARE` 代替即生效。
在 TiDB 监控中可以通过 **Query Summary** > **CPS By Instance** 查看请求命令类型,如果请求中 `COM_QUERY``COM_STMT_EXECUTE``COM_STMT_PREPARE` 代替即生效。

##### `cachePrepStmts`

虽然 `useServerPrepStmts = true` 能让服务端执行预处理语句,但默认情况下客户端每次执行完后会 close 预处理语句,并不会复用,这样预处理的效率甚至不如文本执行。所以建议开启 `useServerPrepStmts = true` 后同时配置 `cachePrepStmts = true`,这会让客户端缓存预处理语句。

在 TiDB 监控中可以通过 **Query Summary** > **QPS By Instance** 查看请求命令类型,如果类似下图,请求中 `COM_STMT_EXECUTE` 数目远远多于 `COM_STMT_PREPARE` 即生效。

![QPS By Instance](/media/java-practice-2.png)
在 TiDB 监控中可以通过 **Query Summary** > **CPS By Instance** 查看请求命令类型,如果请求中 `COM_STMT_EXECUTE` 数目远远多于 `COM_STMT_PREPARE` 即生效。

另外,通过 `useConfigs = maxPerformance` 配置会同时配置多个参数,其中也包括 `cachePrepStmts = true`

Expand All @@ -93,13 +91,13 @@ JDBC 实现通常通过 JDBC URL 参数的形式来提供实现相关的配置

在一些场景 SQL 的长度可能超过该配置,导致预处理 SQL 不能复用,建议根据应用 SQL 长度情况决定是否需要调大该值。

在 TiDB 监控中通过 **Query Summary** > **QPS by Instance** 查看请求命令类型,如果已经配置了 `cachePrepStmts = true`,但 `COM_STMT_PREPARE` 还是和 `COM_STMT_EXECUTE` 基本相等且有 `COM_STMT_CLOSE`,需要检查这个配置项是否设置得太小。
在 TiDB 监控中通过 **Query Summary** > **CPS By Instance** 查看请求命令类型,如果已经配置了 `cachePrepStmts = true`,但 `COM_STMT_PREPARE` 还是和 `COM_STMT_EXECUTE` 基本相等且有 `COM_STMT_CLOSE`,需要检查这个配置项是否设置得太小。

##### `prepStmtCacheSize`

`prepStmtCacheSize` 控制缓存的预处理语句数目(默认为 `25`),如果应用需要预处理的 SQL 种类很多且希望复用预处理语句,可以调大该值。

和上一条类似,在监控中通过 **Query Summary** > **QPS by Instance** 查看请求中 `COM_STMT_EXECUTE` 数目是否远远多于 `COM_STMT_PREPARE` 来确认是否正常。
和上一条类似,在监控中通过 **Query Summary** > **CPS By Instance** 查看请求中 `COM_STMT_EXECUTE` 数目是否远远多于 `COM_STMT_PREPARE` 来确认是否正常。

#### Batch 相关参数

Expand Down
10 changes: 4 additions & 6 deletions develop/dev-guide-connection-parameters.md
Original file line number Diff line number Diff line change
Expand Up @@ -143,15 +143,13 @@ JDBC 实现通常通过 JDBC URL 参数的形式来提供实现相关的配置
默认情况下,**useServerPrepStmts** 的值为 `false`,即尽管使用了 Prepare API,也只会在客户端做 “prepare”。因此为了避免服务器重复解析的开销,如果同一条 SQL 语句需要多次使用 Prepare API,则建议设置该选项为 `true`。
在 TiDB 监控中可以通过 **Query Summary > QPS By Instance** 查看请求命令类型,如果请求中 `COM_QUERY` 被 `COM_STMT_EXECUTE` 或 `COM_STMT_PREPARE` 代替即生效。
在 TiDB 监控中可以通过 **Query Summary > CPS By Instance** 查看请求命令类型,如果请求中 `COM_QUERY` 被 `COM_STMT_EXECUTE` 或 `COM_STMT_PREPARE` 代替即生效。
- **cachePrepStmts**
虽然 `useServerPrepStmts = true` 能让服务端执行预处理语句,但默认情况下客户端每次执行完后会 close 预处理语句,并不会复用,这样预处理的效率甚至不如文本执行。所以建议开启 `useServerPrepStmts = true` 后同时配置 `cachePrepStmts = true`,这会让客户端缓存预处理语句。
在 TiDB 监控中可以通过 **Query Summary > QPS By Instance** 查看请求命令类型,如果类似下图,请求中 `COM_STMT_EXECUTE` 数目远远多于 `COM_STMT_PREPARE` 即生效。
![QPS By Instance](/media/develop/IMG_20220406-153503103.png)
在 TiDB 监控中可以通过 **Query Summary > CPS By Instance** 查看请求命令类型,如果请求中 `COM_STMT_EXECUTE` 数目远远多于 `COM_STMT_PREPARE` 即生效。
另外,通过 `useConfigs = maxPerformance` 配置会同时配置多个参数,其中也包括 `cachePrepStmts = true`。
Expand All @@ -161,13 +159,13 @@ JDBC 实现通常通过 JDBC URL 参数的形式来提供实现相关的配置
在一些场景 SQL 的长度可能超过该配置,导致预处理 SQL 不能复用,建议根据应用 SQL 长度情况决定是否需要调大该值。
在 TiDB 监控中通过 **Query Summary > QPS by Instance** 查看请求命令类型,如果已经配置了 `cachePrepStmts = true`,但 `COM_STMT_PREPARE` 还是和 `COM_STMT_EXECUTE` 基本相等且有 `COM_STMT_CLOSE`,需要检查这个配置项是否设置得太小。
在 TiDB 监控中通过 **Query Summary > CPS By Instance** 查看请求命令类型,如果已经配置了 `cachePrepStmts = true`,但 `COM_STMT_PREPARE` 还是和 `COM_STMT_EXECUTE` 基本相等且有 `COM_STMT_CLOSE`,需要检查这个配置项是否设置得太小。
- **prepStmtCacheSize**
控制缓存的预处理语句数目(默认为 `25`),如果应用需要预处理的 SQL 种类很多且希望复用预处理语句,可以调大该值。
和上一条类似,在监控中通过 **Query Summary > QPS by Instance** 查看请求中 `COM_STMT_EXECUTE` 数目是否远远多于 `COM_STMT_PREPARE` 来确认是否正常。
和上一条类似,在监控中通过 **Query Summary > CPS By Instance** 查看请求中 `COM_STMT_EXECUTE` 数目是否远远多于 `COM_STMT_PREPARE` 来确认是否正常。
#### Batch 相关参数
Expand Down

0 comments on commit ffed7d9

Please sign in to comment.