From 741f3e0d2782beb6359bf3adddc20a893995adc0 Mon Sep 17 00:00:00 2001 From: Yiding Cui Date: Mon, 25 May 2020 19:25:06 +0800 Subject: [PATCH 1/2] sql-stmt: modify SelectStmt and add page for `SHOW STATS_HISTOGRAMS` --- TOC.md | 1 + sql-statements/sql-statement-select.md | 6 ++ .../sql-statement-show-histograms.md | 67 +++++++++++++++++++ 3 files changed, 74 insertions(+) create mode 100644 sql-statements/sql-statement-show-histograms.md diff --git a/TOC.md b/TOC.md index 52c552ee2bc4..29c843befef3 100644 --- a/TOC.md +++ b/TOC.md @@ -304,6 +304,7 @@ - [`SHOW ERRORS`](/sql-statements/sql-statement-show-errors.md) - [`SHOW [FULL] FIELDS FROM`](/sql-statements/sql-statement-show-fields-from.md) - [`SHOW GRANTS`](/sql-statements/sql-statement-show-grants.md) + - [`SHOW STATS_HISTOGRAMS`](/sql-statements/sql-statement-show-histograms.md) - [`SHOW INDEXES [FROM|IN]`](/sql-statements/sql-statement-show-indexes.md) - [`SHOW INDEX [FROM|IN]`](/sql-statements/sql-statement-show-index.md) - [`SHOW KEYS [FROM|IN]`](/sql-statements/sql-statement-show-keys.md) diff --git a/sql-statements/sql-statement-select.md b/sql-statements/sql-statement-select.md index 5c5969c9cee4..9a446294bcd6 100644 --- a/sql-statements/sql-statement-select.md +++ b/sql-statements/sql-statement-select.md @@ -59,10 +59,15 @@ aliases: ['/docs-cn/dev/reference/sql/statements/select/'] ![SelectLockOpt](/media/sqlgram/SelectLockOpt.png) +**WindowClauseOptional** + +![WindowClauseOptional](/media/sqlgram/WindowClauseOptional.png) + ## 语法元素说明 |语法元素 | 说明 | | --------------------- | -------------------------------------------------- | +|`TableOptimizerHints`|用于控制优化器行为的 Hint,具体可参见 [Optimizer Hints](/optimizer-hints.md)| |`ALL`、`DISTINCT`、`DISTINCTROW` | 查询结果集中可能会包含重复值。指定 DISTINCT/DISTINCTROW 则在查询结果中过滤掉重复的行;指定 ALL 则列出所有的行。默认为 ALL。| |`HIGH_PRIORITY` | 该语句为高优先级语句,TiDB 在执行阶段会优先处理这条语句| |`SQL_CALC_FOUND_ROWS` | TiDB 出于兼容性解析这个语法,但是不做任何处理| @@ -75,6 +80,7 @@ aliases: ['/docs-cn/dev/reference/sql/statements/select/'] |`HAVING where_condition` | Having 子句与 Where 子句作用类似,Having 子句可以让过滤 GroupBy 后的各种数据,Where 子句用于在聚合前过滤记录。| |`ORDER BY` | OrderBy 子句用于指定结果排序顺序,可以按照列、表达式或者是 `select_expr` 列表中某个位置的字段进行排序。| |`LIMIT` | Limit 子句用于限制结果条数。Limit 接受一个或两个数字参数,如果只有一个参数,那么表示返回数据的最大行数;如果是两个参数,那么第一个参数表示返回数据的第一行的偏移量(第一行数据的偏移量是 0),第二个参数指定返回数据的最大条目数。| +|`Window window_definition`|窗口函数的相关语法,用来进行一些分析型计算的操作,详情可见 [窗口函数](/functions-and-operators/window-functions.md)| |`FOR UPDATE` | 对查询结果集所有行上锁(对于在查询条件内,但是不在结果集的行,将不会加锁,如事务启动后由其他事务写入的行),以监测其他事务对这些的并发修改。使用[乐观事务模型](/optimistic-transaction.md)时,语句执行期间不会检测锁,因此,不会像 PostgreSQL 之类的数据库一样,在当前事务结束前阻止其他事务执行 `UPDATE`、`DELETE` 和 `SELECT FOR UPDATE`。在事务的提交阶段 `SELECT FOR UPDATE` 读到的行,也会进行两阶段提交,因此,它们也可以参与事务冲突检测。如发生写入冲突,那么包含 `SELECT FOR UPDATE` 语句的事务会提交失败。如果没有冲突,事务将成功提交,当提交结束时,这些被加锁的行,会产生一个新版本,可以让其他尚未提交的事务,在将来提交时发现写入冲突。若使用悲观事务,则行为与其他数据库基本相同,不一致之处参考[和 MySQL InnoDB 的差异](/pessimistic-transaction.md#和-mysql-innodb-的差异)。 | |`LOCK IN SHARE MODE` | TiDB 出于兼容性解析这个语法,但是不做任何处理| diff --git a/sql-statements/sql-statement-show-histograms.md b/sql-statements/sql-statement-show-histograms.md new file mode 100644 index 000000000000..adfd281cc081 --- /dev/null +++ b/sql-statements/sql-statement-show-histograms.md @@ -0,0 +1,67 @@ +--- +title: SHOW STATS_HISTOGRAMS +summary: TiDB 数据库中 SHOW HISTOGRAMS 语句的简单说明。 +category: reference +--- + +# SHOW STATS_HISTOGRAMS + +查看统计信息中直方图的相关信息。 + +## 语法图 + +**ShowStmt** + +![ShowStmt](/media/sqlgram/ShowStmt.png) + +**ShowTargetFiltertable** + +![ShowTargetFilterable](/media/sqlgram/ShowTargetFilterable.png) + +**ShowLikeOrWhereOpt** + +![ShowLikeOrWhereOpt](/media/sqlgram/ShowLikeOrWhereOpt.png) + +## 示例 + +{{< copyable "sql" >}} + +```sql +show stats_histograms; +``` + +``` ++---------+------------+----------------+-------------+----------+---------------------+----------------+------------+--------------+-------------+ +| Db_name | Table_name | Partition_name | Column_name | Is_index | Update_time | Distinct_count | Null_count | Avg_col_size | Correlation | ++---------+------------+----------------+-------------+----------+---------------------+----------------+------------+--------------+-------------+ +| test | t | | a | 0 | 2020-05-25 19:20:00 | 7 | 0 | 1 | 1 | +| test | t2 | | a | 0 | 2020-05-25 19:20:01 | 6 | 0 | 8 | 0 | +| test | t2 | | b | 0 | 2020-05-25 19:20:01 | 6 | 0 | 1.67 | 1 | ++---------+------------+----------------+-------------+----------+---------------------+----------------+------------+--------------+-------------+ +3 rows in set (0.00 sec) +``` + +{{< copyable "sql" >}} + +```sql +show stats_histograms where table_name = 't2'; +``` + +``` ++---------+------------+----------------+-------------+----------+---------------------+----------------+------------+--------------+-------------+ +| Db_name | Table_name | Partition_name | Column_name | Is_index | Update_time | Distinct_count | Null_count | Avg_col_size | Correlation | ++---------+------------+----------------+-------------+----------+---------------------+----------------+------------+--------------+-------------+ +| test | t2 | | b | 0 | 2020-05-25 19:20:01 | 6 | 0 | 1.67 | 1 | +| test | t2 | | a | 0 | 2020-05-25 19:20:01 | 6 | 0 | 8 | 0 | ++---------+------------+----------------+-------------+----------+---------------------+----------------+------------+--------------+-------------+ +2 rows in set (0.00 sec) +``` + +## MySQL 兼容性 + +`SHOW STATS_HISTOGRAMS` 是 TiDB 专有语法。不存在和 MySQL 的兼容性问题。 + +## 另请参阅 + +* [ANALYZE](/sql-statements/sql-statement-analyze-table.md) +* [统计信息介绍](/statistics.md) From 6edeb6862f84b0da4f1d9fe1bb4c4a6b72bd653b Mon Sep 17 00:00:00 2001 From: TomShawn <41534398+TomShawn@users.noreply.github.com> Date: Mon, 25 May 2020 21:29:14 +0800 Subject: [PATCH 2/2] Apply suggestions from code review --- sql-statements/sql-statement-select.md | 4 ++-- sql-statements/sql-statement-show-histograms.md | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/sql-statements/sql-statement-select.md b/sql-statements/sql-statement-select.md index 9a446294bcd6..3eb0bb780482 100644 --- a/sql-statements/sql-statement-select.md +++ b/sql-statements/sql-statement-select.md @@ -67,7 +67,7 @@ aliases: ['/docs-cn/dev/reference/sql/statements/select/'] |语法元素 | 说明 | | --------------------- | -------------------------------------------------- | -|`TableOptimizerHints`|用于控制优化器行为的 Hint,具体可参见 [Optimizer Hints](/optimizer-hints.md)| +|`TableOptimizerHints`| 用于控制优化器行为的 Hint,具体可参见 [Optimizer Hints](/optimizer-hints.md)| |`ALL`、`DISTINCT`、`DISTINCTROW` | 查询结果集中可能会包含重复值。指定 DISTINCT/DISTINCTROW 则在查询结果中过滤掉重复的行;指定 ALL 则列出所有的行。默认为 ALL。| |`HIGH_PRIORITY` | 该语句为高优先级语句,TiDB 在执行阶段会优先处理这条语句| |`SQL_CALC_FOUND_ROWS` | TiDB 出于兼容性解析这个语法,但是不做任何处理| @@ -80,7 +80,7 @@ aliases: ['/docs-cn/dev/reference/sql/statements/select/'] |`HAVING where_condition` | Having 子句与 Where 子句作用类似,Having 子句可以让过滤 GroupBy 后的各种数据,Where 子句用于在聚合前过滤记录。| |`ORDER BY` | OrderBy 子句用于指定结果排序顺序,可以按照列、表达式或者是 `select_expr` 列表中某个位置的字段进行排序。| |`LIMIT` | Limit 子句用于限制结果条数。Limit 接受一个或两个数字参数,如果只有一个参数,那么表示返回数据的最大行数;如果是两个参数,那么第一个参数表示返回数据的第一行的偏移量(第一行数据的偏移量是 0),第二个参数指定返回数据的最大条目数。| -|`Window window_definition`|窗口函数的相关语法,用来进行一些分析型计算的操作,详情可见 [窗口函数](/functions-and-operators/window-functions.md)| +|`Window window_definition`| 窗口函数的相关语法,用来进行一些分析型计算的操作,详情可见 [窗口函数](/functions-and-operators/window-functions.md)| |`FOR UPDATE` | 对查询结果集所有行上锁(对于在查询条件内,但是不在结果集的行,将不会加锁,如事务启动后由其他事务写入的行),以监测其他事务对这些的并发修改。使用[乐观事务模型](/optimistic-transaction.md)时,语句执行期间不会检测锁,因此,不会像 PostgreSQL 之类的数据库一样,在当前事务结束前阻止其他事务执行 `UPDATE`、`DELETE` 和 `SELECT FOR UPDATE`。在事务的提交阶段 `SELECT FOR UPDATE` 读到的行,也会进行两阶段提交,因此,它们也可以参与事务冲突检测。如发生写入冲突,那么包含 `SELECT FOR UPDATE` 语句的事务会提交失败。如果没有冲突,事务将成功提交,当提交结束时,这些被加锁的行,会产生一个新版本,可以让其他尚未提交的事务,在将来提交时发现写入冲突。若使用悲观事务,则行为与其他数据库基本相同,不一致之处参考[和 MySQL InnoDB 的差异](/pessimistic-transaction.md#和-mysql-innodb-的差异)。 | |`LOCK IN SHARE MODE` | TiDB 出于兼容性解析这个语法,但是不做任何处理| diff --git a/sql-statements/sql-statement-show-histograms.md b/sql-statements/sql-statement-show-histograms.md index adfd281cc081..3e03886e9e03 100644 --- a/sql-statements/sql-statement-show-histograms.md +++ b/sql-statements/sql-statement-show-histograms.md @@ -6,7 +6,7 @@ category: reference # SHOW STATS_HISTOGRAMS -查看统计信息中直方图的相关信息。 +你可以使用 `SHOW STATS_HISTOGRAMS` 语句查看统计信息中直方图的相关信息。 ## 语法图 @@ -30,7 +30,7 @@ category: reference show stats_histograms; ``` -``` +```sql +---------+------------+----------------+-------------+----------+---------------------+----------------+------------+--------------+-------------+ | Db_name | Table_name | Partition_name | Column_name | Is_index | Update_time | Distinct_count | Null_count | Avg_col_size | Correlation | +---------+------------+----------------+-------------+----------+---------------------+----------------+------------+--------------+-------------+ @@ -47,7 +47,7 @@ show stats_histograms; show stats_histograms where table_name = 't2'; ``` -``` +```sql +---------+------------+----------------+-------------+----------+---------------------+----------------+------------+--------------+-------------+ | Db_name | Table_name | Partition_name | Column_name | Is_index | Update_time | Distinct_count | Null_count | Avg_col_size | Correlation | +---------+------------+----------------+-------------+----------+---------------------+----------------+------------+--------------+-------------+ @@ -59,7 +59,7 @@ show stats_histograms where table_name = 't2'; ## MySQL 兼容性 -`SHOW STATS_HISTOGRAMS` 是 TiDB 专有语法。不存在和 MySQL 的兼容性问题。 +`SHOW STATS_HISTOGRAMS` 是 TiDB 专有语法,因此不兼容 MySQL。 ## 另请参阅