From 7b69e1814f5ed7f3faad5834059af1fe0c9f9d9b Mon Sep 17 00:00:00 2001 From: Yiding Cui Date: Tue, 16 Jun 2020 15:18:07 +0800 Subject: [PATCH 1/4] sql-statements: add/modify doc for `SELECT`, `SHOW STATS_HISTOGRAMS` and `SHOW STATS_META` --- TOC.md | 2 + media/sqlgram/ShowLikeOrWhereOpt.png | Bin 7022 -> 6656 bytes sql-statements/sql-statement-select.md | 2 + .../sql-statement-show-histograms.md | 67 ++++++++++++++ .../sql-statement-show-stats-meta.md | 83 ++++++++++++++++++ 5 files changed, 154 insertions(+) create mode 100644 sql-statements/sql-statement-show-histograms.md create mode 100644 sql-statements/sql-statement-show-stats-meta.md diff --git a/TOC.md b/TOC.md index c62831dd44623..3505a66f122b6 100644 --- a/TOC.md +++ b/TOC.md @@ -278,6 +278,8 @@ + [`SHOW PRIVILEGES`](/sql-statements/sql-statement-show-privileges.md) + [`SHOW [FULL] PROCESSSLIST`](/sql-statements/sql-statement-show-processlist.md) + [`SHOW SCHEMAS`](/sql-statements/sql-statement-show-schemas.md) + + [`SHOW STATS_HISTOGRAMS`](/sql-statements/sql-statement-show-histograms.md) + + [`SHOW STATES_META`](/sql-statements/sql-statement-show-stats-meta.md) + [`SHOW STATUS`](/sql-statements/sql-statement-show-status.md) + [`SHOW TABLE REGIONS`](/sql-statements/sql-statement-show-table-regions.md) + [`SHOW TABLE STATUS`](/sql-statements/sql-statement-show-table-status.md) diff --git a/media/sqlgram/ShowLikeOrWhereOpt.png b/media/sqlgram/ShowLikeOrWhereOpt.png index c1ec7efaf56ac8211df5f532f2c45f12d54b96c0..f68b2d4c1a598e091e4ca33cfbde74a3d3ce1724 100644 GIT binary patch delta 6581 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 OlDv$vbOp#H@P7b9cDZ{1 delta 6950 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 HXAb`_4O@Ms diff --git a/sql-statements/sql-statement-select.md b/sql-statements/sql-statement-select.md index 86030f1b35d27..5a0fcbe1e61e7 100644 --- a/sql-statements/sql-statement-select.md +++ b/sql-statements/sql-statement-select.md @@ -63,6 +63,7 @@ The `SELECT` statement is used to read data from TiDB. |Syntax Element|Description| |:--------------------- | :-------------------------------------------------- | +|`TableOptimizerHints`| This is the hint to control the behavior of TiDB's optimizer. You can refer to [Optimizer Hints](/optimizer-hints.md) for more information. | |`ALL`, `DISTINCT`, `DISTINCTROW` | The `ALL`, `DISTINCT`/`DISTINCTROW` modifiers specify whether duplicate rows should be returned. ALL (the default) specifies that all matching rows should be returned.| |`HIGH_PRIORITY` | `HIGH_PRIORITY` gives the current statement higher priority than other statements. | |`SQL_CALC_FOUND_ROWS`| To guarantee compatibility with MySQL, TiDB parses this syntax, but will ignore it. | @@ -75,6 +76,7 @@ The `SELECT` statement is used to read data from TiDB. |`HAVING where_condition` | The `HAVING` clause and the `WHERE` clause are both used to filter the results. The `HAVING` clause filters the results of `GROUP BY`, while the `WHERE` clause filter the results before aggregation. | |`ORDER BY` | The `ORDER BY` clause is used to sort the data in ascending or descending order, based on columns, expressions or items in the `select_expr` list.| |`LIMIT` | The `LIMIT` clause can be used to constrain the number of rows. `LIMIT` takes one or two numeric arguments. With one argument, the argument specifies the maximum number of rows to return, the first row to return is the first row of the table by default; with two arguments, the first argument specifies the offset of the first row to return, and the second specifies the maximum number of rows to return.| +|`Window window_definition`| This is the grammar for window function which is usually used to do some analytical computation. You can refer to [Window Function](/functions-and-operators/window-functions.md) for more information. | | `FOR UPDATE` | The `SELECT FOR UPDATE` clause locks all the data in the result sets to detect concurrent updates from other transactions. Data that match the query conditions but do not exist in the result sets are not read-locked, such as the row data written by other transactions after the current transaction is started. TiDB uses the [Optimistic Transaction Model](/optimistic-transaction.md). The transaction conflicts are not detected in the statement execution phase. Therefore, the current transaction does not block other transactions from executing `UPDATE`, `DELETE` or `SELECT FOR UPDATE` like other databases such as PostgreSQL. In the committing phase, the rows read by `SELECT FOR UPDATE` are committed in two phases, which means they can also join the conflict detection. If write conflicts occur, the commit fails for all transactions that include the `SELECT FOR UPDATE` clause. If no conflict is detected, the commit succeeds. And a new version is generated for the locked rows, so that write conflicts can be detected when other uncommitted transactions are being committed later. When using pessimistic transaction model, the behavior is basically the same as other databases. Refer to [Difference with MySQL InnoDB](/pessimistic-transaction.md#difference-with-mysql-innodb) to see the details. | |`LOCK IN SHARE MODE` | To guarantee compatibility, TiDB parses these three modifiers, but will ignore them. | diff --git a/sql-statements/sql-statement-show-histograms.md b/sql-statements/sql-statement-show-histograms.md new file mode 100644 index 0000000000000..848973bc02fff --- /dev/null +++ b/sql-statements/sql-statement-show-histograms.md @@ -0,0 +1,67 @@ +--- +title: SHOW STATS_HISTOGRAMS +summary: An overview of the usage of SHOW HISTOGRAMS for TiDB database。 +category: reference +--- + +# SHOW STATS_HISTOGRAMS + +This statement shows the histogram information collected by the `ANALYZE` statement. + +## 语法图 + +**ShowStmt** + +![ShowStmt](/media/sqlgram/ShowStmt.png) + +**ShowTargetFiltertable** + +![ShowTargetFilterable](/media/sqlgram/ShowTargetFilterable.png) + +**ShowLikeOrWhereOpt** + +![ShowLikeOrWhereOpt](/media/sqlgram/ShowLikeOrWhereOpt.png) + +## 示例 + +{{< copyable "sql" >}} + +```sql +show stats_histograms; +``` + +```sql ++---------+------------+----------------+-------------+----------+---------------------+----------------+------------+--------------+-------------+ +| 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'; +``` + +```sql ++---------+------------+----------------+-------------+----------+---------------------+----------------+------------+--------------+-------------+ +| 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 compatibility + +`SHOW STATS_HISTOGRAMS` is a TiDB specific grammer, thus there is no compatibility problem with MySQL. + +## See also + +* [ANALYZE](/sql-statements/sql-statement-analyze-table.md) +* [Introduction to Statistics](/statistics.md) \ No newline at end of file diff --git a/sql-statements/sql-statement-show-stats-meta.md b/sql-statements/sql-statement-show-stats-meta.md new file mode 100644 index 0000000000000..da9806d83cad2 --- /dev/null +++ b/sql-statements/sql-statement-show-stats-meta.md @@ -0,0 +1,83 @@ +--- +title: SHOW STATS_META +summary: An overview of the usage of SHOW STATS_META for TiDB database. +category: reference +--- + +# SHOW STATS_META + +You can use `SHOW STATS_META` to know how many rows in a table and how many rows are changed in that table. And when you are using this statement, you can use `ShowLikeOrWhere` clause to filter the needed information. + +Currently there're 6 columns the `SHOW STATS_META` will output: + +| Grammar element | Description | +| -------- | ------------- | +| db_name | Database name | +| table_name | Table name | +| partition_name| Partition name | +| update_time | Last updated time | +| modify_count | How many rows are changed | +| row_count | The total row count | + +> **注意:** +> +> The `update_time` will be updated when TiDB update the `modify_count` and the `row_count` fields by `DML` statements. So you cannot regard the `update_time` as the last execution time of the `ANALYZE` stetament. + +## 语法图 + +**ShowStmt** + +![ShowStmt](/media/sqlgram/ShowStmt.png) + +**ShowTargetFiltertable** + +![ShowTargetFilterable](/media/sqlgram/ShowTargetFilterable.png) + +**ShowLikeOrWhereOpt** + +![ShowLikeOrWhereOpt](/media/sqlgram/ShowLikeOrWhereOpt.png) + +## 示例 + +{{< copyable "sql" >}} + +```sql +show stats_meta; +``` + +```sql ++---------+------------+----------------+---------------------+--------------+-----------+ +| Db_name | Table_name | Partition_name | Update_time | Modify_count | Row_count | ++---------+------------+----------------+---------------------+--------------+-----------+ +| test | t0 | | 2020-05-15 16:58:00 | 0 | 0 | +| test | t1 | | 2020-05-15 16:58:04 | 0 | 0 | +| test | t2 | | 2020-05-15 16:58:11 | 0 | 0 | +| test | s | | 2020-05-22 19:46:43 | 0 | 0 | +| test | t | | 2020-05-25 12:04:21 | 0 | 0 | ++---------+------------+----------------+---------------------+--------------+-----------+ +5 rows in set (0.00 sec) +``` + +{{< copyable "sql" >}} + +```sql +show stats_meta where table_name = 't2'; +``` + +```sql ++---------+------------+----------------+---------------------+--------------+-----------+ +| Db_name | Table_name | Partition_name | Update_time | Modify_count | Row_count | ++---------+------------+----------------+---------------------+--------------+-----------+ +| test | t2 | | 2020-05-15 16:58:11 | 0 | 0 | ++---------+------------+----------------+---------------------+--------------+-----------+ +1 row in set (0.00 sec) +``` + +## MySQL 兼容性 + +`SHOW STATS_META` is a TiDB specific grammer, thus there's no compatibility problem with MySQL. + +## 另请参阅 + +* [ANALYZE](/sql-statements/sql-statement-analyze-table.md) +* [Introduction to Statistics](/statistics.md) \ No newline at end of file From 34c4fee91720647c738d40f676963da965b8d9da Mon Sep 17 00:00:00 2001 From: Yiding Cui Date: Thu, 18 Jun 2020 14:01:08 +0800 Subject: [PATCH 2/4] Apply suggestions from code review Co-authored-by: Ran --- sql-statements/sql-statement-select.md | 4 ++-- .../sql-statement-show-histograms.md | 10 ++++----- .../sql-statement-show-stats-meta.md | 22 +++++++++---------- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/sql-statements/sql-statement-select.md b/sql-statements/sql-statement-select.md index 5a0fcbe1e61e7..f0c429353384b 100644 --- a/sql-statements/sql-statement-select.md +++ b/sql-statements/sql-statement-select.md @@ -63,7 +63,7 @@ The `SELECT` statement is used to read data from TiDB. |Syntax Element|Description| |:--------------------- | :-------------------------------------------------- | -|`TableOptimizerHints`| This is the hint to control the behavior of TiDB's optimizer. You can refer to [Optimizer Hints](/optimizer-hints.md) for more information. | +|`TableOptimizerHints`| This is the hint to control the behavior of TiDB's optimizer. For more information, refer to [Optimizer Hints](/optimizer-hints.md). | |`ALL`, `DISTINCT`, `DISTINCTROW` | The `ALL`, `DISTINCT`/`DISTINCTROW` modifiers specify whether duplicate rows should be returned. ALL (the default) specifies that all matching rows should be returned.| |`HIGH_PRIORITY` | `HIGH_PRIORITY` gives the current statement higher priority than other statements. | |`SQL_CALC_FOUND_ROWS`| To guarantee compatibility with MySQL, TiDB parses this syntax, but will ignore it. | @@ -76,7 +76,7 @@ The `SELECT` statement is used to read data from TiDB. |`HAVING where_condition` | The `HAVING` clause and the `WHERE` clause are both used to filter the results. The `HAVING` clause filters the results of `GROUP BY`, while the `WHERE` clause filter the results before aggregation. | |`ORDER BY` | The `ORDER BY` clause is used to sort the data in ascending or descending order, based on columns, expressions or items in the `select_expr` list.| |`LIMIT` | The `LIMIT` clause can be used to constrain the number of rows. `LIMIT` takes one or two numeric arguments. With one argument, the argument specifies the maximum number of rows to return, the first row to return is the first row of the table by default; with two arguments, the first argument specifies the offset of the first row to return, and the second specifies the maximum number of rows to return.| -|`Window window_definition`| This is the grammar for window function which is usually used to do some analytical computation. You can refer to [Window Function](/functions-and-operators/window-functions.md) for more information. | +|`Window window_definition`| This is the syntax for window function, which is usually used to do some analytical computation. For more information, refer to [Window Function](/functions-and-operators/window-functions.md). | | `FOR UPDATE` | The `SELECT FOR UPDATE` clause locks all the data in the result sets to detect concurrent updates from other transactions. Data that match the query conditions but do not exist in the result sets are not read-locked, such as the row data written by other transactions after the current transaction is started. TiDB uses the [Optimistic Transaction Model](/optimistic-transaction.md). The transaction conflicts are not detected in the statement execution phase. Therefore, the current transaction does not block other transactions from executing `UPDATE`, `DELETE` or `SELECT FOR UPDATE` like other databases such as PostgreSQL. In the committing phase, the rows read by `SELECT FOR UPDATE` are committed in two phases, which means they can also join the conflict detection. If write conflicts occur, the commit fails for all transactions that include the `SELECT FOR UPDATE` clause. If no conflict is detected, the commit succeeds. And a new version is generated for the locked rows, so that write conflicts can be detected when other uncommitted transactions are being committed later. When using pessimistic transaction model, the behavior is basically the same as other databases. Refer to [Difference with MySQL InnoDB](/pessimistic-transaction.md#difference-with-mysql-innodb) to see the details. | |`LOCK IN SHARE MODE` | To guarantee compatibility, TiDB parses these three modifiers, but will ignore them. | diff --git a/sql-statements/sql-statement-show-histograms.md b/sql-statements/sql-statement-show-histograms.md index 848973bc02fff..c4c24004c7a18 100644 --- a/sql-statements/sql-statement-show-histograms.md +++ b/sql-statements/sql-statement-show-histograms.md @@ -6,9 +6,9 @@ category: reference # SHOW STATS_HISTOGRAMS -This statement shows the histogram information collected by the `ANALYZE` statement. +This statement shows the histogram information collected by the `ANALYZE` statement. -## 语法图 +## Synopsis **ShowStmt** @@ -22,7 +22,7 @@ This statement shows the histogram information collected by the `ANALYZE` state ![ShowLikeOrWhereOpt](/media/sqlgram/ShowLikeOrWhereOpt.png) -## 示例 +## Examples {{< copyable "sql" >}} @@ -59,9 +59,9 @@ show stats_histograms where table_name = 't2'; ## MySQL compatibility -`SHOW STATS_HISTOGRAMS` is a TiDB specific grammer, thus there is no compatibility problem with MySQL. +`SHOW STATS_HISTOGRAMS` is a TiDB specific syntax, and thus not compatible with MySQL. ## See also * [ANALYZE](/sql-statements/sql-statement-analyze-table.md) -* [Introduction to Statistics](/statistics.md) \ No newline at end of file +* [Introduction to Statistics](/statistics.md) diff --git a/sql-statements/sql-statement-show-stats-meta.md b/sql-statements/sql-statement-show-stats-meta.md index da9806d83cad2..e8b8613c6d79e 100644 --- a/sql-statements/sql-statement-show-stats-meta.md +++ b/sql-statements/sql-statement-show-stats-meta.md @@ -6,24 +6,24 @@ category: reference # SHOW STATS_META -You can use `SHOW STATS_META` to know how many rows in a table and how many rows are changed in that table. And when you are using this statement, you can use `ShowLikeOrWhere` clause to filter the needed information. +You can use `SHOW STATS_META` to view how many rows are in a table and how many rows are changed in that table. When using this statement, you can filter the needed information by the `ShowLikeOrWhere` clause. -Currently there're 6 columns the `SHOW STATS_META` will output: +Currently, the `SHOW STATS_META` statement outputs 6 columns: -| Grammar element | Description | +| Syntax element | Description | | -------- | ------------- | | db_name | Database name | | table_name | Table name | | partition_name| Partition name | | update_time | Last updated time | -| modify_count | How many rows are changed | +| modify_count | The number of rows modified | | row_count | The total row count | > **注意:** > -> The `update_time` will be updated when TiDB update the `modify_count` and the `row_count` fields by `DML` statements. So you cannot regard the `update_time` as the last execution time of the `ANALYZE` stetament. +> The `update_time` is updated when TiDB updates the `modify_count` and `row_count` fields according to DML statements. So `update_time` is not the last execution time of the `ANALYZE` statement. -## 语法图 +## Synopsis **ShowStmt** @@ -37,7 +37,7 @@ Currently there're 6 columns the `SHOW STATS_META` will output: ![ShowLikeOrWhereOpt](/media/sqlgram/ShowLikeOrWhereOpt.png) -## 示例 +## Examples {{< copyable "sql" >}} @@ -73,11 +73,11 @@ show stats_meta where table_name = 't2'; 1 row in set (0.00 sec) ``` -## MySQL 兼容性 +## MySQL compatibility -`SHOW STATS_META` is a TiDB specific grammer, thus there's no compatibility problem with MySQL. +`SHOW STATS_META` is a TiDB specific syntax, and thus not compatible with MySQL. -## 另请参阅 +## See also * [ANALYZE](/sql-statements/sql-statement-analyze-table.md) -* [Introduction to Statistics](/statistics.md) \ No newline at end of file +* [Introduction to Statistics](/statistics.md) From 94ed5564d3e0c419d401eb142745c0c5599bc90e Mon Sep 17 00:00:00 2001 From: Ran Date: Fri, 19 Jun 2020 11:04:39 +0800 Subject: [PATCH 3/4] add an image WindowClauseOptional --- sql-statements/sql-statement-select.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sql-statements/sql-statement-select.md b/sql-statements/sql-statement-select.md index f0c429353384b..288d165366b58 100644 --- a/sql-statements/sql-statement-select.md +++ b/sql-statements/sql-statement-select.md @@ -59,6 +59,10 @@ The `SELECT` statement is used to read data from TiDB. ![SelectLockOpt](/media/sqlgram/SelectLockOpt.png) +**WindowClauseOptional** + +![WindowClauseOptional](/media/sqlgram/WindowClauseOptional.png) + ## Description of the syntax elements |Syntax Element|Description| From 196d11d8676def9868bef4135a7c640c2c6b80be Mon Sep 17 00:00:00 2001 From: Ran Date: Fri, 19 Jun 2020 11:34:32 +0800 Subject: [PATCH 4/4] Update statistics.md --- statistics.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/statistics.md b/statistics.md index 1f137e7eb61ed..e1492b5c983e2 100644 --- a/statistics.md +++ b/statistics.md @@ -161,7 +161,7 @@ You can view the statistics status using the following statements. You can use the `SHOW STATS_META` statement to view the total number of rows and the number of updated rows. -Syntax as follows: +The syntax of `ShowLikeOrWhereOpt` is as follows: {{< copyable "sql" >}} @@ -169,8 +169,6 @@ Syntax as follows: SHOW STATS_META [ShowLikeOrWhere] ``` -This statement returns the total number of all the rows in all the tables and the number of updated rows. You can use `ShowLikeOrWhere` to filter the information you need. - Currently, the `SHOW STATS_META` statement returns the following 6 columns: | Syntax Element | Description |