PostgreSQL 方言数据库的信息架构

信息架构是每个 PostgreSQL 数据库通用的内置架构。您可以对 information_schema 中的表运行 SQL 查询来提取数据库的架构元数据。

例如,以下查询可提取数据库中所有用户定义的表的名称:

  SELECT
    table_schema,
    table_name
  FROM
    information_schema.tables
  WHERE
    table_schema NOT IN ('pg_catalog', 'information_schema', 'SPANNER_SYS')
    AND table_type = 'BASE TABLE'

用法

  • information_schema 表只能通过 SQL 接口获得,例如:

    • executeQuery API
    • gcloud spanner databases execute-sql 命令
    • Google Cloud 控制台中数据库的查询页面。

    其他单次读取方法不支持 information_schema

information_schema for PostgreSQL 的区别

对于 PostgreSQL 方言数据库,information_schema 中的表包含开源 PostgreSQL 的 information_schema 中的列,在某些情况下还包含 Spanner 中的列。在这些表中,开源 PostgreSQL 列会先显示,并且顺序与开源 PostgreSQL 数据库中的顺序相同,然后附加 Spanner 的任何特有列。为开源 PostgreSQL 版本的 information_schema 编写的查询在使用 Google Cloud CLI 中的 PostgreSQL 方言数据库时,无需修改即可正常运行。

对于 PostgreSQL 方言数据库,information_schema 的其他显著区别包括:

  • 开源 PostgreSQL 的某些表列可用,但在 PostgreSQL 方言数据库中未填充。
  • PostgreSQL 方言数据库使用 public 作为默认架构名称。
  • 自动生成的限制条件名称使用的格式与开源 PostgreSQL 数据库不同。
  • 与 PostgreSQL 方言数据库中不支持的开源 PostgreSQL 功能相关的表不可用。
  • 某些适用于 Spanner 但不适用于开源 PostgreSQL 的表(例如 database_optionsindex_columnsindexesspanner_statistics)可供使用。

information_schema 表格和视图中的行过滤

具有数据库级 IAM 权限的主账号以及已被授予 spanner_info_reader 系统角色(或该角色的成员)访问权限的主账号可以查看所有 information_schema 表和视图中的所有行。对于其他正文,Spanner 会根据当前数据库角色过滤行。以下各部分中的表格和视图说明指明了 Spanner 如何针对每个表和视图过滤行。

information_schema 中适用于 PostgreSQL 方言数据库的表

information_schema 中的表和视图与开源 PostgreSQL 的 information_schema 中的表和视图兼容。

以下部分介绍了 information_schema 中适用于 PostgreSQL 方言数据库的表和视图。

applicable_roles

此经过行过滤的视图会列出明确授予所有数据库角色的所有角色成员资格。具有数据库级 IAM 权限的主账号以及已获授 spanner_info_reader 系统角色或该角色成员访问权限的主账号可以查看此视图中的所有行。所有其他主账号只能看到授予当前数据库角色或当前数据库角色所属角色的角色成员资格。

由于所有数据库角色都是 public 角色的成员,因此结果会省略 public 角色的隐式成员资格记录。

列名称 类型 说明
grantee character varying 已授予成员资格的数据库角色的名称。
role_name character varying 授予相应成员资格的父数据库角色的名称。
is_grantable character varying 未使用。始终为 NO

change_stream_columns

此行过滤视图包含有关表列和监控这些列的更改流的信息。每行描述一个更改流和一个列。 如果变更数据流跟踪整个表,则该表中的列不会显示在此视图中。

具有数据库级 IAM 权限的主账号以及已被授予 spanner_info_reader 系统角色或该角色成员访问权限的主账号可以查看此视图中的所有行。所有其他主账号只能看到以下变更数据流的行:当前数据库角色、当前数据库角色所属的角色或 public 对这些变更数据流拥有 SELECT 权限。

列名 类型 说明
change_stream_catalog character varying 数据库名称。
change_stream_schema character varying 变更数据流的架构名称。对于 PostgreSQL 方言数据库,默认值为 public
change_stream_name character varying 变更数据流的名称。
table_catalog character varying 数据库名称。
table_schema character varying 表的架构名称。对于 PostgreSQL 方言数据库,默认值为 public
table_name character varying 相应行所指的表的名称。
column_name character varying 相应行所指的列的名称。

change_stream_options

此经过行过滤的视图包含变更数据流的配置选项。 具有数据库级 IAM 权限的主账号以及已获准访问 spanner_info_reader 系统角色或该角色成员的主账号可以查看此视图中的所有行。所有其他委托人只能看到当前数据库角色、当前数据库角色所属的角色或 public 拥有 SELECT 权限的变更数据流的选项。

列名 类型 说明
change_stream_catalog character varying 数据库名称。
change_stream_schema character varying 变更数据流的架构名称。对于 PostgreSQL 方言数据库,默认值为 public
change_stream_name character varying 变更数据流的名称。
option_name character varying 变更数据流选项的名称。
option_type character varying 变更数据流选项的数据类型。
option_value character varying 变更数据流选项的值。

change_stream_privileges

此行过滤视图列出了授予任何数据库角色(包括 public)的所有变更数据流的所有精细访问权限控制权限。拥有数据库级 IAM 权限的主账号以及已获得 spanner_info_reader 系统角色或该角色成员的访问权限的主账号可以查看此视图中的所有行。所有其他委托人只能看到授予当前数据库角色、当前数据库角色所属的角色或 public 的变更数据流权限。

列名称 类型 说明
grantor character varying 未使用。始终为 NULL
grantee character varying 相应权限所授予的数据库角色的名称。
change_stream_catalog character varying 数据库名称。
change_stream_schema character varying 包含更改流的架构的名称。 对于 PostgreSQL 方言数据库,默认值为 public
change_stream_name character varying 变更数据流的名称。
privilege_type character varying 权限的类型(仅限 SELECT)。
is_grantable character varying 未使用。始终为 NO

change_stream_tables

