配置数据库标志

本页面介绍如何为 Cloud SQL 配置数据库标志,并列出了可以为实例设置的标志。您可以将数据库标志用于许多操作,包括调整 PostgreSQL 参数、调整选项以及配置和优化实例。

在某些情况下,设置一个标志时,可能需要设置另一个标志才能完全启用所需功能。

当您设置、移除或修改数据库实例的标志时,该数据库可能会重启。除非您主动移除,否则实例的此标志值会一直保留。如果实例是副本的来源,则副本也会重启以与实例的当前配置保持一致。

配置数据库标志

设置数据库标志

控制台

  1. Google Cloud Console 中,创建新的 Cloud Console 项目,或者选择项目名称以打开现有项目。
  2. 打开实例,然后点击修改
  3. 向下滚动至标志部分。
  4. 要在实例上设置先前未设置的标志,请点击添加一项,从下拉菜单中选择该标志,然后设置其值。
  5. 点击保存以保存更改。
  6. 在“概览”页的标志下确认更改。

gcloud

修改实例:

gcloud sql instances patch [INSTANCE_NAME] --database-flags [FLAG1=VALUE1,FLAG2=VALUE2]

此命令将覆盖之前设置的所有数据库标志。如需保留这些标志以及添加新标志,请为您要在实例上设置的所有标志添加值;任何未明确添加的标志都会设置为默认值。对于不包含值的标志,用后跟等号(“=”)标明该标志名称。

REST

设置现有数据库的标志:

在使用下面的任何请求数据之前,请先进行以下替换:

  • project-id:项目 ID
  • instance-id:实例 ID

HTTP 方法和网址:

PATCH https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

请求 JSON 正文:

{
  "settings":
  {
    "databaseFlags":
    [
      {
        "name": "flag_name",
        "value": "flag_value"
      }
    ]
  }
}

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

如果数据库存在已配置的现有标志,请修改先前的命令,将其包含在内。PATCH 命令会使用请求中指定的标志覆盖现有标志。

将所有标志恢复为其默认值

控制台

  1. Google Cloud Console 中,创建新的 Cloud Console 项目,或者选择项目名称以打开现有项目。
  2. 打开实例,然后点击修改
  3. 打开数据库标志部分。
  4. 点击显示的所有标志旁的 X
  5. 点击保存以保存更改。

gcloud

将实例上的所有标志恢复为其默认值:

gcloud sql instances patch [INSTANCE_NAME] --clear-database-flags

系统会提示您确认实例将重启。

REST

清除现有实例的所有标志:

在使用下面的任何请求数据之前,请先进行以下替换:

  • project-id:项目 ID
  • instance-id:实例 ID

HTTP 方法和网址:

PATCH https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

请求 JSON 正文:

{
  "settings":
  {
    "databaseFlags": []
  }
}

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

查看数据库标志的当前值

如需查看 PostgreSQL 设置的所有当前值,请使用 psql 客户端登录到您的实例,然后输入以下语句:

 SELECT name, setting FROM pg_settings;

请注意,您只能更改受支持标志的值(如下所列)。

确定已为实例设置的数据库标志

查看已为 Cloud SQL 实例设置的标志:

控制台

  1. Google Cloud Console 中,创建新的 Cloud Console 项目,或者选择项目名称以打开现有项目。
  2. 选择实例,打开其实例概览页面。

    数据库标志部分列出了已设置的数据库标志。

gcloud

获取实例状态:

gcloud sql instances describe [INSTANCE_NAME]

在输出中,数据库标志作为 databaseFlags 集合列在 settings 下。要详细了解输出中标志的表示法,请参阅实例资源表示法

REST

列出实例的已配置标志:

在使用下面的任何请求数据之前,请先进行以下替换:

  • project-id:项目 ID
  • instance-id:实例 ID

HTTP 方法和网址:

GET https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

在输出中,查找 databaseFlags 字段。

支持的标志

对于给定标志,Cloud SQL 支持的范围可能与对应的 PostgreSQL 参数或选项有所不同。

A | C | D | E | F | G | H | I | J | L | M | O | P | R | S | T | V | W

