Postgresql 简介及安装

Postgresql的前世今生

postgresql的前身是伯克利的Ingres项目,经过6.x,7.x,8.x几个版本的迭代,成为了现在9.x(10.x)版本的最强大的开源关系型数据库。

Postgresql的优势

  1. 稳定可靠,唯一做到数据零丢失的开源数据库。
  2. 开源 免费
  3. 支持广泛,支持大量主流开发语言 C\C++\Perl\Python\Java\Tcl\PHP
  4. 社区活跃

Postgresql VS Mysql

Mysql的缺点:

  1. Mysql功能不够强大,例如不支持sequence
  2. Mysql性能优化和度量信息不足,复制是异步的,无法做到主从零数据丢失
  3. Mysql在线操作性能弱

Postgresql的优点:

  1. 功能强大:支持主流的多表链接查询方式(Nestloop,Hash join,sort merge join),正则表达式支持最强,内置函数最丰富,字段类型多(地理位置、数组、json等)
  2. 性能优化工具与度量信息丰富
  3. 在线操作性能良好
  4. 9.1开始支持同步复制,可以实现零数据丢失的复制方案

Postgresql VS Oracle

  1. 都使用共享内存的进程结构,不同于Mysql的线程模型
  2. Postgresql的WAL日志与Oralce的Redo日志都是记录物理块变化的,与Mysql的binlog不同
  3. Postgresql与Oracle的不同在于丰富的互联网特征,可以使用python,perl等编写存储过程
  4. 安装包只有几十M,远远低于Oracle的几个G的安装包

安装

Ubuntu下安装Postgresql非常简单

1
sudo apt-get install postgresql

简单配置

修改监听的IP和端口

vim /etc/postgresql/10/main/postgresql.conf

1
2
listen_addresses = '*'
port = 5432

打开日志收集

1
logging_collector = on

日志目录

1
logging_directory = 'log'

日志配置

1
2
3
log_truncate_on_ratation = on #自动截断
log_rotation_age = 1d #根据时间自动截断 1天
log_rotation_size = 10M #根据日志大小截断 10M

内存参数设置

1
2
shared_buffers #共享内存大小,默认32M
work_mem: #单个sql执行时,排序、hashjoin所使用的内存,sql运行完释放

work_mem设置大了会让排序操作更快完成