2018-09-03 阅读笔记

2020-02-14 19:37栏目:龙竞技官网
TAG:

最近本风流才子重出江湖,不做朋友圈段子手,决定开始好好写文章了,大家好好看好好学吧!近半年来收集了一系列大厂技术 blog,断断续续在小本本上写了一些笔记,是时候整理一下了,争取日更。

9.5的常用的一些设置,自己mark一下防止丢失;参数用途的说明,不做说明,仅为自己记录
<pre>
max_connections = 3000
work_mem = 8MB
shared_buffers = 1GB
fsync = off
synchronous_commit = off
commit_delay = 500
commit_siblings = 25
checkpoint_completion_target = 0.9
autovacuum = on
bgwriter_delay=10ms
full_page_writes=off
wal_writer_delay=10ms
max_wal_size=32GB
hot_standby=on

本节简单介绍了PostgreSQL数据库的参数设置,包括参数的含义以及参数的推荐设置等。典型的,假设数据库主机OS为Linux 64bit,内存为8G,存储阵列使用RAID 5(带宽约为200MB/s,IOPS约为200),主机没有其他服务。

原文链接摘要:PostgreSQL 默认的配置并没有为应用做特殊的优化,然而有许多参数是有优化空间的,譬如:

wal_receiver_status_interval=1s

一、常规部分

listen_addresses

#PG默认监听本地连接,如需接受其他Client的连接请求,需修改为*listen_addresses = '*'

max_connections

#最大连接数,默认为100,根据业务应用情况和主机配置设置#由于PG使用多进程模式,如连接数大于一定数量时,会因为进程上下文的频繁切换导致性能降低#如需要支持数千个连接,可以考虑使用分库读写分离的方式,以及使用连接池组件(如PgBouncer)max_connections=256

查看当前连接数的SQL:

testdb=# SELECT sum(numbackends) FROM pg_stat_database; sum ----- 1
  1. shared_bufferPostgreSQL 有两级缓存,自己的缓存 shared_buffer 和内核缓存。为了在什么烂机器上都能跑,shared_buffer 的默认值设的很小。调节 shared_buffer 会非常有效。推荐值是系统内存的 25%

  2. wal_buffersWAL = write ahead log,预写式日志,From Wiki:

    在使用WAL的系统中,所有的修改在提交之前都要先写入log文件中。log文件中通常包括redo和undo信息。假设一个程序在执行某些操作的过程中机器掉电了。在重新启动时,程序可能需要知道当时执行的操作是成功了还是部分成功或者是失败了。如果使用了WAL,程序就可以检查log文件,并对突然掉电时计划执行的操作内容跟实际上执行的操作内容进行比较。在这个比较的基础上,程序就可以决定是撤销已做的操作还是继续完成已做的操作,或者是保持原样。

    在这些日志被写入磁盘之前有这个 buffer,如果并发连接很多,可以调大

  3. effective_cache_size给 PostgreSQL 一个 disk caching 的估计,如果实际能使用的其实很大,然而估计值很小,那么性能就会受损失

  4. work_mem可以用来 in memory sort 的内存大小,如果 query 经常有 in memory sort,可以优化

  5. maintenance_work_mem预留来 VACUUM, RESTORE, CREATE INDEX, ADD FOREIGN KEY,ALTER TABLE 这种事的内存,调大可以优化这些任务

  6. synchronous_commit2 中提到了 WAL,synchronous_commit 控制 commit 之前是否等所有的操作写进了 WAL,是一个性能上的取舍。

  7. checkpoint_timeout,checkpoint_completion_targetIssue 一个 checkpoint IO 代价很高,我们希望尽可能地 smooth,checkpoint_timeout 要尽量短,checkpoint_completion_target 如果我理解正确的话也要尽量短

hot_standby_feedback=on

二、内存相关

假设机器内存为N,则需满足以下要求:N > max_connections x work_mem + shared_buffers + temp_buffers + maintenance_work_mem + OS运行最小要求的内存

shared_buffers

