显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

PostgreSQL research

公益是一辈子的事, I'm 德哥@Digoal, Just Do it!

 
 
 
 
 
 
为了让跟多的朋友了解PostgreSQL, 我将这些年对PG的使用和研究做成了一些体系的培训视频和一些专题视频.(免费观看和下载)

希望通过这些视频帮到一些朋友, 同时对视频中的错误点烦请读者指出以更正, 谢谢.

目前在更新的视频是<PostgreSQL 数据库管理 5天>和<PostgreSQL 性能优化 3天>.

在线观看地址 :

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

培训视频源文件以及文档下载地址 : 

http://pan.baidu.com/share/home?uk=1982970774#category/type=0

转载请注明出处.

针对一些网友的反馈, 重新设计的培训内容如下, 由浅入深, 适合不同的人群. 包含

<PostgreSQL发展历程,社区介绍,资源介绍 2小时>

<PostgreSQL SQL基础 2天>

<PostgreSQL 数据库管理 3天>

<PostgreSQL 数据库备份与恢复, 数据复制, 负载均衡与高可用 3天>

作者  | 2014-2-22 10:19:30 | 阅读(14063) |评论(64) | 阅读全文>>

[置顶] 给PostgreSQL爱好者的参考资料

2011-8-21 8:32:39 阅读56904 评论32 212011/08 Aug21

推荐书籍:

概念书籍:

《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 内核分析》 - 彭老师

《从小工到专家》 -  唐成

官方手册:

作者  | 2011-8-21 8:32:39 | 阅读(56904) |评论(32) | 阅读全文>>

阿里云数据库Greenplum版发布啦

2016-7-11 20:33:53 阅读135 评论0 112016/07 July11

经过阿里云ApsaraDB小伙伴们几个月的不懈努力,Greenplum 终于上云了。

(这里有PostgreSQL内核小组的宇宙第一小鲜肉,还有宇宙无敌老腊肉)

云数据库Greenplum版(ApsaraDB for Greenplum)是基于Greenplum开源数据库项目的MPP大规模并行处理数据仓库产品,提供全面的SQL支持(包括符合SQL2008标准的OLAP分析函数),业界流行的BI软件都可以直接使用Greenplum进行在线业务分析。支持行存储和列存储混合模式,提高分析性能;同时提供数据压缩技术,降低存储成本。支持XML、GIS地理信息、模糊字符串等丰富的数据类型,为物联网、互联网、金融、政企等行业提供丰富的业务分析能力。

Greenplum从2008年在国内推广以来,生态已经非常的成熟,在 运营商、金融、物流、公安、政府、互联网 等行业都有非常庞大的用户群体。

从百TB到PB的OLAP仓库,Greenplum无疑是非常好的选择。

阿里云并不是简单的将Greenplum云化,还添加了一些非常贴地气的特性:

内核增强支持插件 oss_ext、PostGIS、orafunc(Oracle兼容包)、DBLINK、MADlib(机器学习方面的函数库)、fuzzystrmatch插件,字符串模糊匹配;

(OSS_EXT插件,读取存放在OSS(Open Storage Service)上的文件。)支持 create extension 语法创建插件

作者  | 2016-7-11 20:33:53 | 阅读(135) |评论(0) | 阅读全文>>

PostgreSQL Oracle兼容性之 - connect by

2016-6-14 22:34:53 阅读83 评论0 142016/06 June14

Oracle用户常用的功能之一connect by。

主要针对的是树形查询,例如上下级关系,家族图谱,分类,等。

用法举例

创建示例表:

CREATE TABLE TBL_TEST ( ID NUMBER, NAME VARCHAR2(100 BYTE), PID NUMBER DEFAULT 0 );

插入测试数据:

INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('1','10','0'); INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('2','11','1'); INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('3','20','0'); INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('4','12','1'); INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('5','121','2');

以pid为父ID,id为子ID,这几条记录的关系结构时这样的

从Root往树末梢递归