Cloud SQL 标志 类型
可接受值及备注
是否需要
重启?
是否为 Beta 版?
autovacuum boolean
on | off
autovacuum_analyze_scale_factor float
0 ... 100
autovacuum_analyze_threshold integer
0 ... 2147483647
autovacuum_freeze_max_age integer
100000 ... 2000000000
autovacuum_max_workers integer
1 ... varies (see note)

autovacuum_multixact_freeze_max_age integer
10000 ... 2000000000
autovacuum_naptime integer
1 ... 2147483 s
autovacuum_vacuum_cost_delay integer
0 ... 100 ms,或者为 -1(使用 vacuum_cost_delay 值)
autovacuum_vacuum_cost_limit integer
0 ... 10000,或者为 -1(使用 vacuum_cost_limit 值)
autovacuum_vacuum_scale_factor float
0 ... 100
autovacuum_vacuum_threshold integer
0 ... 2147483647
autovacuum_work_mem integer
0 ... 2147483647 KB,或者为 -1(使用 maintenance_work_mem 值)
checkpoint_completion_target float
0.0 ... 1.0
checkpoint_timeout integer
30 ... 86400 s
checkpoint_warning integer
0 ... 2147483647 s
cloudsql.enable_pgaudit boolean
on | off
cloudsql.iam_authentication boolean
on | off
默认:off
commit_delay integer
0 ... 100000
commit_siblings integer
0 ... 1000
constraint_exclusion enumeration
partition | on | off
cpu_index_tuple_cost float
0.0 ... inf
cpu_operator_cost float
0.0 ... inf
cpu_tuple_cost float
0.0 ... inf
cursor_tuple_fraction float
0.0 ... 1.0
deadlock_timeout integer
1 ... 2147483647 ms
default_statistics_target integer
1 ... 10000
default_tablespace string
default_transaction_deferrable boolean
on | off
default_transaction_isolation enumeration
serializable | 'repeatable read' | 'read committed' | 'read uncommitted'
enable_bitmapscan boolean
on | off
enable_hashagg boolean
on | off
enable_hashjoin boolean
on | off
enable_indexonlyscan boolean
on | off
enable_indexscan boolean
on | off
enable_material boolean
on | off
enable_mergejoin boolean
on | off
enable_nestloop boolean
on | off
enable_seqscan boolean
on | off
enable_sort boolean
on | off
enable_tidscan boolean
on | off
force_parallel_mode enumeration
off | on | regress
from_collapse_limit integer
1 ... 2147483647
geqo boolean
on | off
geqo_effort integer
1 ... 10
geqo_generations integer
0 ... 2147483647
geqo_pool_size integer
0 ... 2147483647
geqo_seed float
0.0 ... 1.0
geqo_selection_bias float
1.5 ... 2.0
geqo_threshold integer
2 ... 2147483647
gin_fuzzy_search_limit integer
0 ... 2147483647
gin_pending_list_limit integer
64 ... 2147483647 KB
hot_standby_feedback boolean
on | off
idle_in_transaction_session_timeout integer
0 ... 2147483647 ms
join_collapse_limit integer
1 ... 2147483647
lock_timeout integer
0 ... 2147483647 ms
log_autovacuum_min_duration integer
0 ... 2147483647 ms,或者为 -1(停用)
log_checkpoints boolean
on | off
log_connections boolean
on | off
log_disconnections boolean
on | off
log_duration boolean
on | off
log_error_verbosity enumeration
terse | default | verbose
log_executor_stats boolean
on | off
log_hostname boolean
on | off
log_lock_waits boolean
on | off
log_min_duration_statement integer
-1 ... 2147483647 ms
log_min_error_statement enumeration
debug5 | debug4 | debug3 | debug2 | debug1 | info | notice | warning | error | log | fatal | panic
log_min_messages enumeration
debug5 | debug4 | debug3 | debug2 | debug1 | info | notice | warning | error | log | fatal | panic
log_parser_stats boolean
on | off
log_planner_stats boolean
on | off
log_replication_commands boolean
on | off
log_statement enumeration
none | ddl | mod | all
设置为 mod 可记录所有数据定义语言 (DDL) 语句,以及数据修改语句,例如 INSERTUPDATEDELETETRUNCATE
log_statement_stats boolean
on | off
不能与 log_parser_statslog_planner_statslog_executor_stats 一同启用。
log_temp_files integer
0 ... 2147483647 KB,或者为 -1(停用)
maintenance_work_mem integer
1024 ... 2147483647 KB
max_connections integer
14 ... varies (see note)