#共享缓冲区,用于配置可用于Cache Data(包括Hot Data/Index等等)的内存大小#一般设置为主机内存的25%-40%shared_buffers=3G

effective_cache_size

#剔除操作系统本身和其他应用程序可用的内存后,期望操作系统和数据库本身可用于缓存数据的内存大小#该参数仅用于优化的estimate阶段,如果设置有误会影响优化器的判断,得出不合理的执行计划#比如在只有512M的主机上,设置该参数为4G,查询一张有索引的大表时,如果访问的索引大小<4G,那么执行计划有可能会使用该索引,但实际上主机内存并不支持容纳这么大的索引,导致实际执行SQL时出现性能问题;同样的,如果设置的过小,执行计划可能不会选择用索引.effective_cache_size=4G

work_mem

#每个Session执行排序和建立散列表等操作时可使用的内存大小,默认1M#如需执行较大/复杂的排序或连接操作,建议增大此参数#注意:示例中最大连接数为256,如此参数设置为4M,那么在满载情况下使用的内存为4Mx256=1Gwork_mem=2M

maintenance_work_mem

#VACUUM, CREATE INDEX, and ALTER TABLE ADD FOREIGN KEY等操作可使用的内存大小,默认64M#由于这类操作并发数不会很大,增大此参数相对较为安全,如希望提升这些操作的性能,可适当加大此参数maintenance_work_mem=256M

wal_buffers

#用于缓存WAL data,默认为-1(约为shared_buffers的1/32),最小为64KB,最大为WAL segment大小#由于WAL data在事务commit时写入到日志文件中,在典型的主机配置下,假设每次Buffer都全满,写入的延迟约为wal_buffers/200,在0.32ms至81.92ms之间wal_buffers=4M

原文链接优势:

random_page_cost=1.0

maintenance_work_mem=64MB
autovacuum_work_mem=64MB
archive_mode=off

三、性能相关

max_wal_size/min_wal_sizewal日志占用的最大值和最小值,默认最大为1G,最小为80M,用以替换先前的参数checkpoint_segments

checkpoint_segments**在参数在9.5+后已废弃**

#1.该参数定义了写了多少个WAL Segment执行一次checkpoint,默认为3#checkpoint最主要的功能是把缓存中脏数据写入到磁盘中(注意:这里的写是随机写,不是WAL的顺序写!)#频繁的checkpoint会影响数据库性能,在常规的场景下,使用默认值会极大的降低数据库性能#假设该参数值为n,那么粗略上来说,每间隔(n*16MB/200MB)秒就会执行一次checkpoint#2.该参数会影响Recover,数值越大,人出现问题Recover的时间可能越长#假设该参数值为n,那么极端情况下在产生n*16MB个WAL segment时出现宕机,下次启动时,粗略来说就需要n*16MB个WAL segment进行Recovercheckpoint_segments=32

checkpoint_timeout

#checkpoint超时时间,默认为5分钟,最大1d#在checkpoint_completion_target*checkpoint_timeout超时或者产生的WAL Segment超过checkpoint_segments时,执行checkpoint#增大此参数,会减少磁盘IO压力,但会延长Recover时间checkpoint_timeout=8min

checkpoint_completion_target

#指定checkpoint的完成"目标",默认值为0.5,取值区间为0.0-1.0#通过两个checkpoint间隔时间的百分比来衡量,也就是checkpoint_completion_target*checkpoint_timeoutcheckpoint_completion_target=0.9

random_page_cost

#随机读取Page的代价,以顺序读取为基准,默认值为4.0#该参数会影响优化器选择执行计划,随机读取数据一般发生在通过Index访问数据的时候#如数据存储在SSD这类随机读写友好的设备上,可以降低至2.0甚至更低random_page_cost=4.0
  1. 开发效率高,Debug 容易。和开发 web 一样,修改之后刷新即可见,不需要编译,Chrome 里 F12 即可调试
  2. 不需要太多 ios 知识,React 的知识可以迁移过来
  3. Flex box,一个新的 css module: 很好用

