• 权限管理
  • SET 语句
    • 设置变量值
    • SET CHARACTER 语句和 SET NAMES
    • 设置密码
    • 设置隔离级别
  • SHOW 语句
  • ADMIN 语句

    TiDB 可以通过一些语句对数据库进行管理,包括设置权限、修改系统变量、查询数据库状态。

    权限管理

    参考权限管理文档。

    SET 语句

    SET 语句有多种作用和形式:

    设置变量值

    1. SET variable_assignment [, variable_assignment] ...
    2. variable_assignment:
    3. user_var_name = expr
    4. | param_name = expr
    5. | local_var_name = expr
    6. | [GLOBAL | SESSION]
    7. system_var_name = expr
    8. | [@@global. | @@session. | @@]
    9. system_var_name = expr

    这种语法可以设置 TiDB 的变量值,包括系统变量以及用户定义变量。对于用户自定义变量,都是会话范围的变量;对于系统变量,通过 @@global. 或者是 GLOBAL 设置的变量为全局范围变量,否则为会话范围变量,具体参考系统变量一章。

    SET CHARACTER 语句和 SET NAMES

    1. SET {CHARACTER SET | CHARSET}
    2. {'charset_name' | DEFAULT}
    3. SET NAMES {'charset_name'
    4. [COLLATE 'collation_name'] | DEFAULT}

    这个语句设置这三个会话范围的系统变量:character_set_clientcharacter_set_resultscharacter_set_connection 设置为给定的字符集。目前 character_set_connection 变量的值和 MySQL 有所区别,MySQL 将其设置为 character_set_database 的值。

    设置密码

    1. SET PASSWORD [FOR user] = password_option
    2. password_option: {
    3. 'auth_string'
    4. | PASSWORD('auth_string')
    5. }

    设置用户密码,具体信息参考权限管理。

    设置隔离级别

    1. SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;

    设置事务隔离级别,具体信息参考事务语句。

    SHOW 语句

    TiDB 支持部分 SHOW 语句,用于查看 Database/Table/Column 信息,或者是数据库内部的状态。已经支持的语句:

    1. # 已支持,且和 MySQL 行为一致
    2. SHOW CHARACTER SET [like_or_where]
    3. SHOW COLLATION [like_or_where]
    4. SHOW [FULL] COLUMNS FROM tbl_name [FROM db_name] [like_or_where]
    5. SHOW CREATE {DATABASE|SCHEMA} db_name
    6. SHOW CREATE TABLE tbl_name
    7. SHOW DATABASES [like_or_where]
    8. SHOW GRANTS FOR user
    9. SHOW INDEX FROM tbl_name [FROM db_name]
    10. SHOW PRIVILEGES
    11. SHOW [FULL] PROCESSLIST
    12. SHOW [GLOBAL | SESSION] STATUS [like_or_where]
    13. SHOW TABLE STATUS [FROM db_name] [like_or_where]
    14. SHOW [FULL] TABLES [FROM db_name] [like_or_where]
    15. SHOW [GLOBAL | SESSION] VARIABLES [like_or_where]
    16. SHOW WARNINGS
    17. # 已支持,但是返回空结果,目的是提升兼容性
    18. SHOW ENGINE engine_name {STATUS | MUTEX}
    19. SHOW [STORAGE] ENGINES
    20. SHOW PLUGINS
    21. SHOW PROCEDURE STATUS [like_or_where]
    22. SHOW TRIGGERS [FROM db_name] [like_or_where]
    23. SHOW EVENTS
    24. SHOW FUNCTION STATUS [like_or_where]
    25. # TiDB 特有语句,用于查看统计信息
    26. SHOW STATS_META [like_or_where]
    27. SHOW STATS_HISTOGRAMS [like_or_where]
    28. SHOW STATS_BUCKETS [like_or_where]
    29. like_or_where:
    30. LIKE 'pattern'
    31. | WHERE expr

    说明:

    • 通过 SHOW 语句展示统计信息请参考统计信息说明
    • 关于 SHOW 语句更多信息请参考 MySQL 文档

    ADMIN 语句

    该语句是 TiDB 扩展语法,用于查看 TiDB 自身的状态。

    1. ADMIN SHOW DDL
    2. ADMIN SHOW DDL JOBS
    3. ADMIN SHOW DDL JOB QUERIES 'job_id' [, 'job_id'] ...
    4. ADMIN CANCEL DDL JOBS 'job_id' [, 'job_id'] ...
    • ADMIN SHOW DDL

    用于查看当前正在执行的 DDL 作业。

    • ADMIN SHOW DDL JOBS

    用于查看当前 DDL 作业队列中的所有结果(包括正在运行以及等待运行的任务)以及已执行完成的 DDL 作业队列中的最近十条结果。

    • ADMIN SHOW DDL JOB QUERIES 'job_id' [, 'job_id'] ...

    用于显示 job_id 对应的 DDL 任务的原始 SQL 语句。这个 job_id 只会搜索正在执行中的任务以及 DDL 历史作业队伍中最近的十条。

    • ADMIN CANCEL DDL JOBS 'job_id' [, 'job_id'] ...

    用于取消正在执行的 DDL 作业,其返回值为对应的作业取消是否成功,如果失败会显示失败的具体原因。这个操作可以同时取消多个 DDL 作业,其中 DDL 作业 ID 可以通过 ADMIN SHOW DDL JOBS 语句来获取。其中如果希望取消的作业已经完成,则取消操作将会失败。