From 82d70da0e869c66b03ebe04d1839aaa4db2062a3 Mon Sep 17 00:00:00 2001 From: Zejun Li Date: Tue, 16 Jun 2020 14:52:28 +0800 Subject: [PATCH] cherry pick #2831 to release-4.0 Signed-off-by: ti-srebot --- sql-statements/sql-statement-do.md | 14 +- sql-statements/sql-statement-set-variable.md | 21 +- .../sql-statement-show-variables.md | 192 +++++++++++------- 3 files changed, 148 insertions(+), 79 deletions(-) diff --git a/sql-statements/sql-statement-do.md b/sql-statements/sql-statement-do.md index 409a90f4ec2a1..e8acd9fe483f9 100644 --- a/sql-statements/sql-statement-do.md +++ b/sql-statements/sql-statement-do.md @@ -7,7 +7,13 @@ aliases: ['/docs/stable/reference/sql/statements/do/'] # DO -This statement executes an expression, without returning a result. In MySQL, a common use-case is to execute stored programs without needing to handle the result. Since TiDB does not provide stored routines, this function has a more limited use. +`DO` executes the expressions but does not return any results. In most cases, `DO` is equivalent to `SELECT expr, ...` that does not return a result. + +> **Note:** +> +> `DO` only executes expressions. It cannot be used in all cases where `SELECT` can be used. For example, `DO id FROM t1` is invalid because it references a table. + +In MySQL, a common use case is to execute stored procedure or trigger. Since TiDB does not provide stored procedure or trigger, this function has a limited use. ## Synopsis @@ -25,6 +31,8 @@ This statement executes an expression, without returning a result. In MySQL, a c ## Examples +This SELECT statement pauses, but also produces a result set. + ```sql mysql> SELECT SLEEP(5); +----------+ @@ -33,7 +41,11 @@ mysql> SELECT SLEEP(5); | 0 | +----------+ 1 row in set (5.00 sec) +``` + +DO, on the other hand, pauses without producing a result set. +```sql mysql> DO SLEEP(5); Query OK, 0 rows affected (5.00 sec) diff --git a/sql-statements/sql-statement-set-variable.md b/sql-statements/sql-statement-set-variable.md index 60e648ffbfc5d..6ff96a5043f0c 100644 --- a/sql-statements/sql-statement-set-variable.md +++ b/sql-statements/sql-statement-set-variable.md @@ -7,7 +7,11 @@ aliases: ['/docs/stable/reference/sql/statements/set-variable/'] # `SET [GLOBAL|SESSION] ` -The statement `SET [GLOBAL|SESSION]` modifies one of TiDB's built in variables, of either `SESSION` or `GLOBAL` scope. Note that similar to MySQL, changes to `GLOBAL` variables will not apply to either existing connections, or the local connection. Only new sessions will reflect the changes to the value. +The statement `SET [GLOBAL|SESSION]` modifies one of TiDB's built in variables, of either `SESSION` or `GLOBAL` scope. + +> **Note:** +> +> Similar to MySQL, changes to `GLOBAL` variables do not apply to either existing connections, or the local connection. Only new sessions reflect the changes to the value. ## Synopsis @@ -15,8 +19,14 @@ The statement `SET [GLOBAL|SESSION]` modifies one of TiDB's built in variables, ![SetStmt](/media/sqlgram/SetStmt.png) +**VariableAssignment:** + +![VariableAssignment](/media/sqlgram/VariableAssignment.png) + ## Examples +Get the value of `sql_mode`. + ```sql mysql> SHOW GLOBAL VARIABLES LIKE 'sql_mode'; +---------------+-------------------------------------------------------------------------------------------------------------------------------------------+ @@ -33,7 +43,12 @@ mysql> SHOW SESSION VARIABLES LIKE 'sql_mode'; | sql_mode | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION | +---------------+-------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec) +``` +Update the value of `sql_mode` globally. +If you check the value of `SQL_mode` after the update, you can see that the value of `SESSION` level has not been updated: + +```sql mysql> SET GLOBAL sql_mode = 'STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER'; Query OK, 0 rows affected (0.03 sec) @@ -52,7 +67,11 @@ mysql> SHOW SESSION VARIABLES LIKE 'sql_mode'; | sql_mode | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION | +---------------+-------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec) +``` +Using `SET SESSION` takes effect immediately: + +```sql mysql> SET SESSION sql_mode = 'STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER'; Query OK, 0 rows affected (0.01 sec) diff --git a/sql-statements/sql-statement-show-variables.md b/sql-statements/sql-statement-show-variables.md index 661248c9dce3e..49b0995e2d4ea 100644 --- a/sql-statements/sql-statement-show-variables.md +++ b/sql-statements/sql-statement-show-variables.md @@ -25,85 +25,123 @@ This statement shows a list of variables for the scope of either `GLOBAL` or `SE ## Examples +List all TiDB specific variables. For detailed description, refer to [TiDB Specific System Variables](/tidb-specific-system-variables.md). + ```sql mysql> SHOW GLOBAL VARIABLES LIKE 'tidb%'; -+-------------------------------------+---------------+ -| Variable_name | Value | -+-------------------------------------+---------------+ -| tidb_ddl_error_count_limit | 512 | -| tidb_dml_batch_size | 20000 | -| tidb_force_priority | NO_PRIORITY | -| tidb_batch_insert | 0 | -| tidb_skip_utf8_check | 0 | -| tidb_backoff_lock_fast | 100 | -| tidb_opt_join_reorder_threshold | 0 | -| tidb_auto_analyze_end_time | 23:59 +0000 | -| tidb_slow_log_threshold | 300 | -| tidb_opt_correlation_exp_factor | 1 | -| tidb_mem_quota_sort | 1073741824 | -| tidb_current_ts | 0 | -| tidb_ddl_reorg_batch_size | 256 | -| tidb_checksum_table_concurrency | 4 | -| tidb_check_mb4_value_in_utf8 | 1 | -| tidb_distsql_scan_concurrency | 15 | -| tidb_optimizer_selectivity_level | 0 | -| tidb_opt_agg_push_down | 0 | -| tidb_max_chunk_size | 1024 | -| tidb_low_resolution_tso | 0 | -| tidb_index_lookup_size | 20000 | -| tidb_skip_isolation_level_check | 0 | -| tidb_opt_write_row_id | 0 | -| tidb_wait_split_region_finish | 1 | -| tidb_index_lookup_join_concurrency | 4 | -| tidb_mem_quota_indexlookupjoin | 34359738368 | -| tidb_replica_read | leader | -| tidb_ddl_reorg_priority | PRIORITY_LOW | -| tidb_batch_commit | 0 | -| tidb_mem_quota_mergejoin | 34359738368 | -| tidb_mem_quota_query | 34359738368 | -| tidb_batch_delete | 0 | -| tidb_build_stats_concurrency | 4 | -| tidb_enable_index_merge | 0 | -| tidb_enable_radix_join | 0 | -| tidb_retry_limit | 10 | -| tidb_query_log_max_len | 2048 | -| tidb_config | | -| tidb_ddl_reorg_worker_cnt | 4 | -| tidb_opt_insubq_to_join_and_agg | 1 | -| tidb_enable_vectorized_expression | 1 | -| tidb_mem_quota_hashjoin | 34359738368 | -| tidb_disable_txn_auto_retry | 1 | -| tidb_enable_window_function | 1 | -| tidb_init_chunk_size | 32 | -| tidb_constraint_check_in_place | 0 | -| tidb_wait_split_region_timeout | 300 | -| tidb_hash_join_concurrency | 5 | -| tidb_enable_fast_analyze | 0 | -| tidb_enable_cascades_planner | 0 | -| tidb_txn_mode | | -| tidb_index_serial_scan_concurrency | 1 | -| tidb_projection_concurrency | 4 | -| tidb_enable_noop_functions | 0 | -| tidb_index_lookup_concurrency | 4 | -| tidb_hashagg_partial_concurrency | 4 | -| tidb_general_log | 0 | -| tidb_enable_streaming | 0 | -| tidb_backoff_weight | 2 | -| tidb_mem_quota_topn | 34359738368 | -| tidb_scatter_region | 0 | -| tidb_index_join_batch_size | 25000 | -| tidb_snapshot | | -| tidb_expensive_query_time_threshold | 60 | -| tidb_slow_query_file | tidb-slow.log | -| tidb_auto_analyze_ratio | 0.5 | -| tidb_enable_table_partition | auto | -| tidb_auto_analyze_start_time | 00:00 +0000 | -| tidb_mem_quota_nestedloopapply | 34359738368 | -| tidb_mem_quota_indexlookupreader | 34359738368 | -| tidb_hashagg_final_concurrency | 4 | -| tidb_opt_correlation_threshold | 0.9 | -+-------------------------------------+---------------+ -68 rows in set (0.01 sec) ++-------------------------------------+---------------------+ +| Variable_name | Value | ++-------------------------------------+---------------------+ +| tidb_allow_batch_cop | 0 | +| tidb_allow_remove_auto_inc | 0 | +| tidb_auto_analyze_end_time | 23:59 +0000 | +| tidb_auto_analyze_ratio | 0.5 | +| tidb_auto_analyze_start_time | 00:00 +0000 | +| tidb_backoff_lock_fast | 100 | +| tidb_backoff_weight | 2 | +| tidb_batch_commit | 0 | +| tidb_batch_delete | 0 | +| tidb_batch_insert | 0 | +| tidb_build_stats_concurrency | 4 | +| tidb_capture_plan_baselines | off | +| tidb_check_mb4_value_in_utf8 | 1 | +| tidb_checksum_table_concurrency | 4 | +| tidb_config | | +| tidb_constraint_check_in_place | 0 | +| tidb_current_ts | 0 | +| tidb_ddl_error_count_limit | 512 | +| tidb_ddl_reorg_batch_size | 256 | +| tidb_ddl_reorg_priority | PRIORITY_LOW | +| tidb_ddl_reorg_worker_cnt | 4 | +| tidb_disable_txn_auto_retry | 1 | +| tidb_distsql_scan_concurrency | 15 | +| tidb_dml_batch_size | 20000 | +| tidb_enable_cascades_planner | 0 | +| tidb_enable_chunk_rpc | 1 | +| tidb_enable_collect_execution_info | 1 | +| tidb_enable_fast_analyze | 0 | +| tidb_enable_index_merge | 0 | +| tidb_enable_noop_functions | 0 | +| tidb_enable_radix_join | 0 | +| tidb_enable_slow_log | 1 | +| tidb_enable_stmt_summary | 1 | +| tidb_enable_streaming | 0 | +| tidb_enable_table_partition | on | +| tidb_enable_vectorized_expression | 1 | +| tidb_enable_window_function | 1 | +| tidb_evolve_plan_baselines | off | +| tidb_evolve_plan_task_end_time | 23:59 +0000 | +| tidb_evolve_plan_task_max_time | 600 | +| tidb_evolve_plan_task_start_time | 00:00 +0000 | +| tidb_expensive_query_time_threshold | 60 | +| tidb_force_priority | NO_PRIORITY | +| tidb_general_log | 0 | +| tidb_hash_join_concurrency | 5 | +| tidb_hashagg_final_concurrency | 4 | +| tidb_hashagg_partial_concurrency | 4 | +| tidb_index_join_batch_size | 25000 | +| tidb_index_lookup_concurrency | 4 | +| tidb_index_lookup_join_concurrency | 4 | +| tidb_index_lookup_size | 20000 | +| tidb_index_serial_scan_concurrency | 1 | +| tidb_init_chunk_size | 32 | +| tidb_isolation_read_engines | tikv, tiflash, tidb | +| tidb_low_resolution_tso | 0 | +| tidb_max_chunk_size | 1024 | +| tidb_max_delta_schema_count | 1024 | +| tidb_mem_quota_hashjoin | 34359738368 | +| tidb_mem_quota_indexlookupjoin | 34359738368 | +| tidb_mem_quota_indexlookupreader | 34359738368 | +| tidb_mem_quota_mergejoin | 34359738368 | +| tidb_mem_quota_nestedloopapply | 34359738368 | +| tidb_mem_quota_query | 1073741824 | +| tidb_mem_quota_sort | 34359738368 | +| tidb_mem_quota_topn | 34359738368 | +| tidb_metric_query_range_duration | 60 | +| tidb_metric_query_step | 60 | +| tidb_opt_agg_push_down | 0 | +| tidb_opt_concurrency_factor | 3 | +| tidb_opt_copcpu_factor | 3 | +| tidb_opt_correlation_exp_factor | 1 | +| tidb_opt_correlation_threshold | 0.9 | +| tidb_opt_cpu_factor | 3 | +| tidb_opt_desc_factor | 3 | +| tidb_opt_disk_factor | 1.5 | +| tidb_opt_distinct_agg_push_down | 0 | +| tidb_opt_insubq_to_join_and_agg | 1 | +| tidb_opt_join_reorder_threshold | 0 | +| tidb_opt_memory_factor | 0.001 | +| tidb_opt_network_factor | 1 | +| tidb_opt_scan_factor | 1.5 | +| tidb_opt_seek_factor | 20 | +| tidb_opt_write_row_id | 0 | +| tidb_optimizer_selectivity_level | 0 | +| tidb_pprof_sql_cpu | 0 | +| tidb_projection_concurrency | 4 | +| tidb_query_log_max_len | 4096 | +| tidb_record_plan_in_slow_log | 1 | +| tidb_replica_read | leader | +| tidb_retry_limit | 10 | +| tidb_row_format_version | 2 | +| tidb_scatter_region | 0 | +| tidb_skip_isolation_level_check | 0 | +| tidb_skip_utf8_check | 0 | +| tidb_slow_log_threshold | 300 | +| tidb_slow_query_file | tidb-slow.log | +| tidb_snapshot | | +| tidb_stmt_summary_history_size | 24 | +| tidb_stmt_summary_internal_query | 0 | +| tidb_stmt_summary_max_sql_length | 4096 | +| tidb_stmt_summary_max_stmt_count | 200 | +| tidb_stmt_summary_refresh_interval | 1800 | +| tidb_store_limit | 0 | +| tidb_txn_mode | | +| tidb_use_plan_baselines | on | +| tidb_wait_split_region_finish | 1 | +| tidb_wait_split_region_timeout | 300 | +| tidb_window_concurrency | 4 | ++-------------------------------------+---------------------+ +108 rows in set (0.01 sec) mysql> SHOW GLOBAL VARIABLES LIKE 'time_zone%'; +---------------+--------+