enable_nestloop=off

</pre>
9.6的并行查询参数,黑体标明,
官方说明:
<pre>
<b>Parallel query execution is not (yet) enabled by default. To allow it, set the new configuration parameter max_parallel_workers_per_gather to a value larger than zero. Additional control over use of parallelism is available through other new configuration parametersforce_parallel_mode, parallel_setup_cost, parallel_tuple_cost, and min_parallel_relation_size.
</b>
</pre>
<pre>
[root@gp-node6 queries]# psql
Password:
psql.bin (9.6.0)
Type "help" for help.

postgres=# show all;
name | setting | description
-------------------------------------+-------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------
allow_system_table_mods | off | Allows modifications of the structure of system tables.
application_name | psql.bin | Sets the application name to be reported in statistics and logs.
archive_command | (disabled) | Sets the shell command that will be called to archive a WAL file.
archive_mode | off | Allows archiving of WAL files using archive_command.
archive_timeout | 0 | Forces a switch to the next xlog file if a new file has not been started within N seconds.
array_nulls | on | Enable input of NULL elements in arrays.
authentication_timeout | 1min | Sets the maximum allowed time to complete client authentication.
autovacuum | on | Starts the autovacuum subprocess.
autovacuum_analyze_scale_factor | 0.1 | Number of tuple inserts, updates, or deletes prior to analyze as a fraction of reltuples.
autovacuum_analyze_threshold | 50 | Minimum number of tuple inserts, updates, or deletes prior to analyze.
autovacuum_freeze_max_age | 200000000 | Age at which to autovacuum a table to prevent transaction ID wraparound.
autovacuum_max_workers | 3 | Sets the maximum number of simultaneously running autovacuum worker processes.
龙电竞官网,autovacuum_multixact_freeze_max_age | 400000000 | Multixact age at which to autovacuum a table to prevent multixact wraparound.
autovacuum_naptime | 1min | Time to sleep between autovacuum runs.
autovacuum_vacuum_cost_delay | 20ms | Vacuum cost delay in milliseconds, for autovacuum.
autovacuum_vacuum_cost_limit | -1 | Vacuum cost amount available before napping, for autovacuum.
autovacuum_vacuum_scale_factor | 0.2 | Number of tuple updates or deletes prior to vacuum as a fraction of reltuples.
autovacuum_vacuum_threshold | 50 | Minimum number of tuple updates or deletes prior to vacuum.
autovacuum_work_mem | 256MB | Sets the maximum memory to be used by each autovacuum worker process.
backend_flush_after | 0 | Number of pages after which previously performed writes are flushed to disk.
backslash_quote | safe_encoding | Sets whether "'" is allowed in string literals.
bgwriter_delay | 200ms | Background writer sleep time between rounds.
bgwriter_flush_after | 512kB | Number of pages after which previously performed writes are flushed to disk.
bgwriter_lru_maxpages | 100 | Background writer maximum number of LRU pages to flush per round.
bgwriter_lru_multiplier | 2 | Multiple of the average buffer usage to free per round.
block_size | 8192 | Shows the size of a disk block.
bonjour | off | Enables advertising the server via Bonjour.
bonjour_name | | Sets the Bonjour service name.
bytea_output | hex | Sets the output format for bytea.
check_function_bodies | on | Check function bodies during CREATE FUNCTION.
checkpoint_completion_target | 0.5 | Time spent flushing dirty buffers during checkpoint, as fraction of checkpoint interval.
checkpoint_flush_after | 256kB | Number of pages after which previously performed writes are flushed to disk.
checkpoint_timeout | 5min | Sets the maximum time between automatic WAL checkpoints.
checkpoint_warning | 30s | Enables warnings if checkpoint segments are filled more frequently than this.
client_encoding | UTF8 | Sets the client's character set encoding.
client_min_messages | notice | Sets the message levels that are sent to the client.
cluster_name | | Sets the name of the cluster, which is included in the process title.
commit_delay | 0 | Sets the delay in microseconds between transaction commit and flushing WAL to disk.
commit_siblings | 5 | Sets the minimum concurrent open transactions before performing commit_delay.
config_file | /opt/PostgreSQL/9.6/data/postgresql.conf | Sets the server's main configuration file.
constraint_exclusion | partition | Enables the planner to use constraints to optimize queries.
cpu_index_tuple_cost | 0.005 | Sets the planner's estimate of the cost of processing each index entry during an index scan.
cpu_operator_cost | 0.0025 | Sets the planner's estimate of the cost of processing each operator or function call.
cpu_tuple_cost | 0.01 | Sets the planner's estimate of the cost of processing each tuple (row).
cursor_tuple_fraction | 0.1 | Sets the planner's estimate of the fraction of a cursor's rows that will be retrieved.
data_checksums | off | Shows whether data checksums are turned on for this cluster.
data_directory | /opt/PostgreSQL/9.6/data | Sets the server's data directory.
DateStyle | ISO, YMD | Sets the display format for date and time values.
db_user_namespace | off | Enables per-database user names.
deadlock_timeout | 1s | Sets the time to wait on a lock before checking for deadlock.
debug_assertions | off | Shows whether the running server has assertion checks enabled.
debug_pretty_print | on | Indents parse and plan tree displays.
debug_print_parse | off | Logs each query's parse tree.
debug_print_plan | off | Logs each query's execution plan.
debug_print_rewritten | off | Logs each query's rewritten parse tree.
default_statistics_target | 100 | Sets the default statistics target.
default_tablespace | | Sets the default tablespace to create tables and indexes in.
default_text_search_config | pg_catalog.simple | Sets default text search configuration.
default_transaction_deferrable | off | Sets the default deferrable status of new transactions.
default_transaction_isolation | read committed | Sets the transaction isolation level of each new transaction.
default_transaction_read_only | off | Sets the default read-only status of new transactions.
default_with_oids | off | Create new tables with OIDs by default.
dynamic_library_path | $libdir | Sets the path for dynamically loadable modules.
dynamic_shared_memory_type | posix | Selects the dynamic shared memory implementation used.
effective_cache_size | 4GB | Sets the planner's assumption about the size of the disk cache.
effective_io_concurrency | 1 | Number of simultaneous requests that can be handled efficiently by the disk subsystem.
enable_bitmapscan | on | Enables the planner's use of bitmap-scan plans.
enable_hashagg | on | Enables the planner's use of hashed aggregation plans.
enable_hashjoin | on | Enables the planner's use of hash join plans.
enable_indexonlyscan | on | Enables the planner's use of index-only-scan plans.
enable_indexscan | on | Enables the planner's use of index-scan plans.
enable_material | on | Enables the planner's use of materialization.
enable_mergejoin | on | Enables the planner's use of merge join plans.
enable_nestloop | on | Enables the planner's use of nested-loop join plans.
enable_seqscan | on | Enables the planner's use of sequential-scan plans.
enable_sort | on | Enables the planner's use of explicit sort steps.
enable_tidscan | on | Enables the planner's use of TID scan plans.
escape_string_warning | on | Warn about backslash escapes in ordinary string literals.
event_source | PostgreSQL | Sets the application name used to identify PostgreSQL messages in the event log.
exit_on_error | off | Terminate session on any error.
external_pid_file | | Writes the postmaster PID to the specified file.
extra_float_digits | 0 | Sets the number of digits displayed for floating-point values.
force_parallel_mode | off | Forces use of parallel query facilities.
from_collapse_limit | 8 | Sets the FROM-list size beyond which subqueries are not collapsed.
fsync | on | Forces synchronization of updates to disk.
full_page_writes | on | Writes full pages to WAL when first modified after a checkpoint.
geqo | on | Enables genetic query optimization.
geqo_effort | 5 | GEQO: effort is used to set the default for other GEQO parameters.
geqo_generations | 0 | GEQO: number of iterations of the algorithm.
geqo_pool_size | 0 | GEQO: number of individuals in the population.
geqo_seed | 0 | GEQO: seed for random path selection.
geqo_selection_bias | 2 | GEQO: selective pressure within the population.
geqo_threshold | 12 | Sets the threshold of FROM items beyond which GEQO is used.
gin_fuzzy_search_limit | 0 | Sets the maximum allowed result for exact search by GIN.
gin_pending_list_limit | 4MB | Sets the maximum size of the pending list for GIN index.
hba_file | /opt/PostgreSQL/9.6/data/pg_hba.conf | Sets the server's "hba" configuration file.
hot_standby | off | Allows connections and queries during recovery.
hot_standby_feedback | off | Allows feedback from a hot standby to the primary that will avoid query conflicts.
huge_pages | try | Use of huge pages on Linux.
ident_file | /opt/PostgreSQL/9.6/data/pg_ident.conf | Sets the server's "ident" configuration file.
idle_in_transaction_session_timeout | 0 | Sets the maximum allowed duration of any idling transaction.
ignore_checksum_failure | off | Continues processing after a checksum failure.
ignore_system_indexes | off | Disables reading from system indexes.
integer_datetimes | on | Datetimes are integer based.
IntervalStyle | postgres | Sets the display format for interval values.
join_collapse_limit | 8 | Sets the FROM-list size beyond which JOIN constructs are not flattened.
krb_caseins_users | off | Sets whether Kerberos and GSSAPI user names should be treated as case-insensitive.
krb_server_keyfile | FILE:/mnt/hgfs/pginstaller.pune/server/staging/linux-x64/etc/postgresql/krb5.keytab | Sets the location of the Kerberos server key file.
lc_collate | zh_CN.UTF-8 | Shows the collation order locale.
lc_ctype | zh_CN.UTF-8 | Shows the character classification and case conversion locale.
lc_messages | zh_CN.UTF-8 | Sets the language in which messages are displayed.
lc_monetary | zh_CN.UTF-8 | Sets the locale for formatting monetary amounts.
lc_numeric | zh_CN.UTF-8 | Sets the locale for formatting numbers.
lc_time | zh_CN.UTF-8 | Sets the locale for formatting date and time values.
listen_addresses | * | Sets the host name or IP address(es) to listen to.
lo_compat_privileges | off | Enables backward compatibility mode for privilege checks on large objects.
local_preload_libraries | | Lists unprivileged shared libraries to preload into each backend.
lock_timeout | 0 | Sets the maximum allowed duration of any wait for a lock.
log_autovacuum_min_duration | -1 | Sets the minimum execution time above which autovacuum actions will be logged.
log_checkpoints | off | Logs each checkpoint.
log_connections | off | Logs each successful connection.
log_destination | stderr | Sets the destination for server log output.
log_directory | pg_log | Sets the destination directory for log files.
log_disconnections | off | Logs end of a session, including duration.
log_duration | off | Logs the duration of each completed SQL statement.
log_error_verbosity | default | Sets the verbosity of logged messages.
log_executor_stats | off | Writes executor performance statistics to the server log.
log_file_mode | 0600 | Sets the file permissions for log files.
log_filename | postgresql-%Y-%m-%d_%H%M%S.log | Sets the file name pattern for log files.
log_hostname | off | Logs the host name in the connection logs.
log_line_prefix | %t | Controls information prefixed to each log line.
log_lock_waits | off | Logs long lock waits.
log_min_duration_statement | -1 | Sets the minimum execution time above which statements will be logged.
log_min_error_statement | error | Causes all statements generating error at or above this level to be logged.
log_min_messages | warning | Sets the message levels that are logged.
log_parser_stats | off | Writes parser performance statistics to the server log.
log_planner_stats | off | Writes planner performance statistics to the server log.
log_replication_commands | off | Logs each replication command.
log_rotation_age | 1d | Automatic log file rotation will occur after N minutes.
log_rotation_size | 10MB | Automatic log file rotation will occur after N kilobytes.
log_statement | none | Sets the type of statements logged.
log_statement_stats | off | Writes cumulative performance statistics to the server log.
log_temp_files | -1 | Log the use of temporary files larger than this number of kilobytes.
log_timezone | PRC | Sets the time zone to use in log messages.
log_truncate_on_rotation | off | Truncate existing log files of same name during log rotation.
logging_collector | on | Start a subprocess to capture stderr output and/or csvlogs into log files.
maintenance_work_mem | 512MB | Sets the maximum memory to be used for maintenance operations.
max_connections | 100 | Sets the maximum number of concurrent connections.
max_files_per_process | 1000 | Sets the maximum number of simultaneously open files for each server process.
max_function_args | 100 | Shows the maximum number of function arguments.
max_identifier_length | 63 | Shows the maximum identifier length.
max_index_keys | 32 | Shows the maximum number of index keys.
max_locks_per_transaction | 64 | Sets the maximum number of locks per transaction.
<b> max_parallel_workers_per_gather | 8 | Sets the maximum number of parallel processes per executor node.</b>
max_pred_locks_per_transaction | 64 | Sets the maximum number of predicate locks per transaction.
max_prepared_transactions | 0 | Sets the maximum number of simultaneously prepared transactions.
max_replication_slots | 0 | Sets the maximum number of simultaneously defined replication slots.
max_stack_depth | 2MB | Sets the maximum stack depth, in kilobytes.
max_standby_archive_delay | 30s | Sets the maximum delay before canceling queries when a hot standby server is processing archived WAL data.
max_standby_streaming_delay | 30s | Sets the maximum delay before canceling queries when a hot standby server is processing streamed WAL data.
max_wal_senders | 0 | Sets the maximum number of simultaneously running WAL sender processes.
max_wal_size | 1GB | Sets the WAL size that triggers a checkpoint.
<b> max_worker_processes | 8 | Maximum number of concurrent worker processes.</b>
min_parallel_relation_size | 8MB | Sets the minimum size of relations to be considered for parallel scan.
min_wal_size | 80MB | Sets the minimum size to shrink the WAL to.
old_snapshot_threshold | -1 | Time before a snapshot is too old to read pages changed after the snapshot was taken.
operator_precedence_warning | off | Emit a warning for constructs that changed meaning since PostgreSQL 9.4.
parallel_setup_cost | 1000 | Sets the planner's estimate of the cost of starting up worker processes for parallel query.
parallel_tuple_cost | 0.1 | Sets the planner's estimate of the cost of passing each tuple (row) from worker to master backend.
password_encryption | on | Encrypt passwords.
port | 5432 | Sets the TCP port the server listens on.
post_auth_delay | 0 | Waits N seconds on connection startup after authentication.
pre_auth_delay | 0 | Waits N seconds on connection startup before authentication.
quote_all_identifiers | off | When generating SQL fragments, quote all identifiers.
random_page_cost | 4 | Sets the planner's estimate of the cost of a nonsequentially fetched disk page.
replacement_sort_tuples | 150000 | Sets the maximum number of tuples to be sorted using replacement selection.
restart_after_crash | on | Reinitialize server after backend crash.
row_security | on | Enable row security.
search_path | "$user", public | Sets the schema search order for names that are not schema-qualified.
segment_size | 1GB | Shows the number of pages per disk file.
seq_page_cost | 1 | Sets the planner's estimate of the cost of a sequentially fetched disk page.
server_encoding | UTF8 | Sets the server (database) character set encoding.
server_version | 9.6.0 | Shows the server version.
server_version_num | 90600 | Shows the server version as an integer.
session_preload_libraries | | Lists shared libraries to preload into each backend.
session_replication_role | origin | Sets the session's behavior for triggers and rewrite rules.
shared_buffers | 16GB | Sets the number of shared memory buffers used by the server.
shared_preload_libraries | | Lists shared libraries to preload into server.
sql_inheritance | on | Causes subtables to be included by default in various commands.
ssl | off | Enables SSL connections.
ssl_ca_file | | Location of the SSL certificate authority file.
ssl_cert_file | server.crt | Location of the SSL server certificate file.
ssl_ciphers | HIGH:MEDIUM:+3DES:!aNULL | Sets the list of allowed SSL ciphers.
ssl_crl_file | | Location of the SSL certificate revocation list file.
ssl_ecdh_curve | prime256v1 | Sets the curve to use for ECDH.
ssl_key_file | server.key | Location of the SSL server private key file.
ssl_prefer_server_ciphers | on | Give priority to server ciphersuite order.
standard_conforming_strings | on | Causes '...' strings to treat backslashes literally.
statement_timeout | 0 | Sets the maximum allowed duration of any statement.
stats_temp_directory | pg_stat_tmp | Writes temporary statistics files to the specified directory.
superuser_reserved_connections | 3 | Sets the number of connection slots reserved for superusers.
synchronize_seqscans | on | Enable synchronized sequential scans.
synchronous_commit | on | Sets the current transaction's synchronization level.
synchronous_standby_names | | Number of synchronous standbys and list of names of potential synchronous ones.
syslog_facility | local0 | Sets the syslog "facility" to be used when syslog enabled.
syslog_ident | postgres | Sets the program name used to identify PostgreSQL messages in syslog.
syslog_sequence_numbers | on | Add sequence number to syslog messages to avoid duplicate suppression.
syslog_split_messages | on | Split messages sent to syslog by lines and to fit into 1024 bytes.
tcp_keepalives_count | 0 | Maximum number of TCP keepalive retransmits.
tcp_keepalives_idle | 0 | Time between issuing TCP keepalives.
tcp_keepalives_interval | 0 | Time between TCP keepalive retransmits.
temp_buffers | 8MB | Sets the maximum number of temporary buffers used by each session.
temp_file_limit | -1 | Limits the total size of all temporary files used by each process.
temp_tablespaces | | Sets the tablespace(s) to use for temporary tables and sort files.
TimeZone | PRC | Sets the time zone for displaying and interpreting time stamps.
timezone_abbreviations | Default | Selects a file of time zone abbreviations.
trace_notify | off | Generates debugging output for LISTEN and NOTIFY.
trace_recovery_messages | log | Enables logging of recovery-related debugging information.
trace_sort | off | Emit information about resource usage in sorting.
track_activities | on | Collects information about executing commands.
track_activity_query_size | 1024 | Sets the size reserved for pg_stat_activity.query, in bytes.
track_commit_timestamp | off | Collects transaction commit time.
track_counts | on | Collects statistics on database activity.
track_functions | none | Collects function-level statistics on database activity.
track_io_timing | off | Collects timing statistics for database I/O activity.
transaction_deferrable | off | Whether to defer a read-only serializable transaction until it can be executed with no possible serialization failures.
transaction_isolation | read committed | Sets the current transaction's isolation level.
transaction_read_only | off | Sets the current transaction's read-only status.
transform_null_equals | off | Treats "expr=NULL" as "expr IS NULL".
unix_socket_directories | /tmp | Sets the directories where Unix-domain sockets will be created.
unix_socket_group | | Sets the owning group of the Unix-domain socket.
unix_socket_permissions | 0777 | Sets the access permissions of the Unix-domain socket.
update_process_title | on | Updates the process title to show the active SQL command.
vacuum_cost_delay | 0 | Vacuum cost delay in milliseconds.
vacuum_cost_limit | 200 | Vacuum cost amount available before napping.
vacuum_cost_page_dirty | 20 | Vacuum cost for a page dirtied by vacuum.
vacuum_cost_page_hit | 1 | Vacuum cost for a page found in the buffer cache.
vacuum_cost_page_miss | 10 | Vacuum cost for a page not found in the buffer cache.
vacuum_defer_cleanup_age | 0 | Number of transactions by which VACUUM and HOT cleanup should be deferred, if any.
vacuum_freeze_min_age | 50000000 | Minimum age at which VACUUM should freeze a table row.
vacuum_freeze_table_age | 150000000 | Age at which VACUUM should scan whole table to freeze tuples.
vacuum_multixact_freeze_min_age | 5000000 | Minimum age at which VACUUM should freeze a MultiXactId in a table row.
vacuum_multixact_freeze_table_age | 150000000 | Multixact age at which VACUUM should scan whole table to freeze tuples.
wal_block_size | 8192 | Shows the block size in the write ahead log.
wal_buffers | 16MB | Sets the number of disk-page buffers in shared memory for WAL.
wal_compression | off | Compresses full-page writes written in WAL file.
wal_keep_segments | 0 | Sets the number of WAL files held for standby servers.
wal_level | minimal | Set the level of information written to the WAL.
wal_log_hints | off | Writes full pages to WAL when first modified after a checkpoint, even for a non-critical modifications.
wal_receiver_status_interval | 10s | Sets the maximum interval between WAL receiver status reports to the primary.
wal_receiver_timeout | 1min | Sets the maximum wait time to receive data from the primary.
wal_retrieve_retry_interval | 5s | Sets the time to wait before retrying to retrieve WAL after a failed attempt.
wal_segment_size | 16MB | Shows the number of pages per write ahead log segment.
wal_sender_timeout | 1min | Sets the maximum time to wait for WAL replication.
wal_sync_method | fdatasync | Selects the method used for forcing WAL updates to disk.
wal_writer_delay | 200ms | Time between WAL flushes performed in the WAL writer.
wal_writer_flush_after | 1MB | Amount of WAL written out by WAL writer triggering a flush.
work_mem | 32MB | Sets the maximum memory to be used for query workspaces.
xmlbinary | base64 | Sets how binary values are to be encoded in XML.
xmloption | content | Sets whether XML data in implicit parsing and serialization operations is to be considered as documents or content fragments.
zero_damaged_pages | off | Continues processing past damaged page headers.
(261 rows)

