
转载
文章平均质量分 80
Postgresql中国用户会
Postgresql中国用户会致力于PostgreSQL在中国的推广
主要负责PostgreSQL各大会议在中国的信息发布,技术牛文的推广。
展开
-
CitusDB, PostgreSQLs Use Hadoop Distribute Query - 4 : Query Trace 1
上一篇blog介绍了CitusDB如何查询HDFS中的结构化数据, 有兴趣的朋友可以参考如下http://blog.163.com/digoal@126/blog/static/1638770402013221475935/本文主要针对CitusDB Query Data IN HDFS进一步的看一看CitusDB的Distributed Query.环境还是上一篇BLOG转载 2015-10-14 22:44:58 · 700 阅读 · 0 评论 -
PostgreSQL range gist index 20x+ speedup than Mysql index combine query
今天一位兄弟跟我抱怨MYSQL里面查IP地址库并发几千每秒的查询数据库就抗不住了.于是问他要来了他们的IP地址库数据和查询用的SQL以及MYSQL里面的表结构。把数据转到PostgreSQL里面做一下相对应的压力测试,看看PostgreSQL的表现。MYSQL里面的表结构如下 : CREATE TABLE ip_address_pool ( id int(10)转载 2015-10-14 22:32:25 · 506 阅读 · 0 评论 -
PostgreSQL数据库 OLTP高并发请求性能优化
在多核系统中,一般TPS会随并发数的增加而提升,但是当并发数超过一定的数值(如CPU核数的2到3倍以后),性能开始下降,并发数越高,下降越严重。例子:更新500万记录表中的1条随机记录。开8000个并发。create table test_8000 (id int primary key, cnt int default 0);insert into test_8000 s转载 2015-10-14 22:30:06 · 4205 阅读 · 0 评论 -
PostgreSQL 秒杀场景优化
秒杀场景的典型瓶颈在于对同一条记录的多次更新请求,然后只有一个或者少量请求是成功的,其他请求是以失败或更新不到告终。例如,Iphone的1元秒杀,如果我只放出1台Iphone,我们把它看成一条记录,秒杀开始后,谁先抢到(更新这条记录的锁),谁就算秒杀成功。例如:使用一个标记位来表示这条记录是否已经被更新,或者记录更新的次数(几台Iphone)。update tbl se转载 2015-10-14 22:29:32 · 2088 阅读 · 0 评论 -
PostgreSQL return result "row by row" or "once all"? please see pg driver
在PostgreSQL中, 执行一条SQL语句时, 数据是一次性返回还是逐条返回显示的呢?这里有一个问题, 如果是逐条返回, 可能返回到中途时出现异常例如网络中断, 那么客户端需要有处理这种异常的能力.而如果是一次性返回所有结果集的话, 即数据库驱动将所有数据保存到本地后返回给客户端, 那么不会出现上述问题, 但是其他问题又来了, 如果结果集很大的话, 要等到第一条数据的显示可能要转载 2015-10-14 20:10:00 · 1010 阅读 · 0 评论 -
Primary & Standby with 2 HOST HA for PostgreSQL (auto failover failback)
元旦2天, 弄了个小玩意, 适合2台主机, 使用PostgreSQL流复制组建HA.实现自动的failover和failback.已经提交到github, 主备角色各一个虚拟IP.https://github.com/digoal/PostgreSQL_HA_with_primary_standby_2vip有此类需求的朋友可以下载测试. 之前还转载 2015-10-14 21:14:52 · 1211 阅读 · 0 评论 -
在PostgreSQL中用线性回归分析linear regression做预测 - 例子2, 预测未来数日某股收盘价
请先参考 : http://blog.163.com/digoal@126/blog/static/1638770402015224124337/http://blog.163.com/digoal@126/blog/static/16387704020152245224236/http://blog.163.com/digoal@126/blog/static/16387转载 2015-10-14 21:05:27 · 978 阅读 · 0 评论 -
PostgreSQL aggregate function 1 : General-Purpose Aggregate Functions
PostgreSQL支持较多的聚合函数, 以PostgreSQL 9.4为例, 支持例如一般性的聚合, 统计学科的聚合, 排序集聚合, 假象集聚合等.本文将对一般性聚合函数举例说明其功能和用法.以下图表参考 : http://www.postgresql.org/docs/9.4/static/functions-aggregate.htmlFunc转载 2015-10-14 21:08:40 · 658 阅读 · 0 评论 -
PostgreSQL xlog $PGDATA and zfs snapshot based central backup & PITR case
最近在写一个集中式的PostgreSQL基于块的增量备份的CASE.(因Oracle有块级别增量备份, PG这块是个空白, 不过可以通过第三方软件来实现)视频参考6月28日的杭州PG交流视频http://pan.baidu.com/share/home?uk=1982970774#category/type=0方案参考http://blog.16转载 2015-10-14 21:18:16 · 598 阅读 · 0 评论 -
performance tuning case: array search & date order by , data updated daily (use cursor solve it)
一位PG社区的朋友提到的一个应用场景,目前遇到性能问题。数据结构大概是这样的,包含一个主键,一个数组,一个时间,其他字段。请求分析:有检索需求,比较频繁。查找数组中包含某些元素的记录,并按时间排序输出所有符合条件的记录,检索到的符合条件的记录可能上万条,也可能较少。有插入需求,量不大。有更新需求,一条记录最多一天会被更新一次,当然也可能不会被更新。无删除需求。数据量在千转载 2015-10-14 22:22:08 · 456 阅读 · 0 评论 -
PostgreSQL can continue when postmaster killed
数据库主进程挂了,原有的连接还能继续操作数据库,你信吗?PostgreSQL可以做到,并且原来的进程对数据库的操作是持久化的,不会丢数据哦。这得益于PostgreSQL的进程结构设计。而且postmaster进程只负责了简单的工作,例如监听端口。(有人会问了,wal writer, backgroup writer进程都挂了,数据还能持久化?)没错,因为backend process也可以转载 2015-10-14 21:37:54 · 1101 阅读 · 0 评论 -
请勿滥用unlogged table & hash index
unlogged table和hash index同样都不会写XLOG,所以如果你用流复制来搞HA,一定概要搞清楚一个问题,切换到备库的话unlogged table数据会被清掉,而hash index也没有,走hash index会失败。unlogged table 的风险以及修复手段可以见 :http://blog.163.com/digoal@126/blog/sta转载 2015-10-14 21:44:10 · 681 阅读 · 0 评论 -
cgroup告诉你如何计算 PostgreSQL 数据库实例用了多少内存
当我们在一个操作系统中,启动了多个数据库实例时,我们也许会控制各个实例可以使用的内存,通过cgroup来控制是一种手段。显然,使用cgroup也可以知道你的实例使用了多少内存。例子:在内存组新建一个组[root@digoal ~]# cd /cgroup/memory[root@digoal memory]# mkdir cg1[root@digoal memory转载 2015-10-14 21:48:51 · 1240 阅读 · 0 评论 -
don't mistake the float/double's display & real value.
使用单精或双精类型时, 我们查询出来的值可能与真实存储的值有一定差别.这里体现了眼见不为实的特征.以下是float4, float8的输出函数.src/backend/utils/adt/float.c/* * float4out - converts a float4 number to a str转载 2015-10-14 21:51:50 · 403 阅读 · 0 评论 -
PostgreSQL Server Encoding sql_ascii attention
群里一位兄弟问到的一个问题 : " 我有一个postgresql,比较大,编码是sqlascii码,我想转换成有utf8 ,有方案可行吗? "如果使用场景中未用到non-ASCII编码的字符, 那很幸运, 导出导入就可以了.但是如果场景中使用了non-ASCII编码的字符, 那就没那么幸运了, 因为SQL_ASCII字符集不会对non-ASCII字符做合法性检验, 同时不做任何的编转载 2015-10-14 22:10:21 · 2249 阅读 · 0 评论 -
PostgreSQL customize inet_aton, inet_ntoa function in text type like MySQL.
PostgreSQL的类型支持比较强大, 除了主流的文本, 日期, 时间, 数字, 还支持JSON, 货币, 网络, 几何, 枚举, 数组, 范围, XML, 布尔, 全文检索, 比特, 复合等数据类型. MySQL的类型支持比较薄弱, MySQL里面没有专门的网络数据类型, 如果要存储网络信息, 一般的做法是转换成INT类型来处理.PostgreSQL当然没有必要这么做, 因为已转载 2015-10-14 22:08:36 · 1526 阅读 · 0 评论 -
PostgreSQL 在3D 数据内容管理中的应用
前段时间在中华数据库大会遇到一位朋友询问关于如何使用PostgreSQL存储3D建模的数据,应用场景大概是找到最合脚的鞋子。大概是将生产线上所有鞋子的内部空间数据化,同时将人的脚的三维数据化,存入数据库。找到脚和鞋子最匹配的组合。这里涉及到3D数据的建模和存储,以及数据的使用。好在PostgreSQL有非常丰富的接口,例如用户可以自定义数据类型,以及自定义数据访问方法,自定转载 2015-10-14 22:03:42 · 1488 阅读 · 0 评论 -
使用 PGStrom 2 (GPU JOIN, BulkScan, GpuPreAgg, ...)
BUG fixed, 测试了一下。JOIN性能确实好很多,主要体现在。1. BuldkScan300毫秒左右,而seqscan需要1500毫秒。2. GpuJoin约4.5秒。而hash join约8秒。postgres=# explain (analyze,verbose,costs,buffers,timing) select count(*) from t1 na转载 2015-10-14 22:26:20 · 716 阅读 · 0 评论 -
PostgreSQL 9.5 新特性汇总
PostgreSQL 9.5还未发布,以下是已经commit的特性,也就是说PostgreSQL 9.5 release时肯定会包含的特性。如需了解最新信息,请参考:https://commitfest.postgresql.org/http://git.postgresql.org/gitweb/?p=postgresql.git;a=summaryhttp://转载 2015-10-14 22:50:56 · 1354 阅读 · 0 评论 -
CitusDB, PostgreSQLs Use Hadoop Distribute Query - 2 : CitusDB file_fdw usage
本文的安装以及测试基于上一篇BLOG《CitusDB, PostgreSQLs Use Hadoop Distribute Query - 1 : Single HOST CitusDB Cluster install》的环境.http://blog.163.com/digoal@126/blog/static/1638770402013219840831/CitusDB安装完后,转载 2015-10-14 22:41:21 · 903 阅读 · 0 评论 -
CitusDB, PostgreSQLs Use Hadoop Distribute Query - 1 : Single HOST CitusDB Cluster install
测试环境 : CentOS release 5.7 (Final)内存 : 96GBCPU : 2 * Intel(R) Xeon(R) CPU E5504 @ 2.00GHz硬盘 : OCZ RevoDrive31. 下载操作系统对应的citusdb包wget http://packages.citusdata.com/readlin转载 2015-10-14 22:39:45 · 1166 阅读 · 0 评论 -
PostgreSQL index scan enlarge heap page scans when index and column correlation small
今天在讲解PostgreSQL 性能优化的 成本因子校准时发现一个奇异的问题, 索引扫描带来了巨大的heap page scan数目.视频如下 : http://www.tudou.com/programs/view/yQ0SzBqx_4w/如果数据库的单个数据块很大的话, 这种情况带来的负面影响也将被放大. 例如32k的block_size显然比8k的block_size转载 2015-10-14 22:31:26 · 634 阅读 · 0 评论 -
Oracle FORALL & PostgreSQL ? op any|all (ARRAY)
On my laptop running Oracle Database 11g Release 2, it took 4.94 seconds to insert 100,000 rows, one at a time. With FORALL, those 100,000 were inserted in 0.12 seconds. Wow!Instead of doing tha转载 2015-10-14 22:27:37 · 552 阅读 · 0 评论 -
PostgreSQL aggregate function 2 : Aggregate Functions for Statistics
前面一篇对PostgreSQL支持的一般聚合函数做了一些实例讲解, http://blog.163.com/digoal@126/blog/static/16387704020152223539859/本文将讲解一下统计类的聚合函数.在此前我分别以相关性函数corr和计算总体/样本 方差, 标准方差的函数variance, var_pop, var_samp, stddev转载 2015-10-14 21:09:25 · 611 阅读 · 0 评论 -
How to prevent object bloat in PostgreSQL
经常看到有人说表又膨胀了,那么导致对象膨胀的常见原因有哪些呢?1. 未开启autovacuum对于未开启autovacuum的用户,同时又没有合理的自定义vacuum调度的话,表的垃圾没有及时回收,新的数据又不断进来,膨胀是必然的。(新的数据包括插入和更新,更新产生新版本的记录)2. 开启了autovacuum, 但是各种原因导致回收不及时,并且新的转载 2015-10-14 21:26:29 · 544 阅读 · 0 评论 -
PostgreSQL zhparser & english parser, query, insert performance
本文主要测试一下PostgreSQL 中英文分词的性能,以及带索引的情况下的插入,查询性能。测试环境:CPU:Intel(R) Xeon(R) CPU X7460 @ 2.66GHzMEM:60GOS:CentOS 6.x x64PostgreSQL 9.4.1中文分词使用 http://blog.163.com/digoal@126/blog/s转载 2015-10-14 21:31:37 · 1280 阅读 · 0 评论 -
londiste3 copy table' snapshot & PostgreSQL logical replication's snapshot 不同之处
PostgreSQL有物理复制,也有逻辑复制。物理复制是持续的从XLOG读取block data在对应的物理文件实行recovery的过程。建立物理备份的standby时,会强制开启一个检查点,然后拷贝数据文件,拷贝完后的数据库其实是不一致的,没有关系,只要从检查点开始的所有XLOG都在,就可以恢复。检查点我们可以通俗的认为是一个snapshot。那么对于逻辑复制,snap转载 2015-10-14 21:34:17 · 664 阅读 · 0 评论 -
从文件系统恢复遗失的UNLOGGED table's datafile.
注意PostgreSQL的unlogged table是不记录xlog的,所以在备库上没有unlogged table的数据记录。同时,数据库在进入恢复状态时,为了保证数据的一致性,postgresql会自动清除unlogged table的数据文件。那么问题来了,万一你不小心误创建了unlogged table,你可能一开始会没有感知,但是一旦发生以下情况,你会发现数据不见了。转载 2015-10-14 21:46:06 · 612 阅读 · 0 评论 -
结巴分词
结合PostgreSQL plpython和language transform可以很方便的实现中文分词。https://github.com/fxsjy/jiebahttp://www.postgresql.org/docs/9.5/static/sql-createtransform.htmlhttp://www.postgresql.org/docs/9.5/转载 2015-10-14 21:55:29 · 1289 阅读 · 0 评论 -
PostgreSQL json jsonb 支持的value数据类型,如何构造一个jsonb
PostgreSQL 支持JSON已久,那么JSON的value中支持哪些类型呢?目前支持string, numeric, boolean (true, false), null。 区分大小写哦。/* * Recursive Descent parse routines. There is one for each structural * element in a转载 2015-10-14 22:07:41 · 7730 阅读 · 0 评论 -
PostgreSQL trigger introduction - 2
以PostgreSQL 9.2为例, 介绍触发器的使用.接上一篇 : http://blog.163.com/digoal@126/blog/static/1638770402013283547959/包含如下内容 : 一、1. 什么是触发器? 触发器有什么用? 创建触发器的语法?2. 什么是触发器函数, 触发器函数可以用哪些语言编写转载 2015-10-14 22:12:47 · 476 阅读 · 0 评论 -
useful function & operator & custom operator for Row and Array Comparisons
社区里一位同学的需求:请问 有什么办法可以判断 ,一个数组里面至少一个元素在一个范围之间?select 1 any(ARRAY[0.8,3.2]) and 3 >= any(ARRAY[0.8,3.2])例如,这个,我喜欢的结果是f我们注意一下,这个SQL实际上返回的是TRUE,因为分开来看1 3 >= any(ARRAY[0.8,3.2])返回的也是转载 2015-10-14 22:24:55 · 648 阅读 · 0 评论 -
给PostgreSQL爱好者的参考资料
推荐书籍:概念书籍:《PostgreSQL Introduction and Concepts》开发书籍:《PostgreSQL开发必备参考手册》管理类书籍:《PostgreSQL 9 Administration Cookbook》《PostgreSQL 9.0 High Performance》《PostgreSQL转载 2015-10-14 22:50:15 · 4758 阅读 · 0 评论 -
pg_shard PostgreSQL数据库分片
如果你的GCC版本第一4.6,那么首先要安装一个高版本的GCC,因为pg_shard里面用了gcc 4.6以后新加的特性。# yum install -y gmp mpfr libmpc libmpc-devel# wget http://gcc.cybermirror.org/releases/gcc-4.9.3/gcc-4.9.3.tar.bz2# tar -jxvf gcc-4.9.3.转载 2015-10-14 22:47:02 · 4505 阅读 · 0 评论 -
pg_clog的原子操作与pg_subtrans(子事务)
如果没有子事务,其实很容易保证pg_clog的原子操作,但是,如果加入了子事务并为子事务分配了XID,并且某些子事务XID和父事务的XID不在同一个CLOG PAGE时,保证事务一致性就涉及CLOG的原子写了。PostgreSQL是通过2PC来实现CLOG的原子写的。1. 首先将主事务以外的CLOG PAGE中的子事务设置为sub-committed状态。2. 然后将主事务转载 2015-10-14 20:41:32 · 1855 阅读 · 0 评论 -
PostgreSQL extend function - C example
用C写PostgreSQL扩展,有很多例子可以参考。其中一些来自PostgreSQL的contrib, 还有一些来自PostgreSQL自身的adt函数。当然你还可以去pgfoundry和pgxn还有github上找到很多例子。以PostgreSQL自己提供的函数为例,看看如何找到自己需要的例子,例如我要写返回record类型的函数查找这些例子postgre转载 2015-10-14 20:46:46 · 984 阅读 · 0 评论 -
PostgreSQL数据库监控中的统计学 - 对象空间的数据分布图
有时,我们为了直观的显示对象的空间占用及分布情况,我们可能会以图表的形式展示。通常情况下,我们可以根据需求,以柱状图或者聚集图的形式来展示,从各个维度来了解数据空间占用的分布情况,例如:1. bucket分布,就是按大小排序,选定要划分为几个bucket,每个bucket放同样数量的对象,输出bucket的边界,形式和pg_stats.histogram_bounds的输出类似。方法举转载 2015-10-14 20:54:30 · 562 阅读 · 0 评论 -
PostgreSQL attr correlation for values(logical order) & ctid (physcial order)
PostgreSQL统计信息中, 有一个相关性的统计, 在pg_stats.correlation中可以查看到, 统计值范围从-1到1, 趋向于-1表示逆向相关, 趋向于1表示正向相关, 趋向于0表示不相关.postgres=# \d pg_stats View "pg_catalog.pg_stats" Column | Ty转载 2015-10-14 20:57:55 · 381 阅读 · 0 评论 -
fast & safe upgrade to PostgreSQL 9.4 use pg_upgrade & zfs
[更新]已使用pg_upgrade顺利将一个8TB的生产数据库(包含表, 索引, 类型, 函数, 外部对象等对象大概10万个)从9.3升级到9.4, 升级比较快(约2分钟), 因为数据库较大后期analyze的时间比较长, 不过你可以将常用的表优先analyze一下, 就可以放心大胆的提供服务了.PostgreSQL 9.4于昨天(2014-12-18)正式转载 2015-10-14 21:16:45 · 951 阅读 · 0 评论 -
PostgreSQL sort or not sort when group by?
朋友的一个CASE,在一个查询中为什么group by用到了sort?其实这也是优化器的选择问题,只要成本最低,就有可能选择sort。当然如果hashagg的成本更低,那么就会选择hashagg。CASE:postgres=# create table t1(c1 int,c2 int,c3 int,c4 int);postgres=# insert into t1 s转载 2015-10-14 21:36:39 · 571 阅读 · 0 评论