草庐IT

PostgreSQL-psql

全部标签

PostgreSQL的查询技巧: 零除, GENERATED STORED, COUNT DISTINCT, JOIN和数组LIKE

零除的处理用NULLIF(col,0)可以避免复杂的WHEN...CASE判断,例如ROUND(COUNT(view_50.amount_in)::NUMERIC/NULLIF(COUNT(view_50.amount_out)::NUMERIC,0),2)ASout_divide_in,使用COLA/NULLIF(COLB,0)后,如果COLB为0,产生的输出就是NULL空数组解析为默认值使用jsonb_array_elements_text()可以将一个JSONB类型的列解析为多行--这是一个和聚合背道而驰的函数,在处理数组时特别有用.但是在使用中,往往需要全局统计,不单单是统计带内容的数

PostgreSQL的查询技巧: 零除, GENERATED STORED, COUNT DISTINCT, JOIN和数组LIKE

零除的处理用NULLIF(col,0)可以避免复杂的WHEN...CASE判断,例如ROUND(COUNT(view_50.amount_in)::NUMERIC/NULLIF(COUNT(view_50.amount_out)::NUMERIC,0),2)ASout_divide_in,使用COLA/NULLIF(COLB,0)后,如果COLB为0,产生的输出就是NULL空数组解析为默认值使用jsonb_array_elements_text()可以将一个JSONB类型的列解析为多行--这是一个和聚合背道而驰的函数,在处理数组时特别有用.但是在使用中,往往需要全局统计,不单单是统计带内容的数

Windows 环境搭建 PostgreSQL 逻辑复制高可用架构数据库服务

本文主要介绍Windows环境下搭建PostgreSQL的主从逻辑复制,关于PostgreSQl的相关运维文章,网络上大多都是Linux环境下的操作,鲜有在Windows环境下配置的教程,所以本文采用Windows环境作为演示系统来进行PostgreSQL高可用数据库服务的搭建。关于Windows系统PostgreSQL的安装方法可以直接看之前的博客https://www.cnblogs.com/berkerdong/p/16645493.html在Windows环境运行PostgreSQL在连接数的配置需要注意以下这个知识点:由于PostgreSQL所依赖的一些库依赖于user32.dll,

Windows 环境搭建 PostgreSQL 逻辑复制高可用架构数据库服务

本文主要介绍Windows环境下搭建PostgreSQL的主从逻辑复制,关于PostgreSQl的相关运维文章,网络上大多都是Linux环境下的操作,鲜有在Windows环境下配置的教程,所以本文采用Windows环境作为演示系统来进行PostgreSQL高可用数据库服务的搭建。关于Windows系统PostgreSQL的安装方法可以直接看之前的博客https://www.cnblogs.com/berkerdong/p/16645493.html在Windows环境运行PostgreSQL在连接数的配置需要注意以下这个知识点:由于PostgreSQL所依赖的一些库依赖于user32.dll,

用HTTP服务的方式集成 learned cardinality estimation 方法进 Postgresql

代码地址:postgresql-13.1-ml:IntegrationofCardEstMethodsintoPostgreSQLbyHTTPServer(github.com)当前进度:可以支持单表查询、多表innerjoin的基数估计模块的替换。注意:本文的重点在于PG的修改。记录一下我的修改思路。整体流程PG作为http客户端,向基数估计服务端发送http请求。内容为需要基数估计的SQL语句。基数估计服务端返回该语句的selectivity。PG收到该查询的selectivity后乘以当前表的大小,即得到rows项目的难点主要在于获取需要基数估计的SQL查询语句。PG原版基数估计调用逻辑

用HTTP服务的方式集成 learned cardinality estimation 方法进 Postgresql

