
# 查看系统表
除了创建的表以外，数据库还包含很多系统表。这些系统表包含集群安装信息以及GaussDB上运行的各种查询和进程的信息。可以通过查询系统表来收集有关数据库的信息。
"[系统表和系统视图](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0837.html#ZH-CN_TOPIC_0000002558946171)"中每个表的说明指出了表是对所有用户可见还是只对初始化用户可见。以初始化用户身份登录才能查询只对初始化用户可见的表。
GaussDB提供了以下类型的系统表和系统视图：
- 兼容PG的系统表和系统视图。这类系统表和系统视图具有PG前缀。
- GaussDB内核新增的系统表和系统视图。这类系统表和系统视图具有GS前缀。
- 兼容ORA数据库的系统表和系统视图。这类系统表和系统视图具有ALL、DBA、USER或PV前缀。
#### 查看数据库中包含的表
在public Schema下新建五张表：
```
gaussdb=# CREATE TABLE public.search_table_t1(a int) DISTRIBUTE BY HASH(a);
CREATE TABLE
gaussdb=# CREATE TABLE public.search_table_t2(b int) DISTRIBUTE BY HASH(b);
CREATE TABLE
gaussdb=# CREATE TABLE public.search_table_t3(c int) DISTRIBUTE BY HASH(c);
CREATE TABLE
gaussdb=# CREATE TABLE public.search_table_t4(d int) DISTRIBUTE BY HASH(d);
CREATE TABLE
gaussdb=# CREATE TABLE public.search_table_t5(e int) DISTRIBUTE BY HASH(e);
CREATE TABLE
```
在[PG_TABLES](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-1304.html#ZH-CN_TOPIC_0000002527986560)系统表中查看public Schema中包含的前缀为search_table的表：
```
gaussdb=# SELECT DISTINCT(tablename) FROM pg_tables WHERE SCHEMANAME = 'public' AND TABLENAME LIKE 'search_table%';
```
结果如下：
```
tablename
-----------------
 search_table_t1
 search_table_t2
 search_table_t3
 search_table_t4
 search_table_t5
(5 rows)
```
#### 查看数据库用户
通过[PG_USER](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-1113.html#ZH-CN_TOPIC_0000002527986458)可以查看数据库中所有用户的列表，还可以查看用户ID（USESYSID）和用户权限。
```
gaussdb=# SELECT * FROM gs_user;
 usename | usesysid | usecreatedb | usesuper | usecatupd | userepl |  passwd  | valbegin | valuntil |   respool    | parent | spacelimit | useconfig | nodegroup | tempspacelimit | spillsp
acelimit | usemonitoradmin | useoperatoradmin | usepolicyadmin 
---------+----------+-------------+----------+-----------+---------+----------+----------+----------+--------------+--------+------------+-----------+-----------+----------------+--------
---------+-----------------+------------------+----------------
 omm     |       10 | t           | t        | t         | t       | ******** |          |          | default_pool |      0 |            |           |           |                |        
         | t               | t                | t
(1 row)
```
#### 查看和停止正在运行的查询语句
通过视图[PG_STAT_ACTIVITY](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-1901.html#ZH-CN_TOPIC_0000002527986470)可以查看正在运行的查询语句。方法如下：
1. 设置参数track_activities为on。 
   ```
   gaussdb=# SET track_activities = on;
   ```
   当此参数为on时，数据库系统才会获取当前活动查询的运行信息。
   
   
2. 查看正在运行的查询语句。以查看正在运行的查询语句所连接的数据库名、执行查询的用户、查询状态及查询对应的PID为例：
   
   ```
   gaussdb=# SELECT datname, usename, state, pid FROM pg_stat_activity;
   ```
   ```
   datname  | usename | state  |       pid
   ----------+---------+--------+-----------------
    testdb | Ruby    | active | 140298793514752
    testdb | Ruby    | active | 140298718004992
    testdb | Ruby    | idle   | 140298650908416
    testdb | Ruby    | idle   | 140298625742592
    testdb | omm | active | 140298575406848
   (5 rows)
   ```
   如果state字段显示为idle，则表明此连接处于空闲，等待用户输入命令。
   如果仅需要查看非空闲的查询语句，则执行如下命令查看：
   ```
   gaussdb=# SELECT datname, usename, state, pid FROM pg_stat_activity WHERE state != 'idle';
   ```
   
   
3. 若需要取消运行时间过长的查询，通过[pg_terminate_backend(pid int)](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0384.html#ZH-CN_TOPIC_0000002559105829__zh-cn_topic_0000002558055389_section281832593018)函数，根据线程ID（即[2]中查询结果的pid字段）结束会话。
   
   ```
   gaussdb=# SELECT PG_TERMINATE_BACKEND(140298793514752);
   ```
   显示类似如下信息，表示结束会话成功。
   ```
   PG_TERMINATE_BACKEND
   ----------------------
    t
   (1 row)
   ```
   显示类似如下信息，表示用户执行了结束当前会话的操作。
   ```
   FATAL:  terminating connection due to administrator command
   FATAL:  terminating connection due to administrator command
   ```
   ![](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
   - 当使用gsql客户端调用[pg_terminate_backend(pid int)](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0384.html#ZH-CN_TOPIC_0000002559105829__zh-cn_topic_0000002558055389_section281832593018)函数终止当前会话的后台线程时，连接行为取决于用户身份：
     - 初始用户：客户端保持连接并自动重置（提示：The connection to the server was lost. Attempting reset: Succeeded.）。
     
     - 非初始用户：客户端连接中断且重置失败（提示：The connection to the server was lost. Attempting reset: Failed.）。
     
     
     原因为：初始用户具备免密码登录权限，而普通用户无此权限。
     
   
   - 使用[pg_terminate_backend(pid int)](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0384.html#ZH-CN_TOPIC_0000002559105829__zh-cn_topic_0000002558055389_section281832593018)函数结束非活跃的后台线程时，如果打开了线程池，此时空闲的会话没有线程ID，无法结束会话。非线程池模式下，结束的会话不会自动重连。
    
   
   
 