select * from TBL_TEST start with id=1 connect by prior id = pid;

从1开始往下搜索,应该得到1,2,4,5

id | name

作者  | 2016-6-14 22:34:53 | 阅读(83) |评论(0) | 阅读全文>>

不带barrier的视图是不安全的,我在前面写过文章来讲这个,以及如何攻击这种视图。

https://yq.aliyun.com/articles/14731

PostgreSQL 为了增强视图的安全,增加了barrier的属性,来解决被攻击的问题。

PostgreSQL 9.5 则提供了RLS来达到表数据隔离的目的,解决了需要使用视图来隔离数据的目的。

RLS的隔离可以参考我以前写的文章

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

回到本文的主题,EnterpriseDB 9.3针对Oracle的兼容性,提供了一个叫VPD的特性,因为9.3的版本较老,那个时候还没有RLS,所以这个特性其实是基于query rewrite来做的,与barrier视图类似。

用法参考(dbms_rls包)

作者  | 2016-6-14 22:34:11 | 阅读(84) |评论(0) | 阅读全文>>

PostgreSQL merge json的正确姿势

2016-6-14 22:33:22 阅读92 评论0 142016/06 June14

json merge是业务常用的功能,例如网络爬虫,更新合并新爬到的内容。

PostgreSQL 9.5 对JSON的类型进行了非常大的功能增强,例如支持合并,按KEY删除,更新KEY VALUE等。

https://www.postgresql.org/docs/9.5/static/functions-json.html

以合并为例

以右边的值为准,支持嵌套值的合并。

postgres=# select jsonb '{"k1":"v1","k2":"v2","k3":{"k1":"v3","k2":"v3","k3":"v3"}}' || jsonb '{"k1":"v1","k2":"v2","k3":{"k1":"v3","k2":"v3","k3":"v4"}}'; ?column? ---------------------------------------------------------------------- {"k1": "v1", "k2": "v2", "k3": {"k1": "v3", "k2": "v3", "k3": "v4"}} (1 row) postgres=#

作者  | 2016-6-14 22:33:22 | 阅读(92) |评论(0) | 阅读全文>>

在java中正确使用PostgreSQL大对象和字节流类型的姿势

2016-6-14 22:32:46 阅读91 评论0 142016/06 June14

有人在java中使用getBlob获取所谓的"大对象"失败,问题是用法不对。

groovy:000> rs.getBlob("image") ERROR org.postgresql.util.PSQLException: Bad value for type long : \336\255\276\357\336\255\276\357 at org.postgresql.jdbc2.AbstractJdbc2ResultSet.toLong (AbstractJdbc2ResultSet.java:2796) at org.postgresql.jdbc2.AbstractJdbc2ResultSet.getLong (AbstractJdbc2ResultSet.java:2019) at org.postgresql.jdbc4.Jdbc4ResultSet.getBlob (Jdbc4ResultSet.java:52) at org.postgresql.jdbc2.AbstractJdbc2ResultSet.getBlob (AbstractJdbc2ResultSet.java:335) at groovysh_evaluate.run (groovysh_evaluate:3) ...

注意PostgreSQL和Oracle不一样,大对象存储在pg_largeobject中,在用户的数据字段中存储的是OID(即引用),不是字节流。

作者  | 2016-6-14 22:32:46 | 阅读(91) |评论(0) | 阅读全文>>

Linux cgroup资源隔离各个击破之 - cpu隔离1

2016-6-14 22:32:10 阅读65 评论0 142016/06 June14

Linux cgroup 有两个子系统支持CPU隔离。

一个是cpu子系统,另一个是cpuset子系统。

cpu子系统根据进程设置的调度属性,选择对应的CPU资源调度方法

.1. 完全公平调度 Completely Fair Scheduler (CFS)

原理详见

https://www.kernel.org/doc/Documentation/scheduler/sched-design-CFS.txt

CFS用于处理以下几种进程调度策略

SCHED_OTHER

SCHED_BATCH

SCHED_IDLE

