PostGreSQL 之服务器配置

既然使用了PostGreSQL,仅仅知道写常规的SQL语句啦,视图啦,触发器啦等等,毕竟是主流数据库,因此这些和其余数据库系统基本上差很少,就连语法都几乎同样,不一样的就属整个系统的架构和系统配置不一样啦,这边不谈架构,如今的水平也无法谈,仍是从使用的角度来看,谈谈经常使用的系统配置相关技术吧。sql

这边主要针对四部分来具体说说,服务器进程的启动和关闭、服务器基本参数相关配置、系统内存优化相关配置、常见问题参数举例。数据库

1、服务器进程的启动和关闭

下面是pg_ctl命令的使用方法和经常使用选项,须要指出的是,该命令是postgres命令的封装体,所以在使用上比直接使用postgres更加方便。 安全

pg_ctl init[db] [-D DATADIR] [-s] [-o "OPTIONS"] pg_ctl start [-w] [-t SECS] [-D DATADIR] [-s] [-l FILENAME] [-o "OPTIONS"] pg_ctl stop [-W] [-t SECS] [-D DATADIR] [-s] [-m SHUTDOWN-MODE] pg_ctl restart [-w] [-t SECS] [-D DATADIR] [-s] [-m SHUTDOWN-MODE] pg_ctl reload [-D DATADIR] [-s] pg_ctl status [-D DATADIR] pg_ctl promote [-D DATADIR] [-s]

这里只是给出最为经常使用的使用方式,即数据库服务器的正常启动和关闭。 服务器

start表示启动postgres服务器进程。
-D指定数据库服务器的初始目录的存放路径。
-l指定数据库服务器进程的日志文件 markdown

/> pg_ctl -w start -D /opt/PostgreSQL/9.4/data -l /opt/PostgreSQL/9.4/data/pg_log/startup.log

stop表示中止postgres服务器进程
-m fast在关闭系统时,使用fast的关闭模式。 架构

/> pg_ctl stop -m fast -w -D /opt/PostgreSQL/9.4/data

2、服务器基本参数相关配置

在PostgreSQL中,全部配置参数名都是大小写不敏感的。每一个参数均可以接受四种类型的值,它们分别是布尔、整数、浮点数和字符串。其中布尔值能够是ON、OFF、TRUE、FALSE、YES、NO、1和0。包含这些参数的配置文件是postgresql.conf,该文件一般存放在initdb初始化的数据(data)目录下,见以下配置片断: post

log_connections = yes 
log_destination = 'syslog' 
search_path = '$user, public' 

井号(#)开始的行为注释行,若是配置值中包含数字,则须要用单引号括起。若是参数值自己包含单引号,咱们能够写两个单引号(推荐方法)或用反斜扛包围。
这里须要注意的是,并不是全部配置参数均可以在服务器运行时执行动态修改,有些参数在修改后,只能等到服务器从新启动后才能生效。
PostgreSQL还提供了另一种修改配置参数的方法,即在命令行上直接执行修改命令,如: 性能

/> postgres -c log_connections=yes -c log_destination='syslog'

若是此时命令行设置的参数和配置文件中的参数相互冲突,那么命令行中给出的参数将覆盖配置文件中已有的参数值。除此以外,咱们还能够经过ALTER DATABASE和ALTER USER等PostgreSQL的数据定义命令来分别修改指定数据库或指定用户的配置信息。其中针对数据库的设置将覆盖任何从postgres命令行或者配置文件从给出的设置,而后又会被针对用户的设置覆盖,最后又都会被每会话的选项覆盖。下面是当服务器配置出现冲突时,PostgreSQL服务器将会采用哪一种方式的优先级,如:
1). 基于会话的配置;
2). 基于用户的配置;
3). 基于数据库的配置;
4). postgres命令行指定的配置;
5). 配置文件postgresql.conf中给出的配置。 学习

最后须要说明的是,有些设置能够经过PostgreSQL的set命令进行设置,如在psql中咱们能够输入: 优化

SET ENABLE_SEQSCAN TO OFF;

也能够经过show命令来显示指定配置的当前值,如:

SHOW ENABLE_SEQSCAN;

与此同时,咱们也能够手工查询pg_settings系统表的方式来检索感兴趣的系统参数。

3、系统内存优化相关配置

一、shared_buffers(integer)

设置数据库服务器可使用的共享内存数量。缺省状况下能够设置为32MB,可是不要少于128KB。由于该值设置的越高对系统的性能越有好处。该配置参数只能在数据库启动时设置。此时,若是你有一台专用的数据库服务器,其内存为1G或者更多,那么咱们推荐将该值设置为系统内存的25%

二、work_mem(integer)

PostgreSQL在执行排序操做时,会根据work_mem的大小决定是否将一个大的结果集拆分为几个小的和work_mem差很少大小的临时文件。显然拆分的结果是下降了排序的速度。所以增长work_mem有助于提升排序的速度。然而须要指出的是,若是系统中同时存在多个排序操做,那么每一个操做在排序时使用的内存数量均为work_mem,所以在咱们设置该值时须要注意这一问题

三、maintence_work_mem(integer)

指定在维护性操做中使用的最大内存数,如VACUUM、CREATE INDEX和ALTER TABLE ADD FOREIGN KEY等,
该配置的缺省值为16MB。由于每一个会话在同一时刻只能执行一个该操做,因此使用的频率不高,可是这些指令每每消耗较多的系统资源,所以应该尽快让这些指令快速执行完毕

4、常见问题参数举例

在使用PostGreSQL进行团队项目开发时,确定会遇到相似远程访问数据、数据库连接限制这样的需求,固然PostGreSQL自己确定不会默认开启这些功能的,因此须要手动调整参数。

一、开启远程访问数据库权限须要作以下操做

pg_hba.conf 文件中:

# IPv4 local connections: 
host    all             all             127.0.0.1/32            md5  
host    all             all             0.0.0.0/0            md5

第一行为指定IP指定,第二行为全部IP,通常状况下是不开启全部IP权限的,由于安全。

postgresql.conf 文件中:

listen_addresses = '*'      # what IP address(es) to listen on;

默认是‘*’ 监听全部来源。

二、修改服务器链接限制须要作以下操做

postgresql.conf 文件中:

max_connection=1000 

1000即为最大客户端链接数。

以上就是经常使用的一些系统配置,固然还有好多好多,这么大的一个数据库系统不可能就这一点点,以上只是列出经常使用配置,之后确定会遇到其余各类配置,慢慢学习进步中。。。

相关文章
相关标签/搜索