PostgreSQL学习笔记
2019-04-15 本文已影响0人
zhglance
一、PostgreSQL简介
1.功能强大
支持Nest Loop hash join,sort merge join等,并且支持数组类型,集合烈性,网络地址类型,xml,JSON/JSONB(且支持JSONB上创建索引),range类型,复合类型(如同内部类),内置函数丰富,支持丰富的正则表达式。
2.性能监控和度量信息丰富
可以方便定位到正在实行的SQL,那条SQL被锁定等。
3.稳定可靠
a.相比于MySQL的异步复制,PostgreSQL采用同步复制,实现零数据丢失的HA方案;
b.MySql创建索引会锁定整张表,PostgreSQL支持在线建索引;
c.对表添加列时,无需对表的物理结构做修改,不想MySQL那样。
4.开源免费
PostgreSQL是BSD协议,没有二次开发的限制。
5.社区工具活跃
PgBouncer轻量级连接池,Slony集群,Bucardo双向同步工具,实现双主数据库方案,有PL/Proxy和Postgres-XC(支持跨机器join)水平分库工具,pgpool连接池和负载均衡工具,HA-JDBC高可用方案等。
6.支持语言丰富
支持C/C++,Perl,Python、JAVA,PHP等。
二、主从复制
1.WAL日志归档
即把WAL log复制到其他地方,可以使用unix命令实现;
2.流复制
这种方式在主数据库产生日志后,日志马上传到从数据库。PostgresSQL支持异步和同步。
a.流同步复制:
通过在主数据库提交事务时,等到WAL log传递到从数据库才返回,这样保证主从数据库的0数据丢失。缺点:当所有从数据库宕机后,系统会受影响,但是只要有一台从数据正常,那么服务就正常。
b.流异步复制:
通过在主数据库提交事务时,不必等到WAL log传递到从数据库才返回,这样从数据库的数据相对于从数据库有延迟。