PG调优
参考:http://www.varlena.com/GeneralBits/Tidbits/perf.html
http://www.varlena.com/GeneralBits/Tidbits/annotated_conf_e.html
http://linuxfinances.info/info/postgresql.html
设置这些选项的一个方法是编辑文件 postgresql.conf
每次postmaster收到SIGHUP(最简单的发送方法就是使用 pg_ctl reload),信号后都会重新读取这个配置文件。 postmaster 同时也将这个信号广播给所有正在运行的服务器进程,这样现有会话也能得到新的缺省。 另外,你可以只向一个服务器进程直接发送信号。 有些参数只能在服务器启动的时候设置;对这些条目中的任何进行修改都将忽略,直到下次服务器重启。
第二种设置这些配置参数的方法是把它们作为命令行参数传递给 postmaster, 比如:postmaster -c log_connections=yes -c log_destination=’syslog’.命令行选项覆盖任何与 postgresql.conf 冲突的选项,请注意,这意味着你不能通过编辑 postgresql.conf, 在运行时改变其数值,因此,虽然命令行方法很方便,但你在以后可能会付出灵活性的代价。
有时候,给某一个特定会话一个命令行参数也是很有用的。 可以在客户端使用环境变量 PGOPTIONS 来实现这个目的:
env PGOPTIONS=’-c geqo=off’ psql
数据库导出:(-f可以换成>)
sudo -u postgres /usr/local/pgsql/bin/pg_dump -d URT1 -f /tmp/dump.sql
数据库导入:(-f可以换成<)
sudo -u postgres /usr/local/pgsql/bin/pgsql -d URT1 -f /tmp/dump.sql
导出指定的字段:
select * into test_tbl from some_tbl where ****;
pg_dump -d db_name -t test_tbl > /tmp/test.sql
导入则类似。
环境变量设置:
vi .bash_profile
LD_LIBRARY_PATH=/usr/local/pgsql/lib
export LD_LIBRARY_PATH
PATH=$PATH:$HOME/bin:/usr/local/pgsql/bin
export PATH
MANPATH=/usr/local/pgsql/man:$MANPATH
export MANPATH
应用程序
initdb — 创建一个新的 PostgreSQL数据库集群
initlocation — 创建一个从属的 PostgreSQL数据库存储区
ipcclean — 从退出的PostgreSQL服务器中删除共享内存和信号灯
pg_ctl — 启动,停止和重起 PostgreSQL
pg_controldata — 显示服务器范围哪的空值信息
pg_resetxlog — 重置预写日志以及 pg_control 内容
postgres — 意单用户模式运行一个 PostgreSQL服务器
postmaster — PostgreSQL多用户数据库服务器
clusterdb — 对一个PostgreSQL数据库进行建簇
createdb — 创建一个新的 PostgreSQL 数据库
createlang — 定义一种新的 PostgreSQL 过程语言.
createuser — 定义一个新的 PostgreSQL 用户帐户
dropdb — 删除一个现有 PostgreSQL 数据库
droplang — 删除一种 PostgreSQL 过程语言
dropuser — 删除一个 PostgreSQL 用户帐户
ecpg — 嵌入的 SQL C 预处理器
pg_config — 检索已安装版本的 PostgreSQL 的信息
pg_dump — 将一个PostgreSQL数据库抽出到一个脚本文件 或者其它归档文件中
pg_dumpall — 抽出一个 PostgreSQL 数据库集群到脚本文件中。
pg_restore — 从一个由 pg_dump 创建的备份文件中恢复 PostgreSQL 数据库.
psql — PostgreSQL 交互终端
pgtclsh — PostgreSQL TCL shell 客户端
pgtksh — PostgreSQL Tcl/Tk shell 客户端.
vacuumdb — 收集垃圾并且分析一个PostgreSQL 数据库
监控数据库活动
select now() as Time,datname as Database ,xact_commit as commit,blks_read as read,blks_hit as hit,tup_returned as return,tup_fetched as fetch,tup_inserted as insert,tup_updated as update,tup_deleted as delete from pg_stat_database;
pg_stat_activity 每个服务器进程一行,显示进程ID,数据库,用户,和当前查询. 只有超级用户看得到当前查询字段;对于其它用户,它显示为 NULL. (请注意因为收集器的报告延迟,当前查询只是对长时间运行的查询 及时更新.)
pg_stat_database 每个数据库一行,显示激活的后端的数量,提交的事务总数以及在该 数据库中回卷数目的总数,读取的磁盘块的总数,以及缓冲区命中的总数( 也就是中所需要的块已经在缓冲区中找到,从而避免了读取块的动作).
pg_stat_get_tuples_returned(oid) bigint 如果参数是一个表,那么就是顺序扫描读取的元组数目, 如果是一个索引,那么就是索引元组的数目
pg_stat_get_tuples_fetched(oid) bigint 如果参数是一个表,那么就是顺序扫描抓取的有效(未过期)的表元组数目, 如果是一个索引,那么就是用这个索引抓取的有效表元组数目
pg_stat_get_tuples_inserted(oid) bigint 插入表中的元组数量
pg_stat_get_tuples_updated(oid) bigint 在表中已更新的元组数量
pg_stat_get_tuples_deleted(oid) bigint 从表中删除的元组数量
pg_stat_get_blocks_fetched(oid) bigint 表或者索引的磁盘块抓取请求的数量
pg_stat_get_blocks_hit(oid) bigint 在缓冲区中找到的表或者索引的磁盘块请求数目

