PostgreSQL 递归查询一例
云栖社区问答中,一位网友的问题:one等于上一个one加上现在的money,语句怎么写?在PostgreSQL中,可以使用递归查询满足以上业务场景的需求:需要用到递归查询。postgres=# create table m(id serial primary key,money int, one int); CREATE TABLE postgres=# insert into...
View Article如何评估Greenplum master 空间以及segment元数据占用的空间
Greenplum master节点是用来存储元数据的,包括 :序列,表,临时表,分区,函数,视图,类型,操作符,规则,触发器 等。segment 上也会存储部分元数据,序列,表,临时表,函数,视图,类型,操作符,规则,触发器 等。master比segment更多的信息包括:分布策略,分区表,以及一些特殊的配置元数据。gp_distribution_policy pg_partition...
View Article如何用PostgreSQL解决一个人工智能语义去重的小问题
在云栖社区的问答区,有一位网友提到有一个问题:表里相似数据太多,想删除相似度高的数据,有什么办法能实现吗? 例如: 银屑病怎么治? 银屑病怎么治疗? 银屑病怎么治疗好? 银屑病怎么能治疗好? 等等 解这个问题的思路.1. 首先如何判断内容的相似度,PostgreSQL中提供了中文分词,pg_trgm(将字符串切成多个不重复的token,计算两个字符串的相似度)...
View ArticlePostgreSQL 如何计算两个时间点之间正常的工作日时间
create or replace function minus_weekend(timestamp, timestamp) returns interval as $$ declare s timestamp := $1; e timestamp := $2; sd date; ed date; i interval := interval '0'; x int; x1 interval; x2...
View Article怎样按一定时间间隔跳跃查询数据?
问题来自云栖问答,觉得比较好,所以记录一下:我的项目用的是MySQL,但也想同时请教下在Oracle、SqlServer中应该如何处理如下问题: 有数据表如下所示: 希望从表中抽取数据,要求两条记录的时间间隔至少2分钟 对下面图片中的数据而言,假如我查询的时间范围是从2014-08-10 23:20:00开始的, 则希望抽取到如下结果集: '83', '57', '10041', '74.27',...
View ArticleEDB xDB need pg_authid.rolcatupdate ?
PostgreSQL 9.5以前的版本,pg_authid有个字段rolcatupdate,用来标记用户是否有更新catalog的权限。...
View ArticlePostgreSQL 物联网黑科技 - 阅后即焚
在物联网应用场景中,有大量的传感器,会产生非常大量的消息以极高的并发进入数据库。这些数据如果直接进入面向OLAP场景设计的数据仓库,数据实时入库会成为瓶颈,并且OLAP系统很难接受非常高并发的请求。面对这样的应用场景,这些既要又要还要怎么满足呢?.1. 既要实时入库,.2. 又要实时分析,.3. 还要历史留档,应对随时变化的分析需求。实时入库比较容易满足,我前些天写过一篇 "PostgreSQL...
View ArticleMySQL 5.7 新特性 generated columns
MySQL 5.7的一个新特性,generated columnhttp://dev.mysql.com/doc/refman/5.7/en/create-table.html#create-table-generated-columns即generated column的值是普通column产生值,有点像视图,但是又有别于视图,因为它可以选择是否存储generated...
View ArticleGreenplum的全量备份介绍, gpcrondump
本节介绍一下Greenplum的全量备份。全量备份脚本#!/bin/bash GPHOME=/home/digoal/gphome # Replace with symlink path if it is present and correct if [ -h ${GPHOME}/../greenplum-db ]; then GPHOME_BY_SYMLINK=`(cd...
View ArticleGreenplum的全量恢复介绍, gpdbrestore
本节介绍一下Greenplum的全量恢复恢复时需要指定dump key ( 即gpcrondump时,每个数据库备份都带的时间戳)全量恢复需要考虑几个因素, DROP DATABASE, TRUNCATE TABLE, DROP TABLE.这些和gpcrondump或者gpdbrestore的参数有关。同时也关系到数据是否需要先被清除掉,然后从备份恢复。#!/bin/bash...
View ArticlePostgreSQL alter column type 1 to type 2 using express or auto cast
在使用数据库时,有些应用开发人员可能喜欢使用数值来表示布尔逻辑值,或者在最初定义一个字段的状态时使用的类型,将来不能表达所有的值。未来则可能需要对字段进行转换,例如数值转换为布尔,或者布尔转换为数值。还有的时候,一开始可能使用了大量的重复文本,在进行统计时,文本比整型的效率低,在进入仓库后可能需要字典化这些文本(例如APPNAME) , 也会涉及字段类型的转换。例子:postgres=#...
View ArticlePostgreSQL 行级全文检索
在一些应用程序中,可能需要对表的所有字段进行检索,有些字段可能需要精准查询,有些字段可能需要模糊查询或全文检索。这种需求对于应用开发人员来说,会很蛋疼,因为写SQL很麻烦,例子:postgres=# create table t(phonenum text, info text, c1 int, c2 text, c3 text, c4 timestamp); CREATE TABLE...
View Article如何追溯 PostgreSQL 慢查询当时的状态
数据库出现慢查询的原因很多,例如IO等待,CPU繁忙,执行计划异常,锁等待,等等。那么在发生慢查询后,如何能追溯慢查询当时的状态呢?下面给大家提供一种思路,.1. 首先,我们是如何监测慢查询的.2. 监测到慢查询后,需要采集哪些信息.3. 数据库内核层面能做什么.4. 如何分析如何实现?.1. 如何监测慢查询select datname, pid, usename,...
View ArticlePostgreSQL IDE pgadmin , edb postgres enterprise manager 查询慢的问题分析
PostgreSQL 的GUI客户端比较多,有开源的,也有商业的。用得比较多的可能是PgAdmin了,有些人可能会用EDB的PEM。但实际上这两个GUI都有一个小问题,在返回较大的结果集时,会非常的慢。例如 : 数据库端创建一个表,插入约30MB数据。postgres=> create table test (like pg_class); CREATE TABLE postgres=>...
View ArticlePostgreSQL SQL log duration time 源码分析
PostgreSQL 可以通过参数设置是否要记录SQL的执行时间,以及执行时间超过多少的SQL。注意这里的执行时间实际上包含了网络的传输时间。所以在遇到慢查询时,除了要排查数据库的问题,实际上还需要排查网络以及客户端的问题,因为客户端接收数据堵塞也会造成慢查询,就像我前天写的文章。 PostgreSQL IDE pgadmin , edb postgres enterprise manager...
View Articleiperf 测试网络性能指标
Iperf是一个网络性能测试工具,主要应用于LINUX服务器下面。可以测量最大TCP和UDP带宽,具有多种参数和特性,可以记录带宽,延迟抖动和数据包丢失,最大组和MTU等统计信息,通过这些信息可以发现网络问题,检查网络质量,定位网络瓶颈。Iperf在linux和windows平台均有二进制版本供自由使用。对于需要大量网络交互的产品,例如Greenplum,网络性能指标是一个很重要的指标。安装在需要测...
View ArticlePostgreSQL prepared statement和simple query的profile及性能差异
prepared statement是非常重要的高并发SQL优化手段之一,效果也显而易见。下面是测试,同时观察绑定和不绑定的情况下的profile。在未使用绑定变量的时候,新增或上升了一些硬解析相关的CODE。测试数据postgres=# create table test(id int primary key, info text); postgres=# insert into test...
View Article如何用 sysbench 并行装载 PostgreSQL 测试数据
本文参考老唐的使用sysbench和sqlldr并行装载Oracle测试数据而成。http://blog.osdba.net/538.htmlsysbench原来自带的lua数据装载脚本是使用以下方式串行装载的,速度比较慢(比单条insert快,但是比COPY慢)。insert into table1 values (),(),().... insert into table2 values...
View Article