### [PostgreSQL学习手册(服务器配置)](http://www.cnblogs.com/stephen-liu74/archive/2012/05/16/2302241.html)
Posted on 2012-05-16 07:58 [Stephen_Liu](http://www.cnblogs.com/stephen-liu74/) 阅读(1159) 评论(0) [编辑](http://www.cnblogs.com/stephen-liu74/admin/EditPosts.aspx?postid=2302241) [收藏](http://www.cnblogs.com/stephen-liu74/archive/2012/05/16/2302241.html#) ![](https://box.kancloud.cn/2015-10-30_5632e1b84c550.jpg)
**一、服务器进程的启动和关闭:**
下面是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。因为每个会话在同一时刻只能执行一个该操作,所以使用的频率不高,但是这些指令往往消耗较多的系统资源,因此应该尽快让这些指令快速执行完毕。
分类: [PostgreSQL](http://www.cnblogs.com/stephen-liu74/category/343171.html)
- 数据表
- 模式Schema
- 表的继承和分区
- 常用数据类型
- 函数和操作符-一
- 函数和操作符-二
- 函数和操作符-三
- 索引
- 事物隔离
- 性能提升技巧
- 服务器配置
- 角色和权限
- 数据库管理
- 数据库维护
- 系统表
- 系统视图
- SQL语言函数
- PL-pgSQL过程语言
- PostgreSQL 序列(SEQUENCE)
- PostgreSQL的时间-日期函数使用
- PostgreSQL 查看数据库,索引,表,表空间大小
- 用以查询某表的详细 包含表字段的注释信息
- PostgreSQL 系统表查看系统信息
- postgre存储过程简单实用方法
- PostgreSQL实用日常维护SQL
- PostgreSQL的时间函数使用整理
- 命令
- pg_ctl控制服务器
- initdb 初始化数据库簇
- createdb创建数据库
- dropdb 删除数据库
- createuser创建用户
- dropuser 删除用户
- psql交互式工具
- psql命令手册
- pg_dump 数据库转储
- pg_restore恢复数据库
- vacuumdb 清理优化数据库
- reindexdb 数据库重创索引
- createlang 安装过程语言
- droplang 删除过程语言
- pg_upgrade 升级数据库簇
- 调试存储过程
- 客户端命令-一
- 客户端命令-二
- 使用技巧
- PostgreSQL删除重复数据
- postgresql 小技巧
- PostgreSQL的10进制与16进制互转
- PostgreSQL的汉字转拼音
- Postgres重复数据的更新一例
- PostgreSQL使用with一例
- PostgreSQL在函数内返回returning
- PostgreSQL中的group_concat使用
- PostgreSQL数据库切割和组合字段函数
- postgresql重复数据的删除
- PostgreSQL的递归查询(with recursive)
- PostgreSQL函数如何返回数据集
- PostgreSQL分区表(Table Partitioning)应用 - David_Tang - 博客园
- PostgreSQL: function 返回结果集多列和单列的例子
- 利用pgAgent创建定时任务
- 浅谈 PostgreSQL 类型转换类似Oracle
- postgresql在windows(包括win7)下的安装配置
- PostgreSQL简介、安装、用户管理、启动关闭、创建删除数据库 (2010-11-08 12-52-51)转载▼标签: 杂谈分类: PostgreSQL
- PostgreSQL的generate_series函数应用
- PostgreSQL 8.3.1 全文检索(Full Text Search)
- postgresql record 使用
- 备份恢复
- PostgreSQL基于时间点恢复(PITR)
- Postgresql基于时间点恢复PITR案例(二)
- Postgres逻辑备份脚本
- Postgres invalid command \N数据恢复处理