.2. 实时调度 Real-Time scheduler (RT)

原理详见

https://www.kernel.org/doc/Documentation/scheduler/sched-rt-group.txt

RT用于处理以下几种进程调度策略

SCHED_FIFO

作者  | 2016-6-14 22:32:10 | 阅读(65) |评论(0) | 阅读全文>>

PostgreSQL的"天气预报" - 如何预测Freeze IO风暴

2016-6-14 22:31:20 阅读55 评论0 142016/06 June14

还记得我写的这篇文档吗? 《PostgreSQL 大表自动 freeze 优化思路》

https://yq.aliyun.com/articles/50411

文章主要针对如何优化大表的freeze调度来减少IO风暴的问题,请注意只是减少,不是避免。

作为一名有追求的PGer,要时刻保持警惕,生于忧患、死于安乐;

本文要给大家讲的是预测风暴,掌握了预测能力,才能未雨绸缪,淡定的面对暴风雨。

预测 IO 风暴

如何预测此类(prevent wrapped vacuum freeze) IO 风暴的来临呢?

首先需要测量几个维度的值。

.1. 表的大小以及距离它需要被强制vacuum freeze prevent wrap的年龄

.2. 每隔一段时间的XID值的采样(例如每分钟一次),采样越多越好,因为需要用于预测下一个时间窗口的XID。(其实就是每分钟消耗多少个事务号的数据)

.3. 通过第二步得到的结果,预测下一个时间窗口的每分钟的pXID(可以使用线性回归来进行预测)

预测方法这里不在细说,也可以参考我以前写的一些预测类的文章。

预测的结论包括 未来一段时间的总Freeze IO量,以及分时的Freeze IO量。

预测结果范例

Freeze IO 时段总量

作者  | 2016-6-14 22:31:20 | 阅读(55) |评论(0) | 阅读全文>>

Linux cgroup资源隔离各个击破之 - io隔离

2016-6-14 22:30:34 阅读53 评论0 142016/06 June14

Linux Cgroup blkio子系统的用法.

blkio子系统支持的两种IO隔离策略

.1. (Completely Fair Queuing 完全公平队列)cfq io调度策略,支持按权重分配IO处理的时间片,从而达到IO在各资源组直接的调度和限制的目的,权重取值范围100-1000。

通过以下两个文件进行配置。

blkio.weight 默认值 blkio.weight_device 块设备级的值 (major:minor weight) (优先级高于blkio.weight)

例子

echo 500 > blkio.weight echo 8:0 500 > blkio.weight_device

cfq 调度器以及其他IO调度器的介绍详见内核文档.

Documentation/block/

.2. 限制IOPS使用上限

例子如下

bytes/s echo "8:0 10485760" > /cgroup/blkio/test/blkio.throttle.read_bps_device io/s echo "8:0 10" > /cgroup/blkio/test/blkio.throttle.read_iops_device bytes/s echo "8:0 10485760" > /cgroup/blkio/test/blkio.throt

作者  | 2016-6-14 22:30:34 | 阅读(53) |评论(0) | 阅读全文>>

查看所有日志>>

 
 
 
 
 
 
 
 

浙江省 杭州市 狮子座

 发消息  写留言

 
PostgreSQL 高校实验室,企业,社区大联盟才是未来的方向.
 
QQ276732431
E-Mail digoal@126.com
博客等级加载中...
今日访问加载中...
总访问量加载中...
最后登录加载中...
 
 
 
 
 

日志分类

 
 
日志分类列表加载中...
 
 
 
 
 

FlagCounter

 
 
模块内容加载中...
 
 
 
 
 

新浪微博

 
 
模块内容加载中...
 
 
 
 
 
 
 
模块内容加载中...
 
 
 
 
 
 
 
模块内容加载中...
 
 
 
 
 
 
 
心情随笔列表加载中...
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016

GACHA-脖子以下全是腿的妹子

二次元同好交流新大陆

扫码下载App

注册 登录  
 加关注