代码地址:postgresql-13.1-ml:IntegrationofCardEstMethodsintoPostgreSQLbyHTTPServer(github.com)当前进度:可以支持单表查询、多表innerjoin的基数估计模块的替换。注意:本文的重点在于PG的修改。记录一下我的修改思路。整体流程PG作为http客户端,向基数估计服务端发送http请求。内容为需要基数估计的SQL语句。基数估计服务端返回该语句的selectivity。PG收到该查询的selectivity后乘以当前表的大小,即得到rows项目的难点主要在于获取需要基数估计的SQL查询语句。PG原版基数估计调用逻辑

Windows 环境搭建 PostgreSQL 物理复制高可用架构数据库服务

PostgreSQL高可用数据库的常见搭建方式主要有两种,逻辑复制和物理复制,上周已经写过了关于在Windows环境搭建PostgreSQL逻辑复制的教程,这周来记录一下物理复制的搭建方法。首先介绍一下逻辑复制和物理复制的一些基本区别:物理复制要求多个实例之间大版本一致,并且操作系统平台一致,如主实例是Windows环境下的PostgreSQL15则从实例也必须是这个环境和版本,逻辑复制则没有要求。物理复制是直接传递WAL归档文件,在从实例进行重放执行,可以理解为实时的WAL归档恢复,所以延迟低,性能高。,逻辑复制可以简单理解为解析了WAL归档文件中的信息,处理成为标准的SQL语句,传递给存库

Windows 环境搭建 PostgreSQL 物理复制高可用架构数据库服务

PostgreSQL高可用数据库的常见搭建方式主要有两种,逻辑复制和物理复制,上周已经写过了关于在Windows环境搭建PostgreSQL逻辑复制的教程,这周来记录一下物理复制的搭建方法。首先介绍一下逻辑复制和物理复制的一些基本区别:物理复制要求多个实例之间大版本一致,并且操作系统平台一致,如主实例是Windows环境下的PostgreSQL15则从实例也必须是这个环境和版本,逻辑复制则没有要求。物理复制是直接传递WAL归档文件,在从实例进行重放执行,可以理解为实时的WAL归档恢复,所以延迟低,性能高。,逻辑复制可以简单理解为解析了WAL归档文件中的信息,处理成为标准的SQL语句,传递给存库

PostgreSQL 的窗口函数 OVER, WINDOW, PARTITION BY, RANGE

最近在数据处理中用到了窗函数,把使用方法记录一下,暂时只有分组排序和滑动时间窗口的例子,以后再逐步添加场景在SQL查询时,会遇到有两类需要分组统计的场景,在之前的SQL语法中是不方便实现的场景1:顾客维修设备的记录表,每次维修产生一条记录,每个记录包含时间,顾客ID和维修金额,要取出每个顾客的维修次数和最后一次维修时的金额场景2:还是上面的维修记录表,要取出每个顾客的每次维修之间的时间间隔场景3:一个用户账户的交易流水表,要求每个小时的交易笔数和平均收支金额,这个平均数的统计范围是两个小时(整点时间的前后一个小时)使用窗函数直接SQL中使用窗函数就能解决这些问题,否则需要使用临时表,函数或存储

PostgreSQL 的窗口函数 OVER, WINDOW, PARTITION BY, RANGE

最近在数据处理中用到了窗函数,把使用方法记录一下,暂时只有分组排序和滑动时间窗口的例子,以后再逐步添加场景在SQL查询时,会遇到有两类需要分组统计的场景,在之前的SQL语法中是不方便实现的场景1:顾客维修设备的记录表,每次维修产生一条记录,每个记录包含时间,顾客ID和维修金额,要取出每个顾客的维修次数和最后一次维修时的金额场景2:还是上面的维修记录表,要取出每个顾客的每次维修之间的时间间隔场景3:一个用户账户的交易流水表,要求每个小时的交易笔数和平均收支金额,这个平均数的统计范围是两个小时(整点时间的前后一个小时)使用窗函数直接SQL中使用窗函数就能解决这些问题,否则需要使用临时表,函数或存储