此经过行过滤的视图包含有关表以及监控这些表的变更数据流的信息。每一行描述一个表和一个更改流。具有数据库级 IAM 权限的主账号以及已被授予 spanner_info_reader 系统角色或该角色成员访问权限的主账号可以查看此视图中的所有行。所有其他主账号只能看到当前数据库角色、当前数据库角色所属的角色或 public 获授 SELECT 权限的变更数据流的行。

change_stream_tables 中的数据不包括表与跟踪整个数据库的变更数据流之间的隐式关系。

列名 类型 说明
change_stream_catalog character varying 数据库名称。
change_stream_schema character varying 变更数据流的架构名称。对于 PostgreSQL 方言数据库,默认值为 public
change_stream_name character varying 相应行所指的变更数据流的名称。
table_catalog character varying 数据库名称。
table_schema character varying 表的架构名称。对于 PostgreSQL 方言数据库,默认值为 public
table_name character varying 相应行所指的表的名称。
all_columns character varying 如果相应行的变更数据流跟踪的是该行所指表的全部内容,则为 YES。否则,NO。根据 SQL 标准,字符串可以是 YESNO,但不能是布尔值。

change_streams

此行过滤视图会列出数据库的所有变更数据流,并注明哪些变更数据流跟踪整个数据库,哪些跟踪特定表或列。具有数据库级 IAM 权限的主账号以及已被授予 spanner_info_reader 系统角色或该角色成员访问权限的主账号可以查看此视图中的所有行。所有其他主账号只能查看当前数据库角色、当前数据库角色所属的角色或 public 获授 SELECT 精细访问权限控制权限的变更数据流。

列名 类型 说明
change_stream_catalog character varying 数据库名称。
change_stream_schema character varying 相应变更数据流的架构名称。对于 PostgreSQL 方言数据库,默认值为 public
change_stream_name character varying 变更数据流的名称。
all character varying 如果相应变更数据流跟踪整个数据库,则为 YES。 如果此变更数据流跟踪特定表或列,则为 NO。 根据 SQL 标准,字符串可以是 YESNO,但不能是布尔值。

check_constraints

check_constraints 视图包含由 CHECKNOT NULL 关键字定义的每个检查限制条件对应的一行。

列名 类型 说明
constraint_catalog character varying 数据库名称。
constraint_schema character varying 限制条件的架构名称。对于 PostgreSQL 方言数据库,默认值为 public
constraint_name character varying 限制条件的名称。如果未在架构中明确指定限制条件的名称,则使用自动生成的名称。
check_clause character varying 检查限制条件的表达式。
spanner_state character varying 检查约束的当前状态。可能的状态如下:
  • VALIDATING:PostgreSQL 方言数据库正在验证 ALTER CONSTRAINTADD CONSTRAINT 命令的现有数据。
  • COMMITTED:此限制条件没有有效的架构更改。

column_column_usage

此视图列出了同一表中依赖于其他基本列的所有生成的列。

列名 类型 说明
table_catalog character varying 数据库名称。
table_schema character varying 包含表的架构的名称。默认架构的名称为 public,其他架构(例如,information_schema 本身)的名称为非空。此列从来不会为 null。
table_name character varying 包含生成的列的表的名称。
column_name character varying 生成的列所依赖的基础列的名称。
dependent_column character varying 生成的列的名称。

column_options

此视图列出了为外键限制条件的被引用表列定义的所有选项。该视图仅包含当前用户有权访问(通过成为所有者或被授予权限)的参考表中的列。

列名 类型 说明
table_catalog character varying 数据库名称。
table_schema character varying 包含外部表的架构的名称。默认架构的名称为 public,其他架构(例如,information_schema 本身)的名称为非空。此列从来不会为 null。
table_name character varying 外部表的名称。
column_name character varying 列的名称。
option_name character varying 唯一标识选项的 SQL 标识符。此标识符是 DDL 中 OPTIONS 子句的键。
option_value character varying 描述此选项值的 SQL 字面量。此列的值可作为查询的一部分进行解析。
option_type character varying 表示此选项值的类型的数据类型名称。

column_privileges

此行过滤视图列出了授予任何数据库角色的所有列的所有精细访问权限控制权限,包括 public。拥有 IAM 数据库级权限的主账号以及已获得 spanner_info_reader 系统角色或该角色成员的访问权限的主账号可以查看此视图中的所有行。所有其他主账号只能看到授予当前数据库角色、当前数据库角色所属的角色或 public 的列权限。

该视图包含列从包含该列的表或视图继承的 SELECTINSERTUPDATE 权限。

列名称 类型 说明
grantor character varying 未使用。始终为 NULL
grantee character varying 相应权限所授予的数据库角色的名称。
table_catalog character varying 数据库名称。
table_schema character varying 包含表或视图的架构的名称。对于 PostgreSQL 方言数据库,默认值为 public
table_name character varying 包含相应列的表或视图的名称。
column_name character varying 列的名称。
privilege_type character varying 相应权限的类型(SELECTINSERTUPDATE)。
is_grantable character varying 未使用。始终为 NO

columns

此行过滤视图提供有关数据库中所有表列和视图列的信息。具有数据库级 IAM 权限的主账号以及已获授 spanner_info_reader 系统角色或该角色成员访问权限的主账号可以查看此视图中的所有行。所有其他主账号只能看到以下列:当前数据库角色、当前数据库角色所属的角色或 public 对这些列拥有任何精细访问权限控制权限(或对这些列所属的表拥有 SELECTINSERTUPDATE 权限)。

列名 类型 说明
table_catalog character varying 数据库名称。
table_schema character varying 包含表的架构的名称。默认架构的名称为 public,其他架构(例如,information_schema 本身)的名称为非空。此列从来不会为 null。
table_name character varying 表的名称
column_name character varying 列的名称
ordinal_position BIGINT 列在表中的序号位置,从 1 开始
column_default character varying 列默认值的开源 PostgreSQL 表达式的字符串表示形式,例如 '9'::bigint
is_nullable character varying 指明列是否可以为 Null 的字符串。根据 SQL 标准,字符串可以是 YESNO,但不能是布尔值。
data_type character varying 列的数据类型。该值可以是以下任一值:
  • 对于内置类型,为数据类型的名称。
  • 对于数组,值为 ARRAY。