副本上的值必须大于等于主数据库上的值。如果副本的值低于主数据库上的新值,或者副本尚未更改默认值,则对主数据库的更改将传播到这些副本。

max_locks_per_transaction integer
10 ... 2147483647

副本上的值必须大于等于主数据库上的值。如果副本的值低于主数据库上的新值,或者副本尚未更改默认值,则对主数据库的更改将传播到这些副本。

max_prepared_transactions integer
0 ... 262143

副本上的值必须大于等于主数据库上的值。如果副本的值低于主数据库上的新值,或者副本尚未更改默认值,则对主数据库的更改将传播到这些副本。

max_standby_archive_delay integer
0 ... 2147483647 ms,或者为 -1(永远等待)
max_standby_streaming_delay integer
0 ... 2147483647 ms,或者为 -1(永远等待)
max_wal_size integer
2 ... 2147483647

对于 Postgres 10、11 和 12,单位是 1 MB。对于版本 9.6,单位是 16MB(WAL 文件大小)。

min_parallel_relation_size integer
0 ... 715827882
单位是 8 KB
old_snapshot_threshold integer
0 ... 86400 min,或者为 -1(停用)
parallel_setup_cost float
0.0 ... inf
parallel_tuple_cost float
0.0 ... inf
pg_stat_statements.max integer
100 ... 2147483647
pg_stat_statements.save boolean
on | off
pg_stat_statements.track enumeration
none | top | all
pg_stat_statements.track_utility boolean
on | off
random_page_cost float
0.0 ... inf
replacement_sort_tuples integer
0 ... 2147483647
ssl_max_protocol_version enumeration
Postgres 12:设置要使用的最高 SSL/TLS 协议版本。有效值与 ssl_min_protocol_version 相同,并添加了允许指定任何协议版本的空字符串。
ssl_min_protocol_version enumeration
Postgres 12:设置要使用的最低 SSL/TLS 协议版本。当前有效值包括:TLSv1TLSv1.1TLSv1.2TLSv1.3

默认为 TLSv1

standard_conforming_strings boolean
on | off
synchronize_seqscans boolean
on | off
temp_buffers integer
100 ... 1073741823
单位是 8 KB
temp_file_limit integer
1048576 ... 2147483647 KB
trace_notify boolean
on | off
trace_recovery_messages enumeration
debug5 | debug4 | debug3 | debug2 | debug1 | log | notice | warning | error
trace_sort boolean
on | off
track_activities boolean
on | off
track_activity_query_size integer
100 ... 102400
track_commit_timestamp boolean
on | off
track_counts boolean
on | off
track_functions enumeration
none | pl | all
track_io_timing boolean
on | off
vacuum_cost_delay integer
0 ... 100 ms
vacuum_cost_limit integer
1 ... 10000
vacuum_freeze_min_age integer
0 ... 1000000000
vacuum_freeze_table_age integer
0 ... 2000000000
vacuum_multixact_freeze_min_age integer
0 ... 1000000000
vacuum_multixact_freeze_table_age integer
0 ... 2000000000
work_mem integer
64 ... 2147483647 KB

问题排查

点击表中的链接可查看详细信息:

针对此问题… 可能的原因… 请尝试以下操作…
时区未设置标志 不支持时区标志。 一些解决方法

时区未设置标志

Postgres 不支持时区标志根据用户需求调整时区。

可能的问题

不支持时区标志。

可以尝试的操作

您可以设置每个会话的时区,但是当您注销时,该时区将过期。更好的解决方案是连接到数据库,并将每个用户或每个数据库的数据库时区设置为所需的时区:

ALTER DATABASE dbname SET TIMEZONE TO 'timezone';
ALTER USER username SET TIMEZONE TO 'timezone';

即使在会话关闭(类似于 .conf 配置)后,这些设置也会保留。

后续步骤