PostgreSQL教程(十一):服务器配置

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

下面是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]

选项 描述
-D 指定数据库存储的路径
-l 指定服务器进程的日志文件
-s 仅打印错误信息,不打印普通信息
-t SECS 当使用-w选项时等待的秒数
-w 等待直到数据库操作完成(对于stop而言,该选项时缺省选项)
-W 不等待任何操作的完成
--help 显示帮助信息
--version 显示版本信息
-m 对于stop和restart操作,可以指定关闭模式
系统关闭模式  
smart 不在接收新的连接,直到当前已有的连接都断开之后才退出系统
fast 不在接收新的连接请求,主动关闭已经建立的连接,之后退出系统
immediate 立即退出,但是在restart的时候需要有恢复的操作被执行

这里我们只是给出最为常用的使用方式,即数据库服务器的正常启动和关闭。
    #start表示启动postgres服务器进程。
    #-D指定数据库服务器的初始目录的存放路径。
    #-l指定数据库服务器进程的日志文件
    /> pg_ctl -w start -D /opt/PostgreSQL/9.1/data -l /opt/PostgreSQL/9.1/data/pg_log/startup.log
    #stop表示停止postgres服务器进程
    #-m fast在关闭系统时,使用fast的关闭模式。
    /> pg_ctl stop -m fast -w -D /opt/PostgreSQL/9.1/data

二、服务器配置:

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

代码如下:

# 这是一个注释
    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系统表的方式来检索感兴趣的系统参数。

三、内存相关的参数配置:

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。因为每个会话在同一时刻只能执行一个该操作,所以使用的频率不高,但是这些指令往往消耗较多的系统资源,因此应该尽快让这些指令快速执行完毕。

(0)

相关推荐

  • 图文详解mybatis+postgresql平台搭建步骤

    从头开始搭建一个mybatis+postgresql平台 最近有个项目的数据库使用postgresql,使用原生态的mybatis操作数据,原生态的没什么不好,只不过国内有个tk.mybatis的工具帮助我们做了很多实用的事情,大多数情况下我们需要在原生态mybatis上加工的想法它基本上都已经有很好的实现,这篇将分享安装postgresql,配置tk.mybatis的详细步骤以及在这过程中可能遇到的一些小问题. 安装postgresql,执行下面的命令就可以安装了: 复制代码 代码如下: ap

  • Python使用PyGreSQL操作PostgreSQL数据库教程

    PostgreSQL是一款功能强大的开源关系型数据库,本文使用python实现了对开源数据库PostgreSQL的常用操作,其开发过程简介如下: 一.环境信息: 1.操作系统: RedHat Enterprise Linux 4         Windows XP SP2 2.数据库: PostgreSQL8.3 3. 开发工具: Eclipse+Pydev+python2.6+PyGreSQL(提供pg模块) 4.说明: a.PostgreSQL数据库运行于RedHat Linux上,Win

  • 在windows下手动初始化PostgreSQL数据库教程

    环境:win7 64 sp1 PG:9.3.5 1.创建用户postgres,密码同样是postgres: net user postgres postgres /add 2.在数据库根目录下建立data目录: C:\Program Files\PostgreSQL\9.3>md data 3.去掉administrator对data目录的权限: C:\Program Files\PostgreSQL\9.3>cacls data /e /t /r administrator 处理的目录: C

  • Visual Studio(VS2017)配置C/C++ PostgreSQL9.6.3开发环境

    开发环境 Visual Studio 2017[15.2(26430.16)] 下载地址:https://www.visualstudio.com/downloads/ 我们下载地址:http://www.jb51.net/softs/540849.html PostgreSQL 9.6.3 下载地址:https://www.enterprisedb.com/downloads/postgres-postgresql-downloads 配置步骤 先从上方的网址中下载需要版本的PostgreSQ

  • asp.net实现Postgresql快速写入/读取大量数据实例

    最近因为一些项目需要大量插入数据,研究了下asp.net实现Postgresql快速写入/读取大量数据,所以留个笔记 环境及测试 使用.net驱动npgsql连接post数据库.配置:win10 x64, i5-4590, 16G DDR3, SSD 850EVO. postgresql 9.6.3,数据库与数据都安装在SSD上,默认配置,无扩展. CREATE TABLE public.mesh ( x integer NOT NULL, y integer NOT NULL, z integ

  • PostgreSQL教程(十七):客户端命令(1)

    零.口令文件: 在给出其它PostgreSQL客户端命令之前,我们需要先介绍一下PostgreSQL中的口令文件.之所以在这里提前说明该文件,是因为我们在后面的示例代码中会大量应用该文件,从而保证我们的脚本能够自动化完成.换句话说,如果在客户端命令执行时没有提供该文件,PostgreSQL的所有客户端命令均会被口令输入提示中断.     在当前用户的HOME目录下,我们需要手工创建文件名为 .pgpass的口令文件,这样就可以在我们连接PostgreSQL服务器时,客户端命令自动读取该文件已获得

  • Windows下PostgreSQL安装图解

    现在谈起免费数据库,大多数人首先想到的可能是MySQL,的确MySQL目前已经应用在国内很多领域,尤其是网站架设方面.但是,实际上功能最强大.特性最丰富和最复杂的免费数据库应该是PostgreSQL.它的很多特性正是当今许多商业数据库例如Oracle.DB2等的前身. 其实笔者最近也是因为项目需要,接触了一点PostgreSQL的皮毛,最近PostgreSQL又刚发布了8.1版本,笔者结合网上各位高手的经验谈一点自己的安装心得,和才开始接触PostgreSQL的新手朋友共同学习. 从Postgr

  • PostgreSQL教程(二十):PL/pgSQL过程语言

    一.概述: PL/pgSQL函数在第一次被调用时,其函数内的源代码(文本)将被解析为二进制指令树,但是函数内的表达式和SQL命令只有在首次用到它们的时候,PL/pgSQL解释器才会为其创建一个准备好的执行规划,随后对该表达式或SQL命令的访问都将使用该规划.如果在一个条件语句中,有部分SQL命令或表达式没有被用到,那么PL/pgSQL解释器在本次调用中将不会为其准备执行规划,这样的好处是可以有效地减少为PL/pgSQL函数里的语句生成分析和执行规划的总时间,然而缺点是某些表达式或SQL命令中的错

  • PostgreSQL教程(十八):客户端命令(2)

    七.pg_dump: pg_dump是一个用于备份PostgreSQL数据库的工具.它甚至可以在数据库正在并发使用时进行完整一致的备份,而不会阻塞其它用户对数据库的访问.该工具生成的转储格式可以分为两种,脚本和归档文件.其中脚本格式是包含许多SQL命令的纯文本格式,这些SQL命令可以用于重建该数据库并将之恢复到生成此脚本时的状态,该操作需要使用psql来完成.至于归档格式,如果需要重建数据库就必须和pg_restore工具一起使用.在重建过程中,可以对恢复的对象进行选择,甚至可以在恢复之前对需要

  • PostgreSQL教程(十五):系统表详解

    一.pg_class: 该系统表记录了数据表.索引(仍然需要参阅pg_index).序列.视图.复合类型和一些特殊关系类型的元数据.注意:不是所有字段对所有对象类型都有意义. 名字 类型 引用 描述 relname name   数据类型名字. relnamespace oid pg_namespace.oid 包含这个对象的名字空间(模式)的OI. reltype oid pg_type.oid 对应这个表的行类型的数据类型. relowner oid pg_authid.oid 对象的所有者

随机推荐