character_maximum_length BIGINT 字符和位串数据类型的声明长度上限。如果未指定最大长度,则该值为 NULL。如果列的数据类型不是字符或位串,则值为 NULL
character_octet_length BIGINT 未使用。值始终为 NULL
numeric_precision BIGINT 当前列的数值数据类型的精度。 对于 double precision,值为 53。对于 bigint,值为 64。 对于所有其他数据类型,值为 NULL
numeric_precision_radix BIGINT 数值类型精度的基准(单位)。仅支持两个值:
  • 2 个用于 double precision float8bigint
  • 10 个(适用于 numeric
对于所有其他数据类型,值为 NULL
numeric_scale BIGINT 包含数值列类型的标度,即小数点后的精度基本单位数。对于 bigint,值为 0。 对于所有其他数据类型,值为 NULL
datetime_precision BIGINT 未使用。值始终为 NULL
interval_type character varying 未使用。值始终为 NULL
interval_precision BIGINT 未使用。值始终为 NULL
character_set_catalog character varying 未使用。值始终为 NULL
character_set_schema character varying 未使用。值始终为 NULL
character_set_name character varying 未使用。值始终为 NULL
collation_catalog character varying 未使用。值始终为 NULL
collation_schema character varying 未使用。值始终为 NULL
collation_name character varying 未使用。值始终为 NULL
domain_catalog character varying 未使用。值始终为 NULL
domain_schema character varying 未使用。值始终为 NULL
domain_name character varying 未使用。值始终为 NULL
udt_catalog character varying 未使用。值始终为 NULL
udt_schema character varying 未使用。值始终为 NULL
udt_name character varying 未使用。值始终为 NULL
scope_catalog character varying 未使用。值始终为 NULL
scope_schema character varying 未使用。值始终为 NULL
scope_name character varying 未使用。值始终为 NULL
maximum_cardinality BIGINT 未使用。值始终为 NULL
dtd_identifier character varying 未使用。值始终为 NULL
is_self_referencing character varying 未使用。值始终为 NULL
is_identity character varying 未使用。值始终为 NULL
identity_generation character varying 未使用。值始终为 NULL
identity_start character varying 未使用。值始终为 NULL
identity_increment character varying 未使用。值始终为 NULL
identity_maximum character varying 未使用。值始终为 NULL
identity_minimum character varying 未使用。值始终为 NULL
identity_cycle character varying 未使用。值始终为 NULL
is_generated character varying 指明是否生成列的字符串。对于生成的列,字符串为 ALWAYS;对于非生成的列,该字符串为 NEVER
generation_expression character varying 表示所生成列的 SQL 表达式的字符串;如果相应列不是生成列,则为 NULL
is_updatable character varying 未使用。值始终为 NULL
spanner_type character varying 一个字符串,用于保存与 DDL 兼容的列类型。
is_stored character varying 指明是否存储生成的列的字符串。对于生成的列,字符串始终为 YESNO;对于非生成的列,该字符串始终为 NULL
spanner_state character varying 列的当前状态。向现有表添加的新的生成的已存储列可能需要经过多个用户可观察状态才能充分利用。可能的
    值如下:
  • NO_WRITE:不允许对列进行读取或写入操作。 处于此状态的存储生成列不会造成任何客户端影响。
  • WRITE_ONLY:正在回填列。不允许读取。
  • COMMITTED:该列完全可用。
  • NULL:用于系统架构中的列。

constraint_column_usage

此视图包含一行有关限制条件使用的每一列的信息。

  • 对于由 NOT NULL 关键字定义的 PRIMARY KEYCHECK 限制条件,视图包含这些列。
  • 对于使用 CHECK 关键字创建的 CHECK 限制条件,该视图包含检查限制条件表达式使用的列。
  • 对于外键限制条件,该视图包含被引用表的列。
  • 对于 UNIQUE 限制条件,该视图包含 KEY_COLUMN_USAGE 中的列。

列名 类型 说明
table_catalog character varying 数据库名称。
table_schema character varying 包含相应列的表的架构的名称,该列由相应限制条件使用。
table_name character varying 包含限制条件所用列的表的名称。
column_name character varying 限制条件使用的列的名称。
constraint_catalog character varying 数据库名称。
constraint_schema character varying 限制条件的架构名称。
constraint_name character varying 限制条件的名称。

constraint_table_usage

此视图为限制条件使用的每个表都包含了一行。对于 FOREIGN KEY 限制条件,表信息是指 REFERENCES 子句中的表。对于唯一键或主键限制,此视图用于标识限制所属的表。此视图中不包含检查约束和非 null 约束。

列名 类型 说明
table_catalog character varying 数据库名称。
table_schema character varying 受限表的架构名称。
table_name character varying 某个限制条件所使用的表的名称。
constraint_catalog character varying 数据库名称。
constraint_schema character varying 包含相应限制条件的架构的名称。
constraint_name character varying 限制条件的名称。

database_options

此表列出了在数据库上设置的选项。

列名 类型 说明
catalog_name character varying 数据库名称。
schema_name character varying 架构的名称。对于 PostgreSQL 方言数据库,默认值为 public
option_name character varying 数据库选项的名称。这是 DDL 中 OPTIONS 子句内的 key 值。
option_type character varying 数据库选项的数据类型。
option_value character varying 数据库选项的值。

enabled_roles

此行过滤视图列出了已定义的数据库角色。具有数据库级 IAM 权限的主账号以及已获准访问 spanner_info_reader 系统角色或该角色成员的主账号可以查看所有数据库角色。所有其他主账号只能看到已直接或通过继承授予其访问权限的数据库角色。除 public 之外的所有系统角色也会显示在此视图中。

列名称 类型 说明
role_name character varying 角色的名称。
spanner_is_system character varying 如果角色是系统角色,则值为 YES。否则, NO

index_columns

此视图列出了索引中的列。

列名 类型 说明
table_catalog character varying 数据库名称。
table_schema character varying 包含索引的架构的名称。默认值为 public
table_name character varying 与索引关联的表的名称。
index_name character varying 索引的名称。具有 PRIMARY KEY 规范的表具有使用名称 PRIMARY_KEY 生成的伪索引条目。
index_type character varying 指数的类型。可能的值为 PRIMARY_KEYLOCALGLOBAL
column_name character varying 列的名称。
ordinal_position BIGINT 索引(或主键)中列的序号位置,从值 1 开始。对于非键列(例如,索引的 INCLUDE 子句中指定的列),此值为 NULL
column_ordering character varying 列的排序顺序。对于键列,值为 ASCDESC;对于非键列(例如,索引的 STORING 子句中指定的列),值为 NULL
is_nullable character varying 指明列是否可以为 Null 的字符串。根据 SQL 标准,字符串可以是 YESNO,但不能是布尔值。
spanner_type character varying 一个字符串,用于保存与 DDL 兼容的列类型。

indexes

此视图列出了架构中的索引。

列名 类型 说明
table_catalog character varying 数据库名称。
table_schema character varying 架构的名称。默认值为 public
table_name character varying 表的名称。
index_name character varying 索引的名称。使用 PRIMARY KEY 子句创建的表具有使用名称 PRIMARY_KEY 生成的伪索引条目,这可以标识主键的字段。
index_type character varying 索引的类型。这些值包括 PRIMARY_KEYLOCALGLOBAL
parent_table_name character varying 二级索引可以在父表中交错,如创建二级索引中所述。此列保存该父表的名称,如果索引未交错,则保留空字符串。
is_unique character varying 索引键是否必须是唯一的。根据 SQL 标准,字符串可以是 YESNO,但不能是布尔值。
is_null_filtered character varying 索引是否包含值为 NULL 的条目。根据 SQL 标准,字符串可以是 YESNO,但不能是布尔值。
index_state character varying 索引的当前状态。可能的值和它们所代表的状态如下:
  • NULL:索引类型为 PRIMARY_KEY
  • PREPARE:为新索引创建空表
  • WRITE_ONLY:回填新索引的数据
  • WRITE_ONLY_CLEANUP:清理新索引
  • WRITE_ONLY_VALIDATE_UNIQUE:检查新索引中数据的唯一性
  • READ_WRITE:正常索引操作
spanner_is_managed character varying 索引是否由 Spanner 管理。例如,外键的二级支持性索引由 Spanner 管理。根据 SQL 标准,字符串可以是 YESNO,但不能是布尔值。

information_schema_catalog_name

此表包含一行一列,其中包含数据库名称。

列名 类型 说明
catalog_name character varying 数据库名称。

key_column_usage

此视图用于标识当前数据库中受唯一键、主键或外键约束条件引用的所有列。如需了解 CHECK 限制条件列,请参阅 check_constraints 视图。

列名 类型 说明
constraint_catalog character varying 数据库名称。
constraint_schema character varying 限制条件的架构名称。默认值为 public
constraint_name character varying 限制条件的名称。
table_catalog character varying 数据库名称。
table_schema character varying 包含受限列的表的架构的名称。默认值为 public
table_name character varying 包含受相应限制条件限制的列的表的名称。
column_name character varying 受限列的名称。
ordinal_position BIGINT 限制条件的键内的列的序号位置,从值 1 开始。
position_in_unique_constraint BIGINT 对于 FOREIGN KEY,该唯一限制条件中的列的序号位置,从值 1 开始。对于其他限制条件类型,此列的值为 NULL

parameters

此经过行过滤的视图定义了每个变更数据流读取函数的实参。每一行都描述了一个更改流读取函数的实参。

具有数据库级 IAM 权限的主账号以及已获准访问 spanner_info_reader 系统角色或该角色成员的主账号可以查看此视图中的所有行。所有其他主账号只能看到以下变更数据流读取函数的参数:当前数据库角色、当前数据库角色所属的角色或 public 拥有 EXECUTE 精细访问权限控制权限的变更数据流读取函数。

列名 类型 说明
specific_catalog character varying 数据库名称。
specific_schema character varying 例程的架构名称。对于 PostgreSQL 方言数据库,默认值为 public
specific_name character varying 例程的名称。唯一标识例程,即使其名称被重载也是如此。
ordinal_position bigint 例程的实参列表中形参的序号位置,从值 1 开始。
parameter_mode character varying 未使用。始终为 NULL
is_result character varying 未使用。始终为 NULL
as_locator character varying 未使用。始终为 NULL
parameter_name character varying 参数的名称。
data_type character varying 形参的数据类型。该值是以下值之一:
  • 对于内置类型,为数据类型的名称。
  • 对于数组,值为 ARRAY
character_maximum_length bigint 未使用。始终为 NULL
character_octet_length bigint 未使用。值始终为 NULL
character_set_catalog character varying 未使用。值始终为 NULL
character_set_schema character varying 未使用。值始终为 NULL
character_set_name character varying 未使用。值始终为 NULL
collation_catalog character varying 未使用。值始终为 NULL
collation_schema character varying 未使用。值始终为 NULL
collation_name character varying 未使用。值始终为 NULL
numeric_precision bigint 未使用。值始终为 NULL
numeric_precision_radix bigint 未使用。值始终为 NULL
numeric_scale bigint 未使用。值始终为 NULL
datetime_precision bigint 未使用。值始终为 NULL
interval_type character varying 未使用。值始终为 NULL
interval_precision bigint 未使用。值始终为 NULL
udt_catalog character varying 未使用。值始终为 NULL
udt_schema character varying 未使用。值始终为 NULL
udt_name character varying 未使用。值始终为 NULL
scope_catalog character varying 未使用。值始终为 NULL
scope_schema character varying 未使用。值始终为 NULL
scope_name character varying 未使用。值始终为 NULL
maximum_cardinality bigint 未使用。值始终为 NULL
dtd_identifier character varying 未使用。值始终为 NULL
parameter_default character varying 未使用。值始终为 NULL

placements

此表列出了数据库中的展示位置。

列名 类型 说明
placement_name character varying 展示位置的名称。
is_default character varying 指明列是否可以为 Null 的字符串。根据 SQL 标准,字符串可以是 YESNO,但不能是布尔值。

placement-options

对于每个展示位置,此表列出了在 CREATE PLACEMENT 语句的 OPTIONS 子句中为展示位置设置的选项。

列名 类型 说明
placement_name character varying 展示位置的名称。
option_name character varying 展示位置选项的名称。option_name 的有效值包括:
  • instance_partition
  • default_leader
option_type character varying 展示位置选项的数据类型。
option_value character varying 展示位置选项的值。对于 instance_partition,这是实例分区的名称。对于 default_leader,它是默认主要区域的名称。

locality-group-options

对于每个位置组,下表列出了在 CREATE LOCALITY GROUP 语句的 OPTIONS 子句中为位置组设置的名称和选项。

列名 类型 说明
locality_group_name character varying 位置组的名称。
option_name character varying 位置组选项的名称。有效选项包括:
  • storage:定义位置信息组的存储类型。
  • ssd_to_hdd_spill_timespan:定义数据在移至 HDD 存储空间之前在 SSD 存储空间中存储的时间。
option_value character varying 位置组选项的值。对于 storage,此值可以是 ssdhdd。对于 ssd_to_hdd_spill_timespan,这是数据必须在 SSD 中存储的时间(在数据移至 HDD 存储空间之前)。例如,10d 为 10 天。您可以设置的最短时间为 1 小时。

referential_constraints

此视图包含一行有关每个 FOREIGN KEY 限制条件的信息。您只能看到您对引用表拥有写入权限的限制。此视图还会标识被外键用于强制执行限制条件和引用操作的被引用表上的 PRIMARY KEYUNIQUE 限制条件。

列名 类型 说明
constraint_catalog character varying 数据库名称。
constraint_schema character varying 包含外键限制条件的架构的名称。默认值为 public
constraint_name character varying 外键限制条件的名称。
unique_constraint_catalog character varying 数据库名称。
unique_constraint_schema character varying 包含外键约束条件所引用的唯一或主键约束条件的架构的名称。
unique_constraint_name character varying 外键约束所引用的唯一键约束或主键约束的名称。
match_option character varying 外键约束所使用的匹配方法。值始终为 NONE
update_rule character varying 外键限制条件的更新规则。此值始终为 NO ACTION
delete_rule character varying 外键约束的删除规则。此值为 CASCADENO ACTION
spanner_state character varying 外键的当前状态。在创建和回填外键的支持性索引之前,Spanner 不会开始强制执行限制条件。索引准备就绪后,Spanner 会在验证现有数据时开始对新事务强制执行限制条件。可能的值和它们所代表的状态如下:
  • BACKFILLING_INDEXES:正在回填索引。
  • VALIDATING_DATA:正在验证现有数据和新写入。
  • WAITING_FOR_COMMIT:外键批量操作已成功完成,或者不需要任何操作,但外键仍处于待处理状态。
  • COMMITTED:已提交架构更改。

role_change_stream_grants

此行过滤视图列出了授予任何数据库角色(包括 public)的所有变更数据流的 SELECT 权限。拥有数据库级 IAM 权限的主账号以及已获得 spanner_info_reader 系统角色或该角色成员的访问权限的主账号可以查看此视图中的所有行。所有其他主账号只能看到授予当前数据库角色以及当前数据库角色所属角色的变更数据流权限,但不包括 public

列名称 类型 说明
grantor character varying 未使用。始终为 NULL
grantee character varying 相应权限所授予的数据库角色的名称。
change_stream_catalog character varying 数据库名称。
change_stream_schema character varying 包含更改流的架构的名称。 对于 PostgreSQL 方言数据库,默认值为 public
change_stream_name character varying 变更数据流的名称。
privilege_type character varying 权限的类型(仅限 SELECT)。
is_grantable character varying 未使用。始终为 NO

role_column_grants

此行过滤视图列出了授予任何数据库角色的所有列的所有精细访问权限控制权限,包括 public。具有数据库级 IAM 权限的主账号以及已被授予 spanner_info_reader 系统角色或该角色成员访问权限的主账号可以查看此视图中的所有行。所有其他主账号只能查看授予当前数据库角色以及当前数据库角色所属角色的列权限,但不包括 public

该视图包含列从包含该列的表或视图继承的 SELECTINSERTUPDATE 权限。

列名称 类型 说明
grantor character varying 未使用。始终为 NULL
grantee character varying 相应权限所授予的数据库角色的名称。
table_catalog character varying 数据库名称。
table_schema character varying 包含表或视图的架构的名称。对于 PostgreSQL 方言数据库,默认值为 public
table_name character varying 包含相应列的表或视图的名称。
column_name character varying 列的名称。
privilege_type character varying 相应权限的类型(SELECTINSERTUPDATE)。
is_grantable character varying 未使用。始终为 NO

role_routine_grants

此行过滤视图列出了授予任何数据库角色(包括 public)的所有变更数据流读取函数的 EXECUTE 权限。拥有数据库级 IAM 权限的主账号以及已获得 spanner_info_reader 系统角色或该角色成员的访问权限的主账号可以查看此视图中的所有行。所有其他主账号只能查看授予当前数据库角色以及当前数据库角色所属角色的变更数据流读取函数的权限,但不包括 public

列名 类型 说明
grantor character varying 未使用。始终为 NULL
grantee character varying 获得相应权限的角色的名称。
specific_catalog character varying 数据库名称。
specific_schema character varying 例程的架构名称。对于 PostgreSQL 方言数据库,默认值为 public
specific_name character varying 例程的名称。唯一标识例程,即使其名称被重载也是如此。
routine_catalog character varying 数据库名称。
routine_schema character varying 例程的架构名称。对于 PostgreSQL 方言数据库,默认值为 public
routine_name character varying 例程的名称。(如果过载,可能会重复。)
privilege_type character varying 授予的权限类型。始终为 EXECUTE
is_grantable character varying 未使用。始终为 NO

role_table_grants

此行过滤视图列出了授予任何数据库角色(包括 public)的所有表和视图的所有精细访问权限控制权限。拥有数据库级 IAM 权限的主账号以及已获得 spanner_info_reader 系统角色或该角色成员的访问权限的主账号可以查看此视图中的所有行。所有其他主账号只能看到授予当前数据库角色以及当前数据库角色所属角色的表和视图权限,但不包括 public

列名称 类型 说明
grantor character varying 未使用。始终为 NULL
grantee character varying 相应权限所授予的数据库角色的名称。
table_catalog character varying 数据库名称。
table_schema character varying 包含表或视图的架构的名称。对于 PostgreSQL 方言数据库,默认值为 public
table_name character varying 表或视图的名称。
privilege_type character varying 相应权限的类型(SELECTINSERTUPDATEDELETE)。
is_grantable character varying 未使用。始终为 NO
with_hierarchy character varying 未使用。始终为 NULL

routine_options

此行过滤视图中的每一行对应每个已定义更改流读取函数的每个选项。

具有数据库级 IAM 权限的主账号以及已获准访问 spanner_info_reader 系统角色或该角色成员的主账号可以查看此视图中的所有行。所有其他主账号只能看到以下变更数据流读取函数的选项:当前数据库角色、当前数据库角色所属的角色或 public 拥有 EXECUTE 精细访问权限控制权限的变更数据流读取函数。

列名 类型 说明
specific_catalog character varying 数据库名称。
specific_schema character varying 例程的架构名称。对于 PostgreSQL 方言数据库,默认值为 public
specific_name character varying 例程的名称。唯一标识例程,即使其名称被重载也是如此。
option_name character varying 选项的名称。
option_type character varying 相应选项的数据类型。该值可以是以下任一值:
  • 对于内置类型,为数据类型的名称。
  • 对于数组,值为 ARRAY
option_value character varying 选项的值。

routine_privileges

此经过行过滤的视图会列出授予任何数据库角色(包括 public)的所有变更数据流读取函数的精细访问权限控制权限。拥有数据库级 IAM 权限的主账号以及已被授予 spanner_info_reader 系统角色或该角色成员访问权限的主账号可以查看此视图中的所有行。所有其他主账号只能看到授予当前数据库角色、当前数据库角色所属的角色或 public 的变更数据流读取函数权限。

列名 类型 说明
grantor character varying 未使用。始终为 NULL
grantee character varying 获得相应权限的角色的名称。
specific_catalog character varying 数据库名称。
specific_schema character varying 例程的架构名称。对于 PostgreSQL 方言数据库,默认值为 public
specific_name character varying 例程的名称。唯一标识例程,即使其名称被重载也是如此。
routine_catalog character varying 数据库名称。
routine_schema character varying 例程的架构名称。默认值为 public
routine_name character varying 例程的名称。(如果过载,可能会重复。)
privilege_type character varying 授予的权限类型。
is_grantable character varying 未使用。始终为 NO

routines

此行过滤视图列出了数据库的所有变更数据流读取函数。具有数据库级 IAM 权限的主账号以及已获准访问 spanner_info_reader 系统角色或该角色成员的主账号可以查看此视图中的所有行。所有其他主账号只能看到以下变更数据流读取函数:当前数据库角色、当前数据库角色所属的角色或 public 拥有 EXECUTE 精细访问权限控制权限的变更数据流读取函数。

列名 类型 说明
specific_catalog character varying 数据库名称。
specific_schema character varying 例程的架构名称。对于 PostgreSQL 方言数据库,默认值为 public
specific_name character varying 例程的名称。唯一标识例程,即使其名称被重载也是如此。
routine_catalog character varying 数据库名称。
routine_schema character varying 例程的架构名称。
routine_name character varying 例程的名称。(如果过载,可能会重复。)
routine_type character varying 例程的类型(FUNCTIONPROCEDURE)。始终为 FUNCTION
module_catalog character varying 未使用。值始终为 NULL
module_schema character varying 未使用。值始终为 NULL
module_name character varying 未使用。值始终为 NULL
udt_catalog character varying 未使用。值始终为 NULL
udt_schema character varying 未使用。值始终为 NULL
udt_name character varying 未使用。值始终为 NULL
data_type character varying 例程的返回类型。该值是以下值之一:
  • 对于内置类型,为数据类型的名称。
  • 对于数组,值为 ARRAY
character_maximum_length bigint 未使用。值始终为 NULL
character_octet_length bigint 未使用。值始终为 NULL
character_set_catalog character varying 未使用。值始终为 NULL
character_set_schema character varying 未使用。值始终为 NULL
character_set_name character varying 未使用。值始终为 NULL
collation_catalog character varying 未使用。值始终为 NULL
collation_schema character varying 未使用。值始终为 NULL
collation_name character varying 未使用。值始终为 NULL
numeric_precision bigint 未使用。值始终为 NULL
numeric_precision_radix bigint 未使用。值始终为 NULL
numeric_scale bigint 未使用。值始终为 NULL
datetime_precision bigint 未使用。值始终为 NULL
interval_type character varying 未使用。值始终为 NULL
interval_precision bigint 未使用。值始终为 NULL
type_udt_catalog character varying 未使用。值始终为 NULL
type_udt_schema character varying 未使用。值始终为 NULL
type_udt_name character varying 未使用。值始终为 NULL
scope_catalog character varying 未使用。值始终为 NULL
scope_schema character varying 未使用。值始终为 NULL
scope_name character varying 未使用。值始终为 NULL
maximum_cardinality bigint 未使用。值始终为 NULL
dtd_identifier character varying 未使用。值始终为 NULL
routine_body character varying 例程正文的类型(SQLEXTERNAL)。
routine_definition character varying routine_body SQL 的定义,否则为空。
external_name character varying 未使用。值始终为 NULL
external_language character varying 未使用。值始终为 NULL
parameter_style character varying 未使用。值始终为 NULL
is_deterministic character varying 未使用。值始终为 NULL
sql_data_access character varying 未使用。值始终为 NULL
is_null_call character varying 未使用。值始终为 NULL
sql_path character varying 未使用。值始终为 NULL
schema_level_routine character varying 未使用。值始终为 NULL
max_dynamic_result_sets character varying 未使用。值始终为 NULL
is_user_defined_cast character varying 未使用。值始终为 NULL
is_implicitly_invocable character varying 未使用。值始终为 NULL
security_type character varying 例程的安全类型。仅支持 INVOKER
to_sql_specific_catalog character varying 未使用。值始终为 NULL
to_sql_specific_schema character varying 未使用。值始终为 NULL
to_sql_specific_name character varying 未使用。值始终为 NULL
as_locator character varying 未使用。值始终为 NULL
created timestamp with time zone 未使用。值始终为 NULL
last_altered timestamp with time zone 未使用。值始终为 NULL
new_savepoint_level character varying 未使用。值始终为 NULL
is_udt_dependent character varying 未使用。值始终为 NULL
result_cast_from_data_type character varying 未使用。值始终为 NULL
result_cast_as_locator character varying 未使用。值始终为 NULL
result_cast_char_max_length bigint 未使用。值始终为 NULL
result_cast_char_octet_length bigint 未使用。值始终为 NULL
result_cast_char_set_catalog character varying 未使用。值始终为 NULL
result_cast_char_set_schema character varying 未使用。值始终为 NULL
result_cast_char_set_name character varying 未使用。值始终为 NULL
result_cast_collation_catalog character varying 未使用。值始终为 NULL
result_cast_collation_schema character varying 未使用。值始终为 NULL
result_cast_collation_name character varying 未使用。值始终为 NULL
result_cast_numeric_precision bigint 未使用。值始终为 NULL
result_cast_numeric_precision_radix bigint 未使用。值始终为 NULL
result_cast_numeric_scale bigint 未使用。值始终为 NULL
result_cast_datetime_precision bigint 未使用。值始终为 NULL
result_cast_interval_type character varying 未使用。值始终为 NULL
result_cast_interval_precision bigint 未使用。值始终为 NULL
result_cast_type_udt_catalog character varying 未使用。值始终为 NULL
result_cast_type_udt_schema character varying 未使用。值始终为 NULL
result_cast_type_udt_name character varying 未使用。值始终为 NULL
result_cast_scope_catalog character varying 未使用。值始终为 NULL
result_cast_scope_schema character varying 未使用。值始终为 NULL
result_cast_scope_name character varying 未使用。值始终为 NULL
result_cast_maximum_cardinality bigint 未使用。值始终为 NULL
result_cast_dtd_identifier character varying 未使用。值始终为 NULL

schemata

information_schema.schemata 视图中的每一行对应当前数据库中的一个架构。这些架构包括信息架构和一个名为 public 的默认架构。

列名 类型 说明
catalog_name character varying 数据库名称。
schema_name character varying 架构的名称。对于默认架构,此字段设置为 public;对于命名架构,此字段为非空。
schema_owner character varying 相应架构的所有者的名称。
default_character_set_catalog character varying 未使用。
default_character_set_schema character varying 未使用。
default_character_set_name character varying 未使用。
sql_path character varying 未使用。
effective_timestamp timestamp with timezone 相应架构中所有数据生效的时间戳。此属性仅用于默认架构。

sequences

information_schema.sequences 视图包含 sequences 元数据。

列名 类型 说明
sequence_catalog character varying 数据库名称。
sequence_schema character varying 序列的架构名称。对于 PostgreSQL 方言数据库,默认值为 public
sequence_name character varying 序列的名称。
data_type character varying 序列仅支持 int8
numeric_precision bigint 未使用。值始终为 `NULL`。
numeric_precision_radix bigint 未使用。值始终为 `NULL`。
numeric_scale bigint 未使用。值始终为 `NULL`。
start_value bigint 未使用。值始终为 `NULL`。
minimum_value bigint 未使用。值始终为 `NULL`。
maximum_value bigint 未使用。值始终为 `NULL`。
increment bigint 未使用。值始终为 `NULL`。
cycle_option character varying sequence 接受的唯一选项是 no
sequence_kind character varying 序列的类型。bit_reversed_positive 是唯一可接受的值。
counter_start_value bigint 序列计数器的起始值。
skip_range_min bigint 跳过范围内的最小值。如果未设置,则此值为 NULL
skip_range_max bigint 跳过范围内的最大值。如果未设置,则此值为 NULL

spanner_statistics

下表列出了可用的查询优化器统计信息软件包。

列名 类型 说明
catalog_name character varying 数据库名称。
schema_name character varying 架构的名称。默认的架构值为 public
package_name character varying 统计信息软件包的名称。
allow_gc character varying 统计信息软件包是否已从垃圾回收中排除。根据 SQL 标准,字符串可以是 YESNO,但不能是布尔值。此属性必须设置为 NO,然后才能通过提示或通过客户端 API 引用统计信息软件包。

table_constraints

此视图包含当前用户有权访问的表(SELECT 除外)的所有限制条件。

列名 类型 说明
constraint_catalog character varying 数据库名称。
constraint_schema character varying 包含相应限制条件的架构的名称。
constraint_name character varying 限制条件的名称。
table_catalog character varying 数据库名称。
table_schema character varying 包含与相应约束关联的表的架构的名称。
table_name character varying 表的名称。
constraint_type character varying 限制条件的类型。可能的
    值如下:
  • CHECK
  • FOREIGN KEY
  • PLACEMENT KEY
  • PRIMARY KEY
  • UNIQUE
is_deferrable character varying 值始终为 NO
initially_deferred character varying 值始终为 NO
enforced character varying 相应限制条件是否已强制执行。如果强制执行某项限制(在达到特定状态后),系统会在写入时和通过后台完整性验证器验证该限制。根据 SQL 标准,字符串可以是 YESNO,但不能是布尔值。

table_privileges

此行过滤视图列出了授予任何数据库角色(包括 public)的所有表和视图的所有精细访问权限控制权限。拥有数据库级 IAM 权限的主账号以及已获得 spanner_info_reader 系统角色或该角色成员的访问权限的主账号可以查看此视图中的所有行。所有其他正文只能看到授予当前数据库角色、当前数据库角色所属的角色或 public 的表和视图权限。

列名称 类型 说明
grantor character varying 未使用。始终为 NULL
grantee character varying 相应权限所授予的数据库角色的名称。
table_catalog character varying 数据库名称。
table_schema character varying 包含表或视图的架构的名称。 对于 PostgreSQL 方言数据库,默认值为 public
table_name character varying 表或视图的名称。
privilege_type character varying 相应权限的类型(SELECTINSERTUPDATEDELETE)。
is_grantable character varying 未使用。始终为 NO
that have_hierarchy character varying 未使用。始终为 NULL

tables

此行过滤视图列出了当前数据库中的所有表和视图。具有数据库级 IAM 权限的主账号以及已被授予 spanner_info_reader 系统角色或该角色成员访问权限的主账号可以查看所有表和视图。所有其他正文只能查看满足以下任一要求的表:

  • SELECTINSERTUPDATEDELETE 精细访问权限控制权限已授予给当前数据库角色、当前数据库角色所属的角色或 public
  • 系统会向当前数据库角色、当前数据库角色所属的角色或 public 授予针对任何表列的 SELECTINSERTUPDATE 权限。

列名 类型 说明
table_catalog character varying 数据库名称。
table_schema character varying 包含表或视图的架构的名称。
table_name character varying 表、视图或同义词的名称。
table_type character varying 表格类型。可能的值包括“BASE TABLE”“VIEW”或“SYNONYM”。
self_referencing_column_name character varying 未使用。
reference_generation character varying 未使用。
user_defined_type_catalog character varying 未使用。
user_defined_type_schema character varying 未使用。
user_defined_type_name character varying 未使用。
is_insertable_into character varying 未使用。
is_typed character varying 未使用。
commit_action character varying 未使用。
parent_table_name character varying 如果此表是交错表,则为父表的名称,否则为 NULL
on_delete_action character varying 对于交错表,此名称设置为 CASCADENO ACTION,否则设置为 NULL。如需了解详情,请参阅表语句
spanner_state character varying 表的当前创建状态。
如果涉及批量操作,则表在创建期间可能会经历多个状态,例如,在使用需要回填其被引用索引的外键创建表时。可能的状态包括:
  • ADDING_FOREIGN_KEY:添加表的外键
  • WAITING_FOR_COMMIT:完成架构更改
  • COMMITTED:创建表的架构更改已提交。在更改提交之前,您无法向表写入数据。
  • NULL:不是基表的表或视图。
interleave_type character varying 此表与其交错的表之间是否存在父子关系。可能的
    值如下:
  • IN:没有父子关系的 INTERLEAVE IN 表。无论父表行是否存在,此表中的行都可以存在。
  • IN PARENT:具有父子关系的 INTERLEAVE IN PARENT 表。此表中的行需要存在其父表行。
row_deletion_policy_expression character varying 包含定义 ROW DELETION POLICY 的表达式文本的字符串。

table_synonyms

此表列出了表的同义词信息。

列名 类型 说明
CATALOG STRING 包含相应表的目录的名称。
SCHEMA STRING 包含相应表的架构的名称。
TABLE_NAME STRING 表的名称。
SYNONYM_CATALOG STRING 同义词的目录名称。
SYNONYM_SCHEMA STRING 同义词的架构名称。
SYNONYM_TABLE_NAME STRING 同义词所对应的表的名称。

views

此行过滤视图列出了当前数据库中的所有视图。具有数据库级 IAM 权限的主账号以及已被授予 spanner_info_reader 系统角色或该角色成员访问权限的主账号可以查看所有视图。所有其他主账号只能查看以下视图:当前数据库角色、当前数据库角色所属的角色或 public 对这些视图具有 SELECT 精细访问权限控制权限。

列名 类型 说明
table_catalog character varying 数据库名称。
table_schema character varying 架构的名称。默认值为 public
table_name character varying 视图的名称。
view_definition character varying 定义视图的查询的 SQL 文本。
check_option character varying 未使用。
is_updatable character varying 未使用。
is_insertable_into character varying 未使用。
is_trigger_updatable character varying 未使用。
is_trigger_deletable character varying 未使用。
is_trigger_insertable_into character varying 未使用。
security_type character varying 视图的安全类型。INVOKERDEFINER

如需了解详情,请参阅关于视图

示例

返回有关用户架构中每个表的信息:

SELECT
  t.table_schema,
  t.table_catalog,
  t.table_name,
  t.parent_table_name
FROM
  information_schema.tables AS t
WHERE
  t.table_schema NOT IN ('pg_catalog', 'information_schema', 'SPANNER_SYS')
  AND t.table_type = 'BASE TABLE'
ORDER BY
  t.table_catalog,
  t.table_schema,
  t.table_name

返回 information_schema 中所有表和视图的名称(适用于 PostgreSQL 方言数据库):

SELECT table_name
FROM information_schema.tables
WHERE table_schema = "information_schema"

返回有关默认架构中用户表 my_table 中的列的信息:

SELECT
  t.ordinal_position,
  t.column_name,
  t.data_type,
  t.spanner_type,
  t.is_nullable
FROM
  information_schema.columns AS t
WHERE
  t.table_schema = 'public'
  AND
  t.table_name = 'my_table'
ORDER BY
  t.ordinal_position

返回有关当前数据库中默认架构内每个索引的信息: ```postgresql SELECT t.table_name, t.index_name, t.parent_table_name FROM information_schema.indexes AS t WHERE t.table_schema = 'public' AND t.index_type != 'PRIMARY_KEY' ORDER BY t.table_schema, t.table_name, t.index_name

返回默认架构中使用非默认选项的列:

SELECT
  t.table_name,
  t.column_name,
  t.option_type,
  t.option_value,
  t.option_name
FROM
  information_schema.column_options AS t
WHERE
  t.table_schema = 'public'
ORDER BY
  t.table_schema,
  t.table_name,
  t.column_name,
  t.option_name

返回当前与优化器相关的数据库选项:

SELECT
  s.option_name,
  s.option_value
FROM
  information_schema.database_options s
WHERE
  s.schema_name='public'
  AND s.option_name IN ('optimizer_version',
    'optimizer_statistics_package')

返回所有可用的统计信息软件包:

SELECT *
FROM information_schema.spanner_statistics;

后续步骤

  • 了解可用的内省工具以帮助您调查数据库问题。