PostGreSQL 之服务器配置

PostGreSQL 之服务器配置,第1张

概述既然使用了PostGreSQL,仅仅知道写常规的SQL语句啦,视图啦,触发器啦等等,毕竟是主流数据库,所以这些和其他数据库系统基本上差不多,就连语法都几乎一样,不同的就属整个系统的架构和系统配置不同啦,这边不谈架构,现在的水平也没法谈,还是从使用的角度来看,谈谈常用的系统配置相关技术吧。 这边主要针对四部分来具体说说,服务器进程的启动和关闭、服务器基本参数相关配置、系统内存优化相关配置、常见问题参

既然使用了PostGresql,仅仅知道写常规的SQL语句啦,视图啦,触发器啦等等,毕竟是主流数据库,所以这些和其他数据库系统基本上差不多,就连语法都几乎一样,不同的就属整个系统的架构和系统配置不同啦,这边不谈架构,现在的水平也没法谈,还是从使用的角度来看,谈谈常用的系统配置相关技术吧。

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

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

下面是pg_ctl命令的使用方法和常用选项,需要指出的是,该命令是postgres命令的封装体,因此在使用上比直接使用postgres更加方便。

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

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

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

@H_403_10@/@H_403_10@> pg_ctl @H_403_10@-w start @H_403_10@-D /opt/Postgresql/@H_403_10@9.4/@H_403_10@data @H_403_10@-l /opt/Postgresql/@H_403_10@9.4/@H_403_10@data/pg_log/startup@H_403_10@.@H_403_10@log

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

@H_403_10@/@H_403_10@> pg_ctl stop @H_403_10@-m fast @H_403_10@-w @H_403_10@-D /opt/Postgresql/@H_403_10@9.4/@H_403_10@data
二、服务器基本参数相关配置

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

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

井号(#)开始的行为注释行,如果配置值中包含数字,则需要用单引号括起。如果参数值本身包含单引号,我们可以写两个单引号(推荐方法)或用反斜扛包围。
这里需要注意的是,并非所有配置参数都可以在服务器运行时执行动态修改,有些参数在修改后,只能等到服务器重新启动后才能生效。
Postgresql还提供了另外一种修改配置参数的方法,即在命令行上直接执行修改命令,如:

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

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

最后需要说明的是,有些设置可以通过Postgresql的set命令进行设置,如在psql中我们可以输入:

@H_403_10@@H_403_10@SET ENABLE_SEQSCAN @H_403_10@TO OFF;

也可以通过show命令来显示指定配置的当前值,如:

@H_403_10@@H_403_10@SHOW ENABLE_SEQSCAN;

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

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

1、shared_buffers(integer)

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

2、work_mem(integer)

Postgresql在执行排序 *** 作时,会根据work_mem的大小决定是否将一个大的结果集拆分为几个小的和work_mem差不多大小的临时文件。显然拆分的结果是降低了排序的速度。因此增加work_mem有助于提高排序的速度。然而需要指出的是,如果系统中同时存在多个排序 *** 作,那么每个 *** 作在排序时使用的内存数量均为work_mem,因此在我们设置该值时需要注意这一问题

3、maintence_work_mem(integer)

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

四、常见问题参数举例

在使用PostGresql进行团队项目开发时,肯定会遇到类似远程访问数据、数据库链接限制这样的需求,当然PostGresql本身肯定不会默认开启这些功能的,所以需要手动调整参数。

1、开启远程访问数据库权限需要做如下 *** 作

pg_hba.conf 文件中:

@H_403_10@# IPv4 local connections: host    @H_403_10@all             @H_403_10@all             @H_403_10@127.0@H_403_10@.0@H_403_10@.1/@H_403_10@32            md5  host    @H_403_10@all             @H_403_10@all             @H_403_10@0.0@H_403_10@.0@H_403_10@.0/@H_403_10@0            md5

第一行为指定IP指定,第二行为所有IP,一般情况下是不开启所有IP权限的,因为安全。

postgresql.conf 文件中:

Listen_addresses = @H_403_10@'*'      # what IP address(es) @H_403_10@to Listen @H_403_10@on;

默认是‘*’ 监听所有来源。

2、修改服务器连接限制需要做如下 *** 作

postgresql.conf 文件中:

@H_403_10@max_connection=@H_403_10@1000 

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

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

总结

以上是内存溢出为你收集整理的PostGreSQL 之服务器配置全部内容,希望文章能够帮你解决PostGreSQL 之服务器配置所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/1175283.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-02
下一篇2022-06-02

发表评论

登录后才能评论

评论列表(0条)

    保存