</pre>

四、运维相关

autovacuum

#是否启动自动vacuum,默认为on,常规情况下设置为on#vacuum的详细解析请参见先前章节,此处不再累述autovacuum=on

log_XX

#log_destination:日志类型,包括stderr, csvlog, syslog, eventlog#建议设置为csvloglog_destination='csvlog'#logging_collector:如log_destination配置为csvlog,则该参数要求配置为onlogging_collector=on#log_directory:日志存储路径,可使用相对路径,在$PGDATA目录下log_directory='pg_log'#log_rotation_age:每个多长时间产生一个日志,如设置为1d,则每隔一天产生一个日志文件 #logging_collector=on时生效log_rotation_age=1d#log_rotation_size:单个文件的最大大小,超过此值,重新生成日志文件#logging_collector=on时生效log_rotation_size=16MB#log_min_duration_statement:记录执行时长>此值定义的SQL语句log_min_duration_statement=1s

劣势:

五、谨慎使用

synchronous_commit

#是否等待WAL数据写入到磁盘后才返回成功,可选的值为on, remote_apply, remote_write, local, off,默认为on#synchronous_commit设置为off,可能会导致虽然成功但实际上没有持久化的事务synchronous_commit=on

commit_delay/commit_siblings

#commit_delay:事务提交后,日志写到wal_buffer至wal_buffer中的内容写入磁盘的时间间隔#commit_siblings:触发commit_delay等待的并发事务数,如并发事务数<该值,则commit_delay无用#这两个参数用于提升在高并发非只读事务的情况下的性能,可以让buffer一次可以刷出较多的事务(Bulk Flush的效果)#但同样的,如果出现极端情况,buffer来不及持久化的时候出现崩溃,将会导致数据丢失commit_delay=0commit_siblings=5

fsync

#设置为on时,日志缓冲区刷盘时确认已经写入磁盘才会返回;#设置为off时,由OS负责调度,能更好利用OS的缓存机制,提高IO性能。#利用异步写入的机制提升性能,但同样存在数据丢失的风险fsync=on

版权声明:本文由龙竞技官网发布于龙竞技官网,转载请注明出处:2018-09-03 阅读笔记