一、服务器进程的启动和关闭:
下面是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'
/> postgres -c log_connections=yes -c log_destination='syslog'
1). 基于会话的配置;
2). 基于用户的配置;
3). 基于数据库的配置;
4). postgres命令行指定的配置;
5). 配置文件postgresql.conf中给出的配置。
最后需要说明的是,有些设置可以通过PostgreSQL的set命令进行设置,如在psql中我们可以输入:
SET ENABLE_SEQSCAN TO OFF;
SHOW ENABLE_SEQSCAN;
三、内存相关的参数配置:
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。因为每个会话在同一时刻只能执行一个该操作,所以使用的频率不高,但是这些指令往往消耗较多的系统资源,因此应该尽快让这些指令快速执行完毕。