Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

sql: fix some format mistakes #1277

Merged
merged 10 commits into from
Apr 25, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
82 changes: 41 additions & 41 deletions op-guide/tidb-config-file.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,24 +12,24 @@ TiDB 配置文件比命令行参数支持更多的选项。你可以在 [config/
### `split-table`

+ 为每个 table 建立单独的 Region。
+ 默认: true
+ 默认true
+ 如果需要创建大量的表,我们建议把这个参数设置为 false。

### `oom-action`

+ 指定 TiDB 发生 out-of-memory 错误时的操作。
+ 默认: "log"
+ 默认"log"
+ 现在合法的选项是 ["log", "cancel"],如果为 "log",仅仅是打印日志,不作实质处理。如果为 "cancel",我们会取消执行这个操作,并且输出日志。

### `enable-streaming`

+ 开启 coprocessor 的 streaming 获取数据模式。
+ 默认: false
+ 默认false

### `lower-case-table-names`

+ 这个选项可以设置 TiDB 的系统变量 `lower_case_table_names` 的值。
+ 默认: 2
+ 默认2
+ 具体可以查看 MySQL 关于这个变量的[描述](https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_lower_case_table_names)

> **注意:**
Expand All @@ -50,68 +50,68 @@ TiDB 配置文件比命令行参数支持更多的选项。你可以在 [config/
### `format`

+ 指定日志输出的格式,可选项为 [json, text, console]。
+ 默认: "text"
+ 默认"text"

### `disable-timestamp`

+ 是否禁止在日志中输出时间戳。
+ 默认: false
+ 默认false
+ 如果设置为 true,那么日志里面将不会输出时间戳。

### `slow-query-file`

+ 慢查询日志的文件名。
+ 默认: "tidb-slow.log",注:由于 TiDB V2.1.8 更新了慢日志格式,所以将慢日志单独输出到了慢日志文件。V2.1.8 之前的版本,该变量的默认值是 ""。
+ 默认"tidb-slow.log",注:由于 TiDB V2.1.8 更新了慢日志格式,所以将慢日志单独输出到了慢日志文件。V2.1.8 之前的版本,该变量的默认值是 ""。
+ 设置后,慢查询日志会单独输出到该文件。

### `slow-threshold`

+ 输出慢日志的耗时阈值。
+ 默认: 300ms
+ 默认300ms
+ 当查询大于这个值,就会当做是一个慢查询,输出到慢查询日志。

### `expensive-threshold`

+ 输出 `expensive` 操作的行数阈值。
+ 默认: 10000
+ 当查询的行数(包括中间结果,基于统计信息)大于这个值,我们就会当成是一个 `expensive` 的操作,输出一个前缀带有 `[EXPENSIVE_QUERY]` 的日志。
+ 默认10000
+ 当查询的行数包括中间结果,基于统计信息大于这个值,我们就会当成是一个 `expensive` 的操作,输出一个前缀带有 `[EXPENSIVE_QUERY]` 的日志。

### `query-log-max-len`

+ 最长的 SQL 输出长度。
+ 默认: 2048
+ 默认2048
+ 当语句的长度大于 `query-log-max-len`,将会被截断输出。

### log.file

#### `filename`

+ 一般日志文件名字。
+ 默认: ""
+ 默认""
+ 如果设置,会输出一般日志到这个文件。

#### `max-size`

+ 日志文件的大小限制。
+ 默认: 300MB
+ 默认300MB
+ 最大设置上限为 4GB。

#### `max-days`

+ 日志最大保留的天数。
+ 默认: 0
+ 默认0
+ 默认是不清理的,如果设置了,在 `max-days` 之后 TiDB 会清理过期的日志文件。

#### `max-backups`

+ 保留的日志的最大数量。
+ 默认: 0
+ 默认0
+ 默认全部保存,如果设置为 7,会最多保留 7 个老的日志文件。

#### `log-rotate`

+ 是否每日创建一个新的日志文件。
+ 默认: true
+ 默认true
+ 如果设置为 true,每天会新建新的日志文件,如果设置为 false,那么只会输出到一个日志文件。

## security
Expand All @@ -120,22 +120,22 @@ TiDB 配置文件比命令行参数支持更多的选项。你可以在 [config/

### `ssl-ca`

+ PEM 格式的受信任 CA 的证书文件路径
+ 默认: ""
+ PEM 格式的受信任 CA 的证书文件路径
+ 默认""
+ 当同时设置了该选项和 `--ssl-cert`、`--ssl-key` 选项时,TiDB 将在客户端出示证书的情况下根据该选项指定的受信任的 CA 列表验证客户端证书。若验证失败,则连接会被终止。
+ 即使设置了该选项,若客户端没有出示证书,则安全连接仍然继续,不会进行客户端证书验证。

### `ssl-cert`

+ PEM 格式的 SSL 证书文件路径
+ 默认: ""
+ PEM 格式的 SSL 证书文件路径
+ 默认""
+ 当同时设置了该选项和 `--ssl-key` 选项时,TiDB 将接受(但不强制)客户端使用 TLS 安全地连接到 TiDB。
+ 若指定的证书或私钥无效,则 TiDB 会照常启动,但无法接受安全连接。

### `ssl-key`

+ PEM 格式的 SSL 证书密钥文件路径,即 `--ssl-cert` 所指定的证书的私钥
+ 默认: ""
+ PEM 格式的 SSL 证书密钥文件路径,即 `--ssl-cert` 所指定的证书的私钥
+ 默认""
+ 目前 TiDB 不支持加载由密码保护的私钥。

## performance
Expand All @@ -145,49 +145,49 @@ TiDB 配置文件比命令行参数支持更多的选项。你可以在 [config/
### `max-procs`

+ TiDB 的 CPU 使用数量。
+ 默认: 0
+ 默认为 0 表示使用机器上所有的 CPU,也可以设置成 n, 那么 TiDB 会使用 n 个 CPU 数量。
+ 默认0
+ 默认为 0 表示使用机器上所有的 CPU,也可以设置成 n,那么 TiDB 会使用 n 个 CPU 数量。

### `stmt-count-limit`

+ TiDB 一个事务允许的最大语句条数限制。
+ 默认: 5000
+ 默认5000
+ 在一个事务中,超过 `stmt-count-limit` 条语句后还没有 rollback 或者 commit,TiDB 将会返回 `statement count 5001 exceeds the transaction limitation, autocommit = false` 错误。

### `tcp-keep-alive`

+ TiDB 在 TCP 层开启 keepalive
+ 默认: false
+ TiDB 在 TCP 层开启 keepalive
+ 默认false

### `retry-limit`

+ TiDB 在提交事务的时候遇到 key 冲突或者其他错误时进行的重试次数。
+ 默认: 10
+ 默认10
+ 如果 TiDB 超过 `retry-limit` 次重试还是没有成功,将会返回错误。

### `cross-join`

+ 默认: true
+ 默认true
+ 在做 join 的时候,两边表没有任何条件(where 字段),默认可以执行这样的语句。但是设置为 false,则如有这样的 join 语句出现,server 会拒绝执行

### `stats-lease`

+ TiDB 重载统计信息, 更新表行数, 检查是否需要自动 analyze 以及加载列的统计信息的时间间隔
+ 默认: 3s
- 每隔 `stats-lease` 时间, TiDB 会检查统计信息是否有更新,如果有会将其更新到内存中
+ TiDB 重载统计信息更新表行数检查是否需要自动 analyze 以及加载列的统计信息的时间间隔
+ 默认3s
- 每隔 `stats-lease` 时间,TiDB 会检查统计信息是否有更新,如果有会将其更新到内存中
- 每隔 `5 * stats-lease` 时间,TiDB 会将 DML 产生的总行数以及修改的行数变化持久化下来
- 每隔 `stats-lease` 时间,TiDB 会检查是否有表或者索引需要自动 analyze
- 每隔 `stats-lease` 时间,TiDB 会检查是否有列的统计信息需要被加载到内存中

### `run-auto-analyze`

+ TiDB 是否做自动的 Analyze。
+ 默认: true
+ 默认true

### `feedback-probability`

+ TiDB 对查询收集统计信息反馈的概率
+ 默认: 0.0
+ TiDB 对查询收集统计信息反馈的概率
+ 默认0.0
+ 对于每一个查询,TiDB 会以 `feedback-probability` 的概率收集查询的反馈,用于更新统计信息。

## prepared-plan-cache
Expand All @@ -197,24 +197,24 @@ prepare 语句的 Plan cache 设置。
### `enabled`

+ 开启 prepare 语句的 plan cache。
+ 默认: false
+ 默认false

### `capacity`

+ 缓存语句的数量。
+ 默认: 100
+ 默认100

## tikv-client

### `grpc-connection-count`

+ 跟每个 TiKV 之间建立的最大连接数。
+ 默认: 16
+ 默认16

### `commit-timeout`

+ 执行事务提交时,最大的超时时间。
+ 默认: 41s
+ 默认41s
+ 这个值必须是大于两倍 Raft 选举的超时时间。

## txn-local-latches
Expand All @@ -224,9 +224,9 @@ prepare 语句的 Plan cache 设置。
### `enable`

+ 开启
+ 默认: false
+ 默认false

### `capacity`

+ Hash 对应的 slot 数, 会自动向上调整为 2 的指数倍。每个 slot 占 32 Bytes 内存。当写入数据的范围比较广时(如导数据),设置过小会导致变慢,性能下降。
+ Hash 对应的 slot 数会自动向上调整为 2 的指数倍。每个 slot 占 32 Bytes 内存。当写入数据的范围比较广时(如导数据),设置过小会导致变慢,性能下降。
+ 默认:1024000
18 changes: 9 additions & 9 deletions sql/slow-query.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ TiDB 在 V2.1.8 之后更改了慢日志格式,V2.1.8 之前的版本请看[

### 获取日志

TiDB 会将执行时间超过 [slow-threshold](../op-guide/tidb-config-file.md#slow-threshold) 的语句默认单独输出到 [slow-query-file](../op-guide/tidb-config-file.md#slow-query-file) 文件中 ,并对慢日志的格式做了兼容,可以用 `pt-query-digest` 直接分析慢日志 文件。`slow-threshold` 可以通过配置文件修改,默认是 300ms。`slow-query-file` 默认是 `tidb-slow.log`。
TiDB 会将执行时间超过 [slow-threshold](../op-guide/tidb-config-file.md#slow-threshold) 的语句默认单独输出到 [slow-query-file](../op-guide/tidb-config-file.md#slow-query-file) 文件中 ,并对慢日志的格式做了兼容,可以用 `pt-query-digest` 直接分析慢日志文件。`slow-threshold` 可以通过配置文件修改,默认是 300ms。`slow-query-file` 默认是 `tidb-slow.log`。

### 示例

Expand All @@ -36,9 +36,9 @@ select * from t_slim, t_wide where t_slim.c0=t_wide.c0;
### 字段解析

* `Time`:表示日志打印时间。
* `Txn_start_ts`:表示事务的开始时间戳,也是事务的 ID, 可以用这个值在日志中 grep 出事务相关的日志。
* `Txn_start_ts`:表示事务的开始时间戳,也是事务的 ID可以用这个值在日志中 grep 出事务相关的日志。
* `User`:表示执行语句的用户名。
* `Conn_ID`:表示 connection ID,即 session ID, 可以用类似 `con:3` 的关键字在 TiDB 日志中 grep 出 session ID 为 3 的日志。
* `Conn_ID`:表示 connection ID,即 session ID可以用类似 `con: 3` 的关键字在 TiDB 日志中 grep 出 session ID 为 3 的日志。
* `Query_time`:表示执行这个语句花费的时间。只有执行时间超过 slow-threshold 的语句才会输出这个日志,单位是秒,以下所有的时间字段的单位都是秒。
* `Process_time`:执行 SQL 在 TiKV 的处理时间之和,因为数据会并行的发到 TiKV 执行,这个值可能会超过 `Query_time`。
* `Wait_time`:表示这个语句在 TiKV 的等待时间之和,因为 TiKV 的 Coprocessor 线程数是有限的,当所有的 Coprocessor 线程都在工作的时候,请求会排队;当队列中有某些请求耗时很长的时候,后面的请求的等待时间都会增加。
Expand All @@ -47,13 +47,13 @@ select * from t_slim, t_wide where t_slim.c0=t_wide.c0;
* `Total_keys`:表示 Coprocessor 扫过的 key 的数量。
* `Process_keys`:表示 Coprocessor 处理的 key 的数量。相比 total_keys,processed_keys 不包含 MVCC 的旧版本。如果 processed_keys 和 total_keys 相差很大,说明旧版本比较多。
* `DB`:表示当前的 database。
* `Index_ids`:表示语句涉及到的索引的 ID
* `Is_internal`:表示是否是 TiDB 内部 SQL。true 为TiDB 内部执行的SQL, 比如 analyze,load variable 等;false 为用户执行的 SQL
* `Index_ids`:表示语句涉及到的索引的 ID
* `Is_internal`:表示是否是 TiDB 内部 SQL。true 为TiDB 内部执行的SQL比如 analyze,load variable 等;false 为用户执行的 SQL。
* `Digest`:表示 SQL 语句的指纹。
* `Memory_max`:表示执行期间做多时候使用的内存数量, 单位为byte。
* `Num_cop_tasks`:表示 [cop-tasks](/sql/understanding-the-query-execution-plan.md) 的数目。
* `Cop_proc_avg`:cop-task 的平均执行时间。
* `Cop_proc_p90`:cop-task 的P90分位执行时间
* `Cop_proc_p90`:cop-task 的 P90 分位执行时间
* `Cop_proc_max`:cop-task 的最大执行时间。
* `Cop_proc_addr`:执行时间最长的 cop-task 所在地址。
* `Cop_wait_avg`:cop-task 的平均等待时间。
Expand Down Expand Up @@ -104,7 +104,7 @@ tidb > show create table INFORMATION_SCHEMA.SLOW_QUERY;
查询 Top2 的用户慢查询。`Is_internal=false` 表示排除 TiDB 内部的慢查询,只看用户的慢查询。

```sql
/* 查询所有用户执行的SQL, 且按执行消耗时间排序 */
/* 查询所有用户执行的SQL且按执行消耗时间排序 */
tidb > select `Query_time`, query from INFORMATION_SCHEMA.`SLOW_QUERY` where `Is_internal`=false order by `Query_time` desc limit 2;
+--------------+------------------------------------------------------------------+
| Query_time | query |
Expand All @@ -118,7 +118,7 @@ Time: 0.012s

#### 查询 `test` 用户的 TopN 慢查询
```sql
/* 查询 test 用户执行的SQL, 且按执行消耗时间排序*/
/* 查询 test 用户执行的SQL且按执行消耗时间排序*/
tidb > select `Query_time`, query, user from INFORMATION_SCHEMA.`SLOW_QUERY` where `Is_internal`=false and user like "test%" order by `Query_time` desc limit 2;
+-------------+------------------------------------------------------------------+----------------+
| Query_time | query | user |
Expand Down Expand Up @@ -167,7 +167,7 @@ tidb > select query, query_time, stats from INFORMATION_SCHEMA.`SLOW_QUERY` wher

#### 解析其他的 TiDB 慢日志文件

目前查询 `INFORMATION_SCHEMA.SLOW_QUERY` 只会解析配置文件中 `slow-query-file` 设置的慢日志文件名,默认是 "tidb-slow.log"但如果想要解析其他的日志文件,可以通过设置 session 变量 `tidb_slow_query_file` 为具体的文件路径,然后查询 `INFORMATION_SCHEMA.SLOW_QUERY` 就会按照设置的路径去解析慢日志文件。
目前查询 `INFORMATION_SCHEMA.SLOW_QUERY` 只会解析配置文件中 `slow-query-file` 设置的慢日志文件名,默认是 "tidb-slow.log"但如果想要解析其他的日志文件,可以通过设置 session 变量 `tidb_slow_query_file` 为具体的文件路径,然后查询 `INFORMATION_SCHEMA.SLOW_QUERY` 就会按照设置的路径去解析慢日志文件。
```sql
/* 设置慢日志文件路径,方便解析其他的慢日志文件,tidb_slow_query_file 变量的作用域是 session */
tidb > set tidb_slow_query_file="/path-to-log/tidb-slow.log"
Expand Down