`

PostgreSQL资料

 
阅读更多

 

 

推荐书籍:

概念书籍:

《PostgreSQL Introduction and Concepts》

开发书籍:

《PostgreSQL开发必备参考手册》

管理类书籍:

《PostgreSQL 9 Administration Cookbook》

《PostgreSQL 9.0 High Performance》

《PostgreSQL Server Programming》

《How PostgreSQL Processes a Query》

了解内核 : 

    http://www.postgresql.org/developer/backend/

    http://wiki.postgresql.org/wiki/Backend_flowchart

《数据库查询优化器的艺术:原理解析与SQL性能优化》 - 海翔老师

《 PostgreSQL 内核分析》 - 彭老师

官方手册:

http://www.postgresql.org/docs/

中文手册:

http://www.postgres.cn/document

培训类PPT:

《PostgreSQL Inside 系列》 

《PostgreSQL DBA培训PPT》 

代码树:

http://doxygen.postgresql.org/

代码提交集:

https://commitfest.postgresql.org/

项目GIT:

http://git.postgresql.org

PostgreSQL GITHUB镜像

https://github.com/postgres/postgres

PostgreSQL JDBC 驱动:

 

http://jdbc.postgresql.org

http://jdbc.postgresql.org/development/privateapi/

PostgreSQL ODBC 驱动:

http://www.postgresql.org/ftp/odbc/versions/src/

PostgreSQL 扩展插件:

 

http://pgfoundry.org

http://pgxn.org/

 

GUI工具(pgAdmin):

http://www.pgadmin.org/

安全漏洞:

http://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=postgresql

中文社区:

http://bbs.pgsqldb.com

中文官网:

http://www.postgres.cn

国外FAQ社区, BLOG:

 

http://www.pgcon.org/

https://www.postgresql.us/

http://www.itpug.org/

http://www.pgug.de/

http://www.diapug.org/

http://stackoverflow.com/questions/tagged/postgresql

 

http://momjian.us

http://www.pgexperts.com

http://blog.2ndquadrant.com/en

一位社区兄弟ty4z2008整理的资料

https://github.com/ty4z2008/Qix/blob/master/pg.md

其他推荐网站:

http://db.cs.berkeley.edu

http://mariposa.cs.berkeley.edu/

http://www.postgresql.org

 

http://wiki.postgresql.org/wiki/Todo

http://wiki.postgresql.org/wiki/Development_information

http://wiki.postgresql.org

http://www.pgbuildfarm.org

https://github.com/aggregateknowledge/postgresql-hll

http://www.postgis.org/

http://workshops.opengeo.org/postgis-intro/

http://www.opengeospatial.org/

http://code.google.com

https://developers.google.com/

http://www.perzl.org/aix/

http://db-engines.com/en/

http://pgmag.org/

http://planet.postgresql.org/

http://www.cybertec.at/

http://www.translattice.com/

http://citusdata.com/

http://www.dbms2.com/

http://www.informationweek.com/

http://www.infoq.com/

http://www.actian.com/

http://aws.amazon.com/redshift/

http://sourceforge.net/projects/postgres-xc/

http://www.postgres-xl.org/

http://madlib.net/

http://research.google.com/index.html

http://postgresql.1045698.n5.nabble.com/

http://blog.163.com/digoal%40126

 

推荐PostgreSQL 专业群:

3336901

 

书籍打包下载:

如有需要请联系: 276732431, 或留言留下您的邮箱. 文件超过100MB, 邮箱需要支持大附件才能接收. 

或者到以下网盘下载.

http://yun.baidu.com/share/link?shareid=3626307544&uk=1982970774

 

 

PostgreSQL 培训视频

http://www.tudou.com/home/digoal

视频下载地址

http://blog.163.com/digoal@126/blog/static/16387704020141229159715/

 

 

PostgreSQL TODO & 软肋, 

大多数软件都有坑, 如果把握不好, 那就掉坑里去了, PostgreSQL亦如此, 为避免初次接触PostgreSQL的朋友掉坑里去, 这里罗列了一些PostgreSQL的软肋和TODO, 大家可以参考一下.

 

todo

1. http://wiki.postgresql.org/wiki/Todo

2. 基于WAL的多主复制(9.4可能会实现)

3. 多CPU资源利用, 如并行查询

4. shared nothing 架构(目前需要插件来实现如plproxy, pgpool-ii)

5. 基于块的增量基础备份(目前只有基于WAL的增量备份)

6. query cache, 如count(*)性能提升

7. toast 阈值可配置(目前只能在编译时指定)

8. 使用ssd作为二级缓存

9. PostgreSQL 目前一个集群只支持1个block_size, 这种不利于复杂场景的使用, 例如我们在同一个数据库中有大量的OLTP请求, 同时还有大数据的频繁导入需求的情况下, 选择小的block_size或者大的block_size都不合适, 如果能针对每个表指定不同的block_size的话可以很好的解决这一的问题.  当然如果数据库中存在不同大小的block_size, 那么随之而来的改动是非常大的, 例如shared buffer也必须兼容不同大小的block size.

在Oracle 9中, 支持一个数据库中存在不同的数据块大小. 

10. PostgreSQL的配置文件是直接编辑的, 没有像oracle这样的spfile, 当然9.4会支持alter system来修改, 但是<=9.3的没有, 修改文件容易出错, 不安全, 错误的话会导致数据库集群无法启动.

11. 目前开源的postgresql不支持函数加密. 安全性较低.

12. 目前移动表空间(如alter table tbl set tablespace newtbs;)会产生大量的XLOG, 这个应该是可以优化的.

13. 流复制异步模式下, failover后, 可能因为主备xlog的差异需要重做standby. 目前可以通过rsync减少网络传输, 或者zfs snapshot来将OLD PRIMARY回退到以前的状态达到切换成standby的目的. 

14. 没有表空间配额限制, 目前只能通过文件系统使用配额来简单的限制.

15. 没有rotate table, 类似mongoDB的capped collection. 限制记录条数, 空间, 或记录时长, 超过限制就覆盖最早的记录 .

16. pg-xc, pg-xl的数据重分布需要将数据从所有的数据节点加载到coordinator后, 在按照重分布算法分发到新的所有节点.

17. 同步流复制的一点可能可以改进的地方, 例如只有一台standby时, 如果standby异常或网络原因导致XLOG无法同步复制到standby并返回feedback的话, 那么在同步提交队列中等待提交的xact将处于等待状态, 一般的做法是使用2个或2个以上的standby来防止1个STANDBY故障时可以自动将同步standby节点向下转移, XACT不需要等待. 那么是不是可以有得选择, 例如在等待多少秒之后自动切换成异步模式.

18. 目前没有比较好的读写分离或shared-nothing解决方案, 例如

1. 通过中间件pgpool-II构建读写分离, 但是pgpool-II目前稳定性, 性能(tps)都不尽人意.

2. 使用pg-xc构建的shared-nothing, 性能(TPS)损耗太大, 同时全局一致性还原(PITR)目前还只有停留在创建barriers, 粒度无法达到gxid的粒度(因为每个节点各管各自的XID).

3. 使用plproxy构建shared-nothing, 性能损失小, 但是没有跨节点事务能力, 当然如果应用层愿意使用 2PC来实现的话, 也是可以的. 另外, 接口必须是PLPROXY函数, 所以对应用来说适配较差.

 

软肋

1. 读写并发管理通过新增行版本实现, 会带来垃圾数据, 对于非HOT更新的话, 还会引起索引更新, 导致索引更容易膨胀.

2. 显然这种MVCC机制不利于频繁更新的应用场景, 同一条记录被更新10次的话, 会产生10个版本的写xlog和heap page的IO, 同时在VACUUM的时候还需要写xlog以及heap page的IO. 这10个版本可能并不会同时存在, 但是却实实在在的产生了这些写IO.

3. 通过xid来识别版本, 且xid是32位存储, XID是需要复用的, 所以经过一定的事务分配后需要freeze, 当然此MVCC机制的好处也是有的, 例如锁粒度很小, 容易实现repeatable read和ssi. 会话层可实现跨越会话的一致性镜像等.

4. 同样MVCC带来的问题, 在大数据库中使用逻辑备份时(), 备份开始后产生的垃圾数据都无法被回收, 如果备份时间很长, 将导致数据库膨胀比较厉害, 同时也会影响对象的freeze. 所以对大库建议使用pitr备份方式. 

 

5. one-by-one的扩展数据块使得对同一个对象进行大批量的并行数据导入的时候(例如并行COPY)会产生extend锁等待问题. 影响导入性能. 参见 : http://blog.163.com/digoal@126/blog/static/163877040201392641033482

 

分享到:
评论

相关推荐

    同时连线到 MySQL、SQLite、Oracle 及 PostgreSQL 资料库,让管理不同类型的资料库更加的方便。

    Navicat premium是一款数据库管理工具,是一个可多重连线资料库的管理工具,它可以让你以单一程式同时连线到 MySQL、SQLite、Oracle 及 PostgreSQL 资料库,让管理不同类型的资料库更加的方便。

    PostGreSQL资料.zip

    PostGreSQL资料.

    Introduction-to-PostgreSQL:PostgreSQL资料简介

    PostgreSQL资料简介 通过企业数据库安装程序下载postgres 10和PgAdmin 4(在主课程页面上链接)后,使用setup_instructions.pdf。在此期间,系统将要求您将intro_to_postgres_setup.sql文件复制到PgAdmin 4查询工具...

    postgresql相关资料

    postgresql 数据库资料postgresql 数据库资料postgresql 数据库资料postgresql 数据库资料postgresql 数据库资料postgresql 数据库资料

    postgresql PGCA 课程PPT01_postgresql_PGCA_PGCP_PGCM_课程全免费

    postgresql PGCA 课程PPT01_postgresql_PGCA_PGCP_PGCM_课程全免费 postgresql PGCA 课程PPT01_postgresql_PGCA_PGCP_PGCM_课程全免费 postgresql PGCA 课程PPT01_postgresql_PGCA_PGCP_PGCM_课程全免费 postgresql ...

    PostgreSQL基础学习资料

    PostgreSQL基础学习资料PostgreSQL基础学习资料PostgreSQL基础学习资料

    navicat.11.2.13.premium_cs_x64

    Navicat Premium 导航猫数据库管理 是一个可多重连线资料库的管理工具 Navicat Premium 导航猫数据库管理 可以让你以单一程式同时连线到MySQL SQLite Oracle 及 PostgreSQL资料库 让管理不同类型的资料库更加的方便 ...

    navicat-premium12-pj版-32位-64位

    Navicat premium是一款数据库管理工具,是一个可多重连线资料库的管理工具,它可以让你以单一程式同时连线到 MySQL、SQLite、Oracle 及 PostgreSQL 资料库,让管理不同类型的资料库更加的方便。Navicat Premium结合了...

    NavicatPremium11111

    NavicatPremium,Navicat premium是一款数据库管理工具,是一个可多重连线资料库的管理工具,它可以让你以单一程式同时连线到 MySQL、SQLite、Oracle、MariaDB、Mssql、及PostgreSQL 资料库,让管理不同类型的资料库...

    PostgreSQL(postgresql-14.2.tar.gz)

    PostgreSQL(postgresql-14.2.tar.gz),适用于Linux系统:PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发的POSTGRES,4.2版本为基础的对象关系型数据库...

    postgresql 教程 pdf 资料集合 .rar

    postgresql 教程 pdf资料整理;内含多本资料,适合不同阶段的学习。

    Navicat Premium32 64 皆可用

    Navicat Premium(导航猫数据库管理)是一个可多重连线资料库的管理工具,Navicat Premium(导航猫数据库管理)可以让你以单一程式同时连线到MySQL、SQLite、Oracle 及 PostgreSQL资料库,让管理不同类型的资料库更加的...

    PostgreSQL基础教程.rar_postgresql

    介绍PostgreSQL数据库,适用于培训。

    数据库管理Navicat企业版10.0.8

    Navicat Premium是一个可多重连线资料库的管理工具,它可以让你以单一程式同时连线到 MySQL、SQLite、Oracle 及 PostgreSQL 资料库,让管理不同类型的资料库更加的方便。 Navicat Premium结合了其他Navicat成员的...

    Navicat Premium_11.2.7简体中文版

    Navicat Premium是一个可多重连线资料库的管理工具,它可以让你以单一程式同时连线到 MySQL、SQLite、Oracle 及 PostgreSQL 资料库,让管理不同类型的资料库更加的方便。 Navicat Premium结合了其他Navicat成员的...

    Navicat Premium Enterprise (数据库管理) V9.0.12 简体中文特别版 分卷2

    Navicat Premium是一个可多重连线资料库的管理工具,它可以让你以单一程式同时连线到 MySQL、SQLite、Oracle 及 PostgreSQL 资料库,让管理不同类型的资料库更加的方便。 Navicat Premium结合了其他Navicat成员的...

    PostgreSQL集群技术资料.

    PostgreSQL集群技术资料.

    Navicat Premium Enterprise (数据库管理) V9.0.12 简体中文特别版 分卷1

    Navicat Premium是一个可多重连线资料库的管理工具,它可以让你以单一程式同时连线到 MySQL、SQLite、Oracle 及 PostgreSQL 资料库,让管理不同类型的资料库更加的方便。 Navicat Premium结合了其他Navicat成员的...

    Navicat_Premium_11.1.13_XiaZaiBa.zip

    Navicat Premium(导航猫数据库管理)是一个可多重连线资料库的管理工具,Navicat Premium(导航猫数据库管理)可以让你以单一程式同时连线到MySQL、SQLite、Oracle 及 PostgreSQL资料库,让管理不同类型的资料库更加的...

    Navicat Premium(导航猫数据库管理)11.0.10简体中文特别版

    Navicat Premium(导航猫数据库管理)是一个可多重连线资料库的管理工具,Navicat Premium(导航猫数据库管理)可以让你以单一程式同时连线到MySQL、SQLite、Oracle 及 PostgreSQL资料库,让管理不同类型的资料库更加的...

Global site tag (gtag.js) - Google Analytics