3.5.2 SHOW语句
3.5.2.1 dble劫持的SHOW
- SHOW DATABASES
将sharding.xml 中的所有schema展示出来 。 - SHOW CREATE DATABASE [IF NOT EXISTS] schema
将sharding.xml 中的指定schema的创建语句展示,创建语句为dble伪造,无实际意义 。 - SHOW [FULL|ALL] TABLES [FROM db_name] [LIKE 'pattern'| WHERE expr]
当schmea没有配置默认节点时,将schema下配置的tables直接展示出来。
当schema有默认节点时,将语句转发至默认节点,然后将结果集与schema下配置的tables做一个去重合并,再返回给客户端。 - SHOW ALL TABLES [FROM db_name] [LIKE 'pattern'| WHERE expr]
dble自有命令,与SHOW FULL TABLES 返回结果集类似,不同之处是Table_type这列分为了 SHARDING TABLE,sharding table, GLOBAL TABLE 。参见6.Differernce_from_MySQL_Server.md。 - SHOW [FULL] {COLUMNS | FIELDS} FROM tbl_name [{FROM|IN} db_name] [LIKE 'pattern' | WHERE expr]
将逻辑schema转为物理schema之后下发到表所在的任意节点。 - SHOW { INDEX | INDEXES | KEYS} {FROM | IN} tbl_name [ {FROM | IN} db_name ] [ WHERE expr]
将逻辑schema转为物理schema之后下发到表所在的任意节点。 - SHOW CREATE TABLE tbl_name
将逻辑schema转为物理schema之后下发到表所在的任意节点。 - SHOW [GLOBAL | SESSION] VARIABLES [LIKE 'pattern' | WHERE expr]
随机转发到任意节点,收到结果集后,用本地变量进行覆盖(global 不正确?) - SHOW CREATE VIEW view_name
将dble层面的view展示出来 - SHOW CHARSET
将之转为show character set 之后透传转发 - SHOW TABLE STATUS [{FROM | IN} db_name] [LIKE 'pattern' | WHERE expr]
只是为了支持SQLyog,其中name列逻辑和show tables一致,其他列均为伪造。 - SHOW TRACE
观察trace结果,详情请见 单条SQL性能trace
注意事项:
所有以上命令的explain结果可能不准确。
例:
show databases;
show full tables;
show columns from a_test;
show index from a_test;
show create table a_test;
show variables;
show charset;
3.5.2.2 dble透传的SHOW
除了dble劫持的特定SHOW语句外,其它SHOW语句都透传,这些语句与MySQL语法相同。
例:
SHOW CHARACTER SET;
SHOW CHARACTER SET like 'utf8';
SHOW CHARACTER SET where maxlen=2;