公益是一辈子的事, I am digoal, just do it. 阿里云数据库团队, 擅长PolarDB, PostgreSQL, DuckDB, ADB等, 长期致力于推动开源数据库技术、生态在中国的发展与开源产业人才培养. 曾荣获阿里巴巴麒麟布道师称号、2018届OSCAR开源尖峰人物.
Linux Cgroup blkio子系统的用法. blkio子系统支持两种IO隔离策略 .1. cfq io调度器,支持按权重分配IO处理的时间片,从而达到IO调度和限制的目的,权重取值范围100-1000。通过以下两个文件进行配置。 blkio.weight
之前分享过阿里云RDS PG支持分区表的文章https://yq.aliyun.com/articles/113今天要给大家带来另一个好消息,PostgreSQL 社区版本终于要有集成的分区表特性了,再也不用为写分区触发器烦恼了。(很多人认为PG分区表就像是一粒老鼠屎,坏了一锅汤,深有同感。社区终.
物联网兴起,GPS终端也越来越普及,比如车载的终端,带GPS功能的手表,手机等等。比如滴滴打车,出租车都记录了车辆的行驶的位点。位点通常会带有终端ID,经纬度,时间等信息。但是我们如何将这些点的信息合并成车辆的运行轨迹呢?并不是粗暴的聚合这么简单。因为车辆在使用过程中会遇到等红灯,停车等乘客,穿越.
部分内容转载自互联网https://en.wikipedia.org/wiki/B-treehttps://en.wikipedia.org/wiki/B%2B_tree B-Tree 为了描述B-Tree,首先定义一条数据记录为一个二元组[key, data],key为记录的键值,对于不同
在Linux中,要了解进程的信息,莫过于从 proc 文件系统中入手去看。proc的详细介绍,可以参考内核文档的解读,里面有很多内容 yum install -y kernel-doc cat /usr/share/doc/kernel-doc-3.10.0/Documentation/
想必大家都参加过一年一次的体检,在进行尿液体检的时候,医生会告诉你要留中段尿!要留中段尿!要留中段尿!重要的事情说三遍。 为什么尿液化验要取中段尿呢?因为前段尿和后段尿容易被污染,所以在进行尿常规和尿培养检查时都建议留取中段尿。 我们在做数据库压测时,也会遇到类似的情况,比如一个持续数天的T
关于PostgreSQL 9.6 基于CPU并行计算的文章,之前写过几篇,请参考https://yq.aliyun.com/articles/44655https://yq.aliyun.com/articles/44649 本文主要是对EXT4和XFS进行测试比较,两者在并行度上的性能差异。文件
本文对比的是PostgreSQL 9.4, 9.5, 9.6, 以及某基于9.4的国产数据库在ECS上的性能。 硬件环境和搭配 Intel(R) Xeon(R) CPU E5-2680 v3 @ 2.50GHz 32核 128G 内存 500G 高效本地SSD , 15000
PostgreSQL 社区版本的ecpg在一些预处理的用法上和Oracle的PROC有一些不一样的地方,使用者需要注意。例如社区版本的ecpg不支持c里面使用的#ifdef或者#ifndef这样的预处理语法,需要用其他写法来替代。所以你如果使用#ifdef这样的写法在.pgc里面,在使用ecpg编.
给企业做BI分析的开发小伙伴,可能经常会遇到这样的痛苦,运营人员今天问你要这样的维度报表,明天换个维度又来折腾你。对于开发的小伙伴,确实是非常痛苦的事情,那么有什么好的应对策略,而且对运营来说可能会显得比较高逼格呢? 多维分析派上用场,比如你的表有10个字段,允许运营人员以任意字段组合,产生报
ECPG 是在C中嵌套SQL的一种用法。写好pgc文件后,需要使用ecpg程序将pgc编程成C文件来使用。 详细的用法请参考https://www.postgresql.org/docs/9.5/static/ecpg.html ecpg的用法, 以EXEC SQL开头表示后面是SQL写法
PostgreSQL 的B-Tree索引页分为几种类别 meta page root page # btpo_flags=2 branch page # btpo_flags=0 leaf page # btpo_flags=1 如果即
Oracle有个功能,可以将用户插入的NULL值替换成指定的值。这个功能和default值的用意并不一样,default是指用户没有指定值时,使用default值代替。例如 postgres=# alter table test alter column id set default 1;
有些时候,有些程序可能需要依赖图形界面才能启动,例如安装Oracle时(其实oracle支持命令行安装),例如需要启动一个图形界面的浏览器如firefox。作为服务端的系统,通常不会安装臃肿的图形界面。那么如何在不安装图形界面的的情况下启动图形界面的?听起来很矛盾,但是实际上是可行的。 X Win
用pgbench使用短连接压测一个PostgreSQL数据库(select 1),其他数据库亦如此。 $ vi test.sql select 1; $ export PGPASSWORD=digoal $ pgbench -M simple -C -n -r -P 1 -c 800
alidecode是RDS PG提供的一个逻辑复制插件,使用它,可以将RDS PG通过逻辑复制的方式,把数据同步到线下的PostgreSQL。同时还支持将MySQL的数据同步到PostgreSQL。目前alidecode还没有对外开放下载,敬请期待。下面是使用方法。 准备工作,提交工单,开放用户的
这样一段正常的兼容ORACLE的代码,在使用社区版本的psql连接到PPAS时,执行异常 postgres=> create table about_we (id int, info text); create sequence SEQ_ABOUT_WE_ID; postgres=> C
PostgreSQL 9.6 统计信息收集进程pgstat,增加了等待事件信息的收集,并且用户可以获得backend的等待事件信息。 目前支持的等待事件分类如下src/include/pgstat.h /* ---------- * Wait Classes * --------
PostgreSQL 持续在基于fdw的sharding技术上深耕,9.6开始,在符合条件的前提下,支持JOIN和SORT下推到数据节点执行。下面是一个测试创建几个shard库 for subfix in 0 1 2 3 do psql -c "create database db$su
源端 CentOS 7 PostgreSQL 9.5.2 , listen port 1922 公网IP 101.xxx.xxx.171 skytools 3.2.6 目标端 RDS PG xxx.digoal.pg.rds.aliyuncs.com port=3433 u
很多业务也行有这样的需求,新的数据会不断的插入,并且可能会有更新。对于更新的数据,需要记录更新前的记录到历史表。 这个需求有点类似于审计需求,即需要对记录变更前后做审计。我以前有写过使用hstore和触发器来满足审计需求的文档,有兴趣的同学可以参考http://blog.163.com/digoa
安装驱动 yum install -y unixODBC.x86_64 yum install -y postgresql-odbc.x86_64 查看驱动配置 cat /etc/odbcinst.ini # Example driver definitions
bloom filter是一个有损过滤器,使用有限的比特位存储一些唯一值集合所产生的bits。通过这些bits可以满足这样的场景需求,给定一个值,判断这个值是否属于这个集合。例如 create table test(c1 int); insert into test select trunc
PostgreSQL 的版本冻结是一个比较蛋疼的事情,为什么要做版本冻结呢?因为PG的版本号是uint32的,是重复使用的,所以每隔大约20亿个事务后,必须要冻结,否则记录会变成未来的,对当前事务"不可见"。冻结的事务号是2 src/include/access/transam.h #def
PostgreSQL 自带的表是堆表,数据按行存储在HEAP PAGE中,在btree索引中,除了存储字段的value,还会存储对应的ctid(即行号),检索记录也是通过行号进行检索的呢。 因此通过行号是可以快速检索到记录的。行号的写法是(page_number, item_number),数据块
PostgreSQL 流复制功能增强,多种模式可选。最强模式满足金融级可靠性要求。最高级别允许多个standby , 同时事务提交时,需要等待多个standby apply xlog。 .1. 事务提交保护级别增强如下支持5个事务提交保护级别,确保事务提交时,XLOG的几种状态。synchr
PostgreSQL 9.6的并行复制一发,相信已经有很多小伙伴已经开始测试了,我昨晚测试了一个场景是标签系统类应用的比特位运算,昨天测试发现性能相比非并行已经提升了7倍。昨天没有仔细研究代码,发现怎么测都只能用8个并行,今天看了一下代码,终于找到端倪了,其实并行度是由几个方面决定d , 决定并行.
在标签系统中,通常会有多个属性,每个属性使用一个标签标示,最简单的标签是用0和1来表示,代表true和false。我们可以把所有的标签转换成比特位,例如系统中一共有200个标签,5000万用户。那么我们可以通过标签的位运算来圈定特定的人群。这样就会涉及BIT位的运算。那么我们来看看PostgreS.
云用户反映的一个问题,引发一系列安全思考。以下是创建PostgreSQL schema的语法说明页的一个note:http://www.postgresql.org/docs/9.5/static/sql-createschema.html According to the SQL standar
在一些企业里面,通常会在数据库中创建一些只读用户,这些只读用户可以查看某些用户的对象,但是不能修改或删除这些对象的数据。这种用户通常可以给开发人员,运营人员使用,或者数据分析师 等角色的用户使用。因为他们可能关注的是数据本身,并且为了防止他们误操作修改或删除线上的数据,所以限制他们的用户只有只读的.
本文旨在帮助用户理解PostgreSQL的逻辑结构和权限体系,帮助用户快速的理解和管理数据库的权限。 逻辑结构 最上层是实例,实例中允许创建多个数据库,每个数据库中可以创建多个schema,每个schema下面可以创建多个对象。对象包括表、物化视图、操作符、索引、视图、序列、函数、... 等
PostgreSQL GIN索引的结构如下图 :假设这个表有2列,一列存储INT,另一列存储INT数组,最左边的表示记录的行号。 假设对INT数组建立GIN索引,那么GIN索引会记录每个数组element对应的行号,对于行号多的,会存成LIST,然后在索引中指向该list。 好了接下来分析一下l
今天要说的这个优化是从前面一篇讲解《performance tuning case :use cursor or trigger replace group by and order by》http://blog.163.com/digoal@126/blog/static/16387704020.
本文将对一个任意范围按ID分组查出每个ID对应的最新记录的CASE做一个极致的优化体验。优化后性能维持在可控范围内,任意数据量,毫秒级返回,性能平稳可控。比优化前性能提升1万倍。 CASE如下: 有一张数据表,结构: CREATE TABLE target_position
前模糊,后模糊,前后模糊,正则匹配都属于文本搜索领域常见的需求。PostgreSQL在文本搜索领域除了全文检索,还有trgm是一般数据库没有的,甚至可能很多人没有听说过。对于前模糊和后模糊,PG则与其他数据库一样,可以使用btree来加速,后模糊可以使用反转函数的函数索引来加速。对于前后模糊和正则.
云为我们提供了便利,降低了开发和运维的成本。但是也必须思考一个问题,我们的云组件之间的的网络延迟?(相比较局域网的服务器和服务器之间)你可以用各种方法测试验证一下。以往我们把数据放在数据库,数据库只提供简单的增删改查,大部分的业务逻辑放在应用服务器来完成。但是在云时代,如果我们还这样的话,应用服务.