PG基础

1.PG和DB2一样,DB下可以有多个schema
2.每个DB默认有两个系统的schema:pg_catalog,包含各种对象(如view)的定义。information_schema,包含动态信息
3.每个DB默认有一个PUBLIC的schema

4.PG的service对应DB2的instance,都是一个进程或者是线程对外通过某个监听端口提供服务
5.Grand Unified Configuration(GUC)就是变量的意思
6.extension,是一些data types、tables、GUC之类的打包后的东东,可以选择安装某些extension。对应Oracle的Package的概念
7.foreign table & foreign data wrapper,就是DB2中联邦表的概念,通过foreign data wrapper配置后可以访问PG库外的表,如访问磁盘上的csv文件
8.postgresql.conf和postgresql.auto.conf都是配置文件,后者在9.4的时候新增,当使用ALTER SYSTEM SQL的时候就会将配置存放到postgresql.auto.conf中
9.pg_hba.conf用于管理安全方面配置的配置文件
10.pg_ident.conf用于将OS账户map到PG中
11.psql中,/?可以查看元命令的帮助,/h可以查看SQL的语法
12.从源代码编译并启动的方法:
./configure
make
su
make install
adduser postgres
mkdir /usr/local/pgsql/data
chown postgres /usr/local/pgsql/data
su – postgres
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data >logfile 2>&1 &
/usr/local/pgsql/bin/createdb test
/usr/local/pgsql/bin/psql test
13.PG建议使用单独的用户(而不是root)启动,并让这个用户只能操作PG的文件,而不能操作其他文件
14.在启动server的时候,需要先初始化data的目录结构。这个结构在PG里叫做database cluster。这个类似于DB2建立实例的操作。
15.PG需要手工对一些内核参数做些修改,比如用于IPC的共享内存之类
16.PG需要手工对一些resource limit做出修改,比如通过ulimit改下最大的open fd个数
17.通过kill可以停止server,一般用法如下: kill -INT ‘head -1 /usr/local/pgsql/data/postmaster.pid‘。SIGTERM代表smart shutdown,PG可以清理资源后停止。SIGINT代表快速shutdown。SIGQUIT代表立即shutdown。SIGKILL信号量不推荐使用,因为其会残留大量子进程以及未释放的内存。
18.对于PG,如果是小版本升级则只要替换执行文件即可,不需要对data cluster做任何改变。对于大版本升级一般是重新导数据。
19.配置文件中的参数都是大小写敏感的,等号旁的空格没有影响
20.SIGHUP可以让server重新加载配置。信号量的操作一般pg_ctl都做了封装。一般如果把信号量发给主进程的话主进程会的转发信号量给所有进程,当然也可以直接发给某个单独的进程
21.postgresql.auto.conf不应该人为的修改,只应该通过ALTER SYSTEM修改。其会的覆盖postgresql.conf中的配置
22.ALTER SYSTEM修改global配置,ALTER DATABASE修改某个db的配置,ALTER ROLE修改global和db配置。SET用于修改本session的配置。SHOW用于查看当前配置。通过VIEW也可以查看配置,等价于SHOW命令。如果UPDATE这个VIEW则等价于SET命令。
23.启动的时候通过-c XXX=YYY可以指定参数。可以同时指定多个-c
24.配置文件支持一些保留关键字,比如include用于加载另一个配置文件。include_if_exists类似include,但如果文件不存在也没关系。include_dir则是加载整个目录。
25.几个文件相关的参数:
data_directory:指定数据文件目录
config_file:指定配置文件地址,这个只能用在启动命令里
hba_file:指定hba文件地址,这个只能用在启动命令里
ident_file:指定ident文件地址,这个只能用在启动命令里
external_pid_file:指定pid文件目录
一般启动的时候都只-D xxx_directory启动的,此时PG会的去xxx_directory下找postgresql.conf文件,进而在postgresql.conf中找到上面的几个参数地址
26. 几个连接参数:
listen_addresses:监听IP
port:监听端口
max_connections:最大连接数
superuser_reserved_connections:用于给超级用户保留的连接个数
unix_socket_directories:unix socket目录
unix_socket_group:unix socket组
unix_socket_permissions:unix socket权限
tcp_keepalives_idle:在client没有数据交互的时候,server隔多久发送一个心跳给client
tcp_keepalives_interval:在上面发送心跳后如果client没有回应,这个参数指定再次间隔多久再发一个心跳
tcp_keepalives_count:指定上面的心跳包最多发多少个
27.几个安全相关参数:
authentication_timeout:认证超时时间
password_encryption:CREATE USER或者是ALTER ROLE等命令涉及到需要指定password的时候,如果SQL中没有明确说明是否加密,则使用这个参数来决定是否加密
db_user_namespace:是否使用DB相关的用户名字空间
28.几个资源相关的参数:
shared_buffers:共享内存大小
huge_pages:是否启动大页
temp_buffers:临时空间大小
max_prepared_transactions:处于prepared的事物最大个数
work_mem:用于排序等工作的内存大小
maintenance_work_mem:用于维护工作的内存大小
29.psql的\l可以查看数据库列表。initdb会的建立默认的postgres数据库,同时会的建立其它的一些数据库,比如template1,template1的作用是提供一个模板,当建立其他数据库的时候会clone它一下生成新的数据库。换句话说可以在template1中建立一些对象,这样create新的DB的时候就会copy这些对象。另外默认还会有一个template0,内容和初始的template1一样,不建议去修改template0的内容,这样可以保证有个最干净的template。最干净的DB在restore那些dump的数据的时候会的作为初始基准。CREATE DATABASE dbname TEMPLATE template0或createdb -T template0 dbname可以使用某个template建立DB。注意,当一个DB作为template的时候,其不能有连接,copy的过程中也不能有新连接建立。
30.对于DB级别的配置session可以通过SET,如果要所有新的session都使用新配置那么可以使用ALTER DATABASE
31.psql的SQL要注意大小写和分号,比如create database XXX不会有任何作用,但CREATE DATABASE XXX;则可以建立数据库。对于分号貌似psql是默认认为是续行的,所以敲下CREATE DATABASE XXX并按了回车后,再敲下;才会生效。
32.PG的tablespace和DB2的比较像,用于存放数据库对象,在创建对象的时候可以指定使用哪个tablespace。和DB2一样tablespace的元数据保存在database cluster中。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*