![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
postgresql
文章平均质量分 54
kmblack1
这个作者很懒,什么都没留下…
展开
-
实际并行workers数量不等于postgresql.conf中设置的max_parallel_workers_per_gather数量
实际并行工作数量不等于postgresql.conf中设置的max_parallel_workers_per_gather数量的情况原创 2023-08-30 18:06:24 · 1620 阅读 · 3 评论 -
PostgreSQL将文件或图片写入数据库(lo_import、lo_export)
PostgreSQL将文件或图片写入数据库(lo_import、lo_export)原创 2022-10-12 11:42:18 · 1542 阅读 · 0 评论 -
PostgreSQL 在WAL文件中查找drop table、update、delete操作
PostgreSQL 在WAL文件中查找drop table、update、delete操作原创 2022-09-28 16:35:49 · 985 阅读 · 0 评论 -
pgpool-II常见错误
pgpool-II常见错误原创 2022-09-19 14:27:55 · 4556 阅读 · 0 评论 -
生成pgpool.conf中的pool_passwd参数所需要的文件
生成pgpool.conf中的pool_passwd参数所需要的文件原创 2022-09-19 14:26:12 · 829 阅读 · 0 评论 -
postgresql常用命令帮助
postgresql常用命令帮助原创 2022-09-16 10:17:36 · 1499 阅读 · 0 评论 -
生产环境安装、配置、管理PostgreSQL14.5数据库集群。pgpool 4.3.3参数中文说明
生产环境安装、配置、管理PostgreSQL数据库集群原创 2022-09-14 18:08:35 · 1723 阅读 · 15 评论 -
PostgreSQL清空数据库脚本
PostgreSQL清空数据库脚本原创 2022-06-29 16:46:35 · 1227 阅读 · 0 评论 -
PostgreSQL有条件的禁止修改和删除数据
PostgreSQL有条件的禁止修改和删除数据原创 2022-06-23 17:03:08 · 1443 阅读 · 6 评论 -
编译PostgreSQL源码连接perl库无法解析的外部符号的错误处理
“D:\build\pg\postgresql-14.1\pgsql.sln”(默认目标) (1) ->“D:\build\pg\postgresql-14.1\bool_plperl.vcxproj”(默认目标) (83) ->“D:\build\pg\postgresql-14.1\plperl.vcxproj”(默认目标) (84) ->(Link 目标) -> plperl.obj : error LNK2019: 无法解析的外部符号 new_ctype,函数 se原创 2021-12-07 12:43:29 · 283 阅读 · 0 评论 -
PostgreSQL分布式id-雪花算法snowflake(2)
1 创建序列每个表都需要单独创建序列创建序列的目的是用于快速生成snowflakeId.每次将新生成的snowflakeId保存在序列中,然后用于计算新的snowflakeId.序列的命名规则:seq_“表名”_iddrop sequence if exists seq_table_id;create sequence if not exists seq_table_id as bigint increment 1 minvalue 0 maxvalue 92233720368原创 2021-06-04 14:55:37 · 1473 阅读 · 0 评论 -
PostgreSQL常用SQL
持续更新中…--与UTC的时区偏移,以秒记select cast(extract(timezone from now()) as bigint) as timezone;--时间精确至天with cte as( select cast(extract(epoch from now()) as bigint) as time)select cast(to_timestamp(time/86400*86400) as date) from cte;--时间精确至小时with cte as(原创 2021-05-21 11:26:12 · 238 阅读 · 0 评论 -
PostgreSQL处理文档数据
1 大多数人的选择采用json处理文档数据,PostgreSQL有两种 JSON 数据类型:json和jsonb,它们接受完全相同的值集合作为输入,两种类型的区别就是效率: json数据类型存储输入文本的精准拷贝,处理函数必须在每次执行时必须重新解析该数据。 jsonb数据被存储在一种分解好的二进制格式中,它在输入时要稍慢一些,因为需要做附加的转换。但是 jsonb在处理时要快很多,因为不需要解析。如果是读取密集型,请选择使用jsonb类型,如果是写入密集型,请选择json类型。如果你为这就完了原创 2020-05-28 19:24:00 · 515 阅读 · 0 评论 -
PostgreSQL 权限解读
1 public权限解读用户默认情况下具有public权限,public默认具有创建和使用schema的权限,因此意味着可以在schema中创建对象(包括表)、列出schema中的对象,并在其权限允许时访问它们。所以创建数据库或schema完成后做的第一件事是1.1 创建数据库完成后--回收schema的public权限--revoke all on schema public from public; --正常情况使用这个revoke all on schema public,tiger,ti原创 2020-05-28 19:20:21 · 3591 阅读 · 0 评论 -
PostgreSQL 枚举(enum)类型
PostgreSQL 枚举(enum)类型1 创建删除枚举类型drop type if exists attachs.efiletypes;create type attachs.efiletypes as enum ('other', 'image', 'vedio','file');2 枚举转换为整数,下标从1开始drop cast if exists (attachs.efil...原创 2020-04-05 14:47:16 · 1946 阅读 · 0 评论 -
PostgreSQL通过SQL创建或更新JSON
PostgreSQL通过SQL更新JSONPostgreSQL支持json字段,json字段分为两种类型:json和jsonb,如果是新建系统,建议使用较新的jsonb类型.在PostgreSQL中创建和删除jsonb字段都很方便,但是更新比较麻烦,一般采用导出至应用程序更新的方式,但是这种更新方式效率不如在数据库内部完成好。例如我们需要更新的原始jsonb为:{"职务":"程序员","个...原创 2020-03-21 09:00:09 · 1748 阅读 · 0 评论 -
Postgresql查看自己创建的函数、过程、触发器函数
1 首先获取用户oid注意这里指的是每个数据对应一个用户,具体操作方法请参阅再谈PostgreSQL创建数据库.select * from pg_authid where rolname='core';原创 2020-03-03 11:34:48 · 6872 阅读 · 0 评论 -
PostgreSQL 在子查询返回多列
PostgreSQL子查询返回多列可以使用left join的方式,但有些需求left join效率不如在子查询中返回多列那么好.具体使用子查询中返回多列还是left join请根据需求和执行计划决定.快速阅读请从第3节开始.1 创建测试表drop table if exists departments;drop table if exists deppeoples;drop type ...原创 2019-10-31 21:56:47 · 2875 阅读 · 0 评论 -
PostgreSQL 修改文本类型字段的存储方式
参考资料PostgreSQL存储方式分为以下4种:PLAIN避免压缩或者线外存储;而且它禁用变长类型的单字节头部。这是不可TOAST数据类型列的唯一可能的策略。只是对那些不能TOAST的数据类型才有可能。EXTENDED允许压缩和线外存储。这是大多数可TOAST数据类型的默认策略。 首先将尝试进行压缩,如果行仍然太大,那么则进行线外存储。 EXTERNAL允许线外存储,但是不许压缩。使用...原创 2019-10-31 17:59:38 · 2996 阅读 · 0 评论 -
Postgresql快速插入测试数据
原创,转载请注意出处1.创建常规的企业信息表create table t_centerprises( objectid bigint not null, /*唯一编号(6位行政区号+6位sn)*/ divid uuid not null, /*行政区唯一代码*/ name text not null, /*企业名称*/ address text not null, /*原创 2017-04-08 13:03:53 · 5722 阅读 · 0 评论 -
postgresql 两个表之间快速导数据
do $$ declare vRecord record; declare vCurId bigint; declare vIndex bigint; declare vCount bigint;begin vIndex:=0; vCurid := 0; loop vIndex := 0 ;vCount := 0; for vRecord in select objectid原创 2017-04-08 13:27:22 · 1397 阅读 · 0 评论 -
PostgreSQL FunctionCallInfoData结构体
FunctionCallInfoData是实际传给C Language function函数的数据,它默认是隐藏的,实际上每一个C Language function函数默认都有一个FunctionCallInfoData.它的定义如下:typedef struct FunctionCallInfoData{ FmgrInfo *flinfo; /*函数描述指针*/原创 2017-10-26 23:31:48 · 899 阅读 · 0 评论 -
数据库快速更新全表数据
备注:以下更新的算法适合所有数据库,示例采用PostgreSQL,其它数据库只用修改语法即可.题外话:软件思想很重要,不要局限于某种语言\工具\数据库,思想才是最重要的.有时候一个灵光一闪的想法说不定就是一个好的软件.开始谈正事,在update全表数据时,常规写法下大家经常抱怨更新太慢,语句如下:update 表 set 字段1=0,字段n=n实际上这里由于在update前,数据库需要读取整个表,然原创 2017-10-28 16:50:36 · 12038 阅读 · 1 评论 -
PostgreSQL判断表是否存在最快的方法
1.使用to_regclass函数(首选方法)速度最快,9.4或更高版本首选这个函数if( to_regclass('test') is null ) then你的代码end if;或包含架构if( to_regclass('public.test') is null ) then/*你的代码*/end if;2.使用pg_class系统表if( (select 1 from pg_cl原创 2017-10-30 23:14:13 · 13612 阅读 · 0 评论 -
PostgreSQL调整检查点的基础
作者声明:本文是根据外文资料和作者的经验写的,如有错误请指出更正PostgreSQL是依靠预写日志(WAL)的数据库之一,所有的更改首先被写入一个日志(一个变化的流),然后再写入数据文件.这提高了数据的安全性,因为在崩溃的情况下,数据库会使用WAL执行恢复,从WAL读取更改并将其重新应用于数据文件.虽然这可能会使写入量增加一倍,但实际上可能会提高性能,用户只需要等待WAL(刷新到磁盘),而数据原创 2017-10-24 18:04:10 · 1413 阅读 · 0 评论 -
postgresql取随机记录
原创,转载请注明出处!postgresql取随机记录有以下几种方式,请参阅:http://blog.chinaunix.net/uid-20332519-id-5616589.html 另一种相对简单的算法如下:explain (analyze,verbose,costs,buffers,timing)select * from 表名 where 主键=ANY(( with cte as(原创 2017-10-24 18:04:16 · 5322 阅读 · 0 评论 -
postgresql timestamp timestamptz 使用注意事项
原创,转载请注明出处!postgresql日期时间类型分为timestamp [ (p) ] [ without time zone ]和timestamp [ (p) ] with time zone,它们的区别在于一个无时区,另一有时区,存储大小均为8字节.同时也要注意time [ (p) ] [ without time zone ]和time [ (p) ] with time zon原创 2017-10-24 18:04:18 · 38254 阅读 · 0 评论 -
清空postgresql shared_buffers
原创,转载请注明出处!摘要:停止数据库并不能清空缓存,因为缓存是由操作系统创建的,一般只有重启操作系统可以完全清空.本文的内容操作系统只能为linux,只适合开发环境,生产环境不建议.在sql优化时,如果shared_buffers中包含有需要的数据,数据会从shared_buffers中读取,导致测试结果不是很准确.一般来说,优化sql应该做最坏的打算(也就是应该从磁盘读取数据)才能保证在原创 2017-10-24 18:04:21 · 4295 阅读 · 0 评论 -
PostgreSQL Windows简易安装
下载PostgreSQL二进制压缩包,根据需要选择Win x86-32(32位)或Win x86-64(64位)https://www.enterprisedb.com/download-postgresql-binaries下载PostGIS二进制压缩包,注意与必须PostgreSQL的版本匹配http://postgis.net/windows_downloads/QQ图片20171原创 2017-10-24 18:04:26 · 1846 阅读 · 0 评论 -
关于PostgreSQL的一些限制
PostgreSQL 限制最大数据库大小无限制 单个表最大大小 32 TB 最大行大小 1.6 TB 最大字段大小 1 GB 每张表的最大行数无限制 每个表的最大列数 250 - 1600 取决于列类型 每张表的最大索引无限制原创 2017-12-01 15:38:38 · 9675 阅读 · 0 评论 -
postgresql内存表
postgresql内存表主要使用操作系统实现,自身不带有这个功能.使用内存表的前提是内存必须足够大,同时要测算好内存表中的数据大小,注意(postgresql使用的内存大小 + 内存挂载成硬盘占用的内存大小 + 操作系统使用的内存大小 + 其它软件使用的大小) < 物理内存大小.具体方法如下(以256GB物理内存,专用postgresql服务器为例):postgresql内存配置估算为1...原创 2017-10-24 18:04:13 · 4390 阅读 · 0 评论 -
PostgreSQL查看版本信息
1.查看客户端版本psql --version2.查看服务器端版本2.1 查看详细信息select version();2.2 查看版本信息show server_version;2.2 查看数字版本信息包括小版号SHOW server_version_num;或SELECT current_setting('server_version_num');3.注意事项SELECT current_set翻译 2017-12-05 16:18:36 · 125403 阅读 · 1 评论 -
PostgreSQL-模糊查询
!/bin/bash1 模糊查询时,大多数情况下首先想到的是like ‘%关键字%’或基于gin索引的正则表达式,gin至少需要三个字符才会使用索引,对于汉语来说十分不方便;2 在海量数据的情况下,基于like和gin索引的正则表达式均不理想时,一般采用分词后进行查询.3 分词存在两个弊端3.1 词库的维护是比较繁重的工作.当词库中没有的关键词会导致查询结果不正确.3.2 历史数据的维护工作不好处理原创 2017-11-17 23:21:26 · 14164 阅读 · 2 评论 -
postgresql 设置执行命令超时时间
通过设置statement_timeout参数设置命令最大执行时间,单位为毫秒,超过时间将取消执行.1. 配置文件 设置.在postgresql.conf中配置statement_timeout参数(单位为毫秒),会影响所有会话,不建议使用.2.在当前会话中设置仅对当前会话生效(单位为毫秒)set statement_timeout to 30000;3.Npgsql通过连...原创 2018-01-31 17:42:36 · 22293 阅读 · 0 评论 -
关于年月字段的存储
大多数情况下需要存储年月字段时,首先想到的方法如下:create table a( year int not null, month int not null, ... constraint pk_a_objectid primary key(year,month))类似的需求一个int字段就可以完成,其中高字节16位存储年份,低字节16位存储月分,原创 2018-02-05 15:28:01 · 1131 阅读 · 0 评论 -
postgresql函数-根据文件大小自动转换为合适的单位
PostgreSQL自带转换的系统管理函数,但是只精确到整数,且最大单位只到TB,因此使用了自定义函数:pg_size_pretty(bigint) pg_size_pretty(numeric) 1.函数定义drop function if exists appropriate_units(bigint);create or replace function app...原创 2018-03-07 11:23:13 · 1882 阅读 · 0 评论 -
Postgresql 直接在查询结果中生成唯一ID
不需要排序select (row_number() over()) as id from generate_series(1,100)根据指定的字段排序select (row_number() over(order by xxx desc)) as id,xxx from generate_series(1,100) as xxx...原创 2018-03-30 16:45:54 · 4809 阅读 · 0 评论 -
PostgreSQL 数组函数扩展
函数定义drop function if exists array_repeat(bigint[]);drop function if exists array_repeat(text[]);drop function if exists array_different(bigint[],bigint[]);drop function if exists array_differen...原创 2018-03-21 13:38:07 · 1294 阅读 · 0 评论 -
WARNING: you don't own a lock of type ExclusiveLock
咨询锁出现下列警告WARNING: you don't own a lock of type ExclusiveLock原因:试图释放锁的次数超过锁定的次数。问题重现:锁定了一次,但释放了两次所以出现“WARNING: you don’t own a lock of type ExclusiveLock”with cte as( select pg_advisory_l...原创 2018-03-31 00:52:22 · 1241 阅读 · 0 评论 -
烧脑数据库算法题 Postgresql 找出数组中重复的手机号
备注:此算法也适用于人脉搜索(比如共同的好友等)so 思想很重要,工具不重要,思想错了干得再多也是白干.有了思想你也可以无限扩展 搜索人脉关系比查重复的手机号快的多,重复的手机号毕竟要全表比较,人脉搜索关系只需要扫描相关的数据即可,估计应该可以在100毫秒这个级别,我没有样本数据所以没法测量.示例数据采用Postgresql,有兴趣的朋友可以试试,博主测试环境500W去重大约用时53秒....原创 2018-04-01 09:18:57 · 920 阅读 · 0 评论