postgreSQL 语言设计
OK_boom
大龄搬砖工,酷爱计算机技术,java/C#/android/free pascal/C++。
展开
-
一不小心踩了数据库引擎的坑
相当一组sql,为了获取输入的一个或多个工单的md5值(3个表的最后修改时间的MD5值)结果显示,当输入多于一个工单时的工单的md5值和输入单个工单时的md5值不一样:把md5去掉看原数据,结果发现多工单一起查时,这个58784返回的内容与单个工单查时的排序输出不一致,:多个工单查:2021-11-26 07:30:29,2021-08-17 14:27:45.051554,2021-08-11 19:45:52.744543单个工单查:2021-11-26 07:30:29,2021-08-1原创 2021-12-10 14:24:27 · 543 阅读 · 0 评论 -
Postgresql的json数组在java/mybatis的匹配
pg的table schema:CREATE TABLE tah_so_info( salesid character varying(20) NOT NULL, ... gentlementpo character varying(20), lines json[], methodofpayment character varying(15), modeofdelivery character varying(15), ... CONSTRAINT tah_pkey.原创 2021-08-27 16:37:26 · 1476 阅读 · 0 评论 -
快速生成slony初始化配置表(找出带主键的表)
由于slony是逻辑复制, 可以自定义复制哪些表, 但是每个表需要有主键, 那么几百个表不可能逐一加到slony脚本里面, 所以写了一段sql找出所有带主键的表:SELECT tablename ,pk_name FROM pg_tables left join (select pg_class.relname ,/*pg_attribute.attname as colname,pg_type.typname as typename,*/pg_constraint.co...原创 2021-01-14 15:57:45 · 188 阅读 · 0 评论 -
Postgresql 查阻塞源
先确定当前有哪些pid被阻塞SELECT pid,waiting,query_start,query FROM pg_stat_activity where waiting返回再根据当前的pid查阻塞源资料select * from (SELECT procpid, start, now() - start AS lap, current_query FROM (SELECT backendid, pg_stat_get_backend_pid(S.bac原创 2020-08-12 17:44:56 · 1217 阅读 · 0 评论 -
PostgreSQL 13新特性之二: 支持异构分区表逻辑复制。
作者简介谭峰,网名francs,PostgreSQL中文社区委员,《PostgreSQL实战》作者之一,《PostgreSQL 9 Administration Cookbook》译者之一,致力于PostgreSQL技术分享,博客https://postgres.fun,三墩IT人。背景PostgreSQL 13 的逻辑复制新增了对分区表的支持,使得分区表也能够进行逻辑复制。实现方式:PostgreSQL 13 版本CREATE SUBSCRIPTION命...转载 2020-07-30 08:49:47 · 723 阅读 · 0 评论 -
Postgresql的行锁测试
事务A在修改一条记录在未退出前:1/事务B可以用select来检索这条记录(旧的拷贝),直至事务A 提交了, 这条记录才能被其他事务可见.2/事务B如果想update这条记录或者用select … for update 来锁定这条记录,则会处于等待状态,直至事务A完结事务A用select for update锁定记录在未退出前:1/事务B 可以用select, 但是用select for update来试图锁定相同记录的话会处于等待状态,直至事务A完结2/事务B 如果想update或del..原创 2020-07-03 15:55:38 · 2653 阅读 · 0 评论 -
一次停电不正常关机导致Postgresql服务无法启动的解决
无法启动时,应该看一下logfile发生了什么事:vi /home/postgres/logfile,一般突然断电关机会留下pid文件未删除导致出现pre-existing shared memory block这个错误,删除postmaster.pid即可.[root@DGNEWDEV system]# ll /live/db/data/postmaster.pid-rw---...原创 2020-03-21 09:24:38 · 2126 阅读 · 0 评论 -
PostgreSQL 12 新特性解读之三| 分区表DML性能大辐提升
作者介绍谭峰,网名francs,《PostgreSQL实战》作者之一,《PostgreSQL 9 Administration Cookbook》译者之一,PostgreSQL中文社区委员,致力于PostgreSQL技术分享,博客https://postgres.funPostgreSQL 的分区表个人认为是PostgreSQL比较薄弱的环节,老版本的分区表通过继承表和触发器...转载 2019-10-17 14:28:49 · 1802 阅读 · 0 评论 -
Postgresql的select优化,快200倍
对于庞大的数据,检索sql的编写要格外小心,有很多平时不注意的sql可能就会变成瓶颈。 比如,我们有个系统,其中t96_pd_log表,记录数8000w多,在开发阶段乃至用了那么多年都没问题,最近却发生频繁死锁的问题,查数据库后台发现问题出在一个select语句上,它耗时高达2.4-2.7s,这对于一个需要高并发的系统来说当然是致命的。 数据表t96_pd_l...原创 2019-07-06 09:53:56 · 4197 阅读 · 2 评论 -
PostgreSQL 11 分区表用法及增强
作者:瀚高软件 杨杰发布:2018-06-15欢迎大家踊跃投稿,投稿信箱:press@postgres.cn简介PostgreSQL 10 是第一个支持内置声明式分区表的版本。支持 range、list 分区,与以前的版本相比,提供了显著的性能和易用性优势,但却忽略了许多功能特性和性能优化。PostgreSQL 11 为分区表功能提供更多的改进。这些特性包括:hash 分区、索引...转载 2019-06-11 17:15:04 · 6421 阅读 · 0 评论 -
测试PostgreSQL行级锁
https://blog.csdn.net/liyazhen2011/article/details/83379225转载 2019-05-18 08:52:52 · 812 阅读 · 0 评论 -
Postgresql用Postgresql的窗口函数搞定"直至本期累计"问题
今年个税改革从每月工资作为基数扣税改为按年工资作为基数扣税, 需要新开一个表记录每个职员每期工资数据CREATE TABLE xx_tax_trx ( fx_payperiod varchar (6) NOT NULL , --工资月份 fx_staff_id varchar (8) NOT NULL , --职员编号 fx_tax_base numeri...原创 2019-04-04 14:56:06 · 1472 阅读 · 0 评论 -
用JDBC读取postgresql json类型的数据
public static class RecBean{ public String f1; public String f2; public String f3; } @Test public void testObjectAccess() throws Exception{ TransJdbcTemplate lvTj = ContextHolder.getTransJd...原创 2018-04-26 09:14:52 · 4002 阅读 · 0 评论 -
用JDBC读取postgresql record类型的数据
@Test public void testObjectAccess() throws Exception{ TransJdbcTemplate lvTj = ContextHolder.getTransJdbcTemplate(); Exception lvException= lvTj.doTransactionBatch(new TransCallback() { @Over...原创 2018-04-26 09:05:11 · 1800 阅读 · 0 评论 -
postgresql 累乘
drop table if exists t;create table t(id int,qty numeric); insert into t select 1,3.1415 union all select 2,1.5 union all select 3,6 union all select 4,5 ; --执行查询 Select power(10, Sum(Log(10,...原创 2018-03-06 11:18:43 · 1123 阅读 · 0 评论 -
Postgresql的Select with,数组等高级应用例子
用 with子句可在主select语句前先定义子集, array_agg则可以将记录集转为数组,unnest则可以将数组转为记录集, 如下SQL,一个SQL即可显示指定产品流水号的对应生产工单的扫描模板工位明细,当前产品做到哪个工位, 此产品经过这些工位的状态(是否经过,QC结果等)with t96 as ( --先找出产品管理号在t96表中最后生产状态,子集结果为"101D1111111111"...原创 2018-02-28 14:44:06 · 2329 阅读 · 0 评论 -
PostgreSQL字符串聚集的经典应用
PostgreSQL是功能非常强大的原创 2014-05-20 11:53:42 · 1134 阅读 · 0 评论 -
PostgreSQL查询连接信息
PostgreSQL客户端的连接信息放于pg_stat_activity表中,select * from pg_stat_activity即可原创 2014-11-12 09:59:50 · 2731 阅读 · 0 评论 -
Postgresql Interval 转成秒
1、select EXTRACT(EPOCH FROM (now() - fg_last_retrive_time)) as diff,fg_last_retrive_status from tg_reader where fg_reader_ip ='128.31.188.46' ;2、原创 2014-10-15 11:10:47 · 9065 阅读 · 0 评论 -
postgresql 的自动增量字段
方法一:用SEQUENCE 先建立一个SEQUENCE ,然后用select nextval(SEQUENCEname)来获得下一个序列的值,好处是 各个table共享一个SEQUENCE . 方法二: 用serial将字段定义为serial类型, 此字段会自动+1, 特点是简单, 每个field的serial作用域是field.原创 2015-08-29 11:19:27 · 1730 阅读 · 0 评论 -
PostgreSQL自定义函数返回单条记录类型的例子...
CREATE OR REPLACE function fun_getRecSeq_range(p_dt timestamp) returns record as $BODY$declare c_str varchar;declare ret record;begin c_str:='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$.`'; s原创 2015-09-24 17:04:31 · 3699 阅读 · 0 评论 -
查Postgresql 数据库、各表占用磁盘大小
SELECT d.datname AS Name, pg_catalog.pg_get_userbyid(d.datdba) AS Owner, CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') THEN pg_catalog.pg_size_pretty(pg_catalog.pg_dat转载 2016-04-26 15:56:50 · 23376 阅读 · 0 评论 -
解决Postgresql 的强类型转换运算符::与hibernate冲突的问题
如果给SQLQuery传入 类似 select fa_name::varchar as bbb from table1 包含双冒号的SQL, hibernate会认为是参数, 度娘了很久未果,还是谷歌帮了忙, :: 应该这样转义才能避得过hibernate :select fa_name \\:\\:varchar from table1原创 2016-10-19 21:38:05 · 1480 阅读 · 0 评论 -
Postgresql 9.4 判断表是否存在...
就一函数: SELECT to_regclass('tablename') is not null不管是物理表还是临时表都有效.若按条件查询表名,比如模糊查询..select * from pg_tables where tablename like '%mail%'...原创 2016-12-07 15:19:06 · 4949 阅读 · 0 评论 -
Postgres自定义函数返回记录集(虚拟表结构)
CREATE OR REPLACE FUNCTION fun_get_real_inv_qty(pvOrderId varchar) RETURNS SETOF record AS$BODY$begin--drop table if exists tmp_1 ;--create temp table tmp_1 as return query select fp_prod_id,f原创 2017-03-31 17:26:59 · 3314 阅读 · 0 评论 -
用postgresql特性简化group by 后取每组前n条记录的方法
需求:求一段时间内各生产线前3名坏机的原因及坏机数.step 1, 从将原始数据中抽取品质数据放于t96临时表create temp table t96 on commit drop as select * from t96_pd_log where recseq between '791G0' and '792G0' and f96_op='PD-QC' ; 可以看原创 2017-12-09 10:00:29 · 11178 阅读 · 2 评论 -
Using Java arrays to insert, retrieve, & update PostgreSQL arrays
source: https://blog.2ndquadrant.com/using-java-arrays-to-insert-retrieve-update-postgresql-arrays/Arrays are a powerful programming feature frequently used by developers, both in Java and in PL/p转载 2017-12-05 10:12:04 · 337 阅读 · 0 评论 -
postgresql function is not unique的解决方法
从linux 服务器上的9.4 postgresql将某个数据库导出然后导入到另一台机的10.1版本的postgresql上, 但是用pgadmin刷新新数据库时出现 function array_agg(text) is not unique的异常. 下面是解决方法, 先用psql dbname postgres打开控制台, 在#提示符下输入\df array_ag...原创 2018-03-08 09:36:12 · 4545 阅读 · 0 评论 -
PostgreSQL数组操作符&函数
9.18. 数组函数和操作符表 9-45显示了可以用于 array 类型的操作符。表 9-45. Array 操作符操作符描述例子结果=等于ARRAY[1.1,2.1,3.1]::int[] = ARRAY[1,2,3]t<>不等于ARRAY[1,2,3] <> ARRAY[1,2,4]t<小于ARRAY[1,2,3] < ARRAY[1,2,4]t>大于...转载 2018-02-28 12:13:20 · 8259 阅读 · 0 评论 -
也谈如何获得PostgreSQL序列的当前值(最后值)
【原创文章,转载须注明出处】 由于前段时间一台Linux服务器(在VM笼子里),莫名其妙被一台AD撑破空间弄死了,再也救不会来(可见VM也不安全),可幸的是刚给这台Linux做了一台在线备用服务器,于是赶紧切换IP,把复制支点抹掉等等,然后用备用服务器设置Live。 本以为一切没问题,但后来用户某些系统部分功能报错,一查才发现备用服务器上PostgreSQL的序列没有原创 2014-04-23 15:07:35 · 15491 阅读 · 1 评论