
PostgreSQL之SQL语言
文章平均质量分 73
涉及PostgreSQL数据库SQL语言的DML、DDL、语句优化等的方方面面。
瀚高PG实验室
瀚高PG实验室(Highgo PG Lab)依托于瀚高DBA运维团队及瀚高数据库PG内核研发团队,旨在深入研究PostgreSQL技术、使用技巧、内核探秘、PG教学等,并进行分享。欢迎大家关注、交流。
展开
-
pg_test_fsync的使用说明
pg_test_fsync是一种用于测试在指定系统上哪一种wal_sync_method最快的命令,该命令还可以在发生认定的 I/O 问题时提供诊断信息。pg_test_fsync为 wal_sync_method报告以微秒计的平均文件同步操作时间,也能被用来提示用于优化commit_delay值的方法,本文主要用于介绍pg_test_fsync的使用方法。原创 2024-07-16 14:27:50 · 448 阅读 · 0 评论 -
PostGIS简单使用
系列性的介绍PostGIS及GIS周边的相关资料,本文介绍PostGIS简单使用原创 2024-07-16 11:16:16 · 841 阅读 · 0 评论 -
pg12新特性-postgresql.conf参数变化
在之前的版本中,fsync函数被重新执行(data_sync_retry = “on”),在新版本中如果fsync系统调用失败,则默认行为(data_sync_retry = “off”)是由PANIC导致实例停止。定义连接主库的连接串。一般情况下application_name参数的默认值为“walreceiver”,但是当配置备库的cluster_name参数后,备库的cluster_name的值就会成为application_name参数默认值。同之前的版本相同,此参数的默认值是auto。原创 2024-05-17 11:01:30 · 1027 阅读 · 0 评论 -
PostGIS之pointcloud
本文详细介绍pointcloud,包括:安装配置、两个核心数据类型、功能函数、使用PDAL读写pgpoingcloud数据等。原创 2024-05-11 11:15:22 · 1674 阅读 · 0 评论 -
pgAdmin 4 使用
本文介绍pgAdmin4使用技巧和工具所具有的比较好的功能。原创 2024-05-11 10:54:01 · 7068 阅读 · 1 评论 -
pg12中pg_dump/pg_dumpall新增选项介绍
本文主要用于介绍与pg10.5相比,pg_dump/pg_dumpall命令的新增选项介绍。原创 2024-04-12 14:50:32 · 626 阅读 · 0 评论 -
pgcrypto
本文详细介绍pgcrypto。原创 2024-04-12 11:03:40 · 1336 阅读 · 0 评论 -
查询优化-ANY类型子连接提升
已知查询树基本结构的基础上,在一定条件下对SQL中的子连接提升原创 2024-04-11 15:53:09 · 517 阅读 · 0 评论 -
pg中的spinlock实现
了解spinlock实现,作为pg最基础的锁,向上可实现LWlock原创 2024-04-08 11:25:28 · 485 阅读 · 0 评论 -
pg从磁盘读取文件
了解spinlock实现,作为pg最基础的锁,向上可实现LWlock原创 2024-03-26 14:15:57 · 894 阅读 · 0 评论 -
查询优化-提升子查询-UNION类型
剖析UNION类型子查询提升的条件和过程原创 2024-03-26 13:53:59 · 1205 阅读 · 0 评论 -
lsn和redo
记录lsn三种记录形式,以及redo对lsn的操作。原创 2024-03-20 16:33:20 · 906 阅读 · 0 评论 -
pg空值管理
从元组底层的角度看属性为空的判定原创 2024-03-18 14:24:22 · 454 阅读 · 0 评论 -
查询优化-EXIST类型子连接提升
了解exist类型的子连接提升过程原创 2024-03-18 14:18:54 · 557 阅读 · 0 评论 -
查询优化——查询树结构
查询树作为PG优化器的输入参数,了解此类数据结构,在此基础上了解PG优化的规则。原创 2024-03-12 13:29:47 · 855 阅读 · 0 评论 -
PostgreSQL如何支持PL/Python过程语言
本文档主要介绍PostgreSQL如何支持PL/Python过程语言,如何创建plpython扩展。原创 2023-09-22 15:15:52 · 1992 阅读 · 0 评论 -
pglogical常用操作(一)
本文为pglogical的系列文章,主要介绍pglogical各场景下的常用操作,演示场景接之前的安装部署.原创 2023-03-03 11:33:09 · 1161 阅读 · 0 评论 -
Postgresql 表连接方法介绍(和Oracle对比测试)
作者:杨云龙,瀚高PG实验室核心成员,数据库高级工程师,擅长HGDB、Post-greSQL、Oracle等主流数据库。表连接方式方法介绍(Nested Loop/Hash Join/Merge Join/Join) 数据库版本(oracle11.2.0.4 and PostgreSQL 13.1)环境构造Nested LoopOracle 执行举例Postgresql 执行举例Hash JoinOracle举例Postgresql举例Merge JoinOrac原创 2021-11-09 09:56:28 · 2435 阅读 · 0 评论 -
postgresql的模式
1. 创建模式: CREATE SCHEMAmyschema; 通过以上命令可以创建名字为myschema的模式,在该模式被创建后,其便可拥有自己的一组逻辑对象,如表、视图和函数等。 2. public模式: 在介绍后面的内容之前,这里我们需要先解释一下public模式。每当我们创建一个新的数据库时,PostgreSQL都会为我们自动创建该模式原创 2018-01-15 21:48:04 · 2952 阅读 · 0 评论 -
postgresql数据类型之CHAR NCHAR VARCHAR2 NVARCHAR2
postgresql中没有NCHAR VARCHAR2NVARCHAR2数据类型。在oracle向postgresql迁移过程中可以参考使用如下数据类型对应之:CHAR CHARNCHAR CHARVARCHAR2 VARCHARNVARCHAR2 VARCHARBy 徐云原创 2018-01-09 22:36:29 · 10063 阅读 · 2 评论 -
postgresql数据类型之LONG CLOB NCLOB BFILE BLOB LONG RAW
postgresql中没有LONG CLOB NCLOB BFILE BLOB LONG RAW 数据类型。在oracle向hgdb迁移过程中可以参考使用如下数据类型对应之:LONG TEXT/OIDCLOB TEXT/OIDNCLOB TEXT/OIDBFILE BYTEA/OIDBLOB BYTEA/原创 2018-01-09 22:33:39 · 15513 阅读 · 0 评论 -
Postgres——IMMUTABLE | STABLE | VOLATILE (2)
- 如果把状态改掉,改为immutable呢?又会是什么结果?postgres=# alter function nextval(regclass) immutable;ALTER FUNCTION//首先,在事务里,因为以下sql每次单独执行,都会被解析一次,所以每次结果也是。postgres=# begin;BEGINpostgres=# select nextval('seq');原创 2018-01-30 10:39:29 · 2395 阅读 · 0 评论 -
PostgreSQL中网络地址类型
在其他数据库中,数据类型varchar或bigint可用于存储IP地址。在PostgreSQL中,我们建议使用一个PG数据库内置类型来存储网络地址。inet:这个数据类型可以用来存储一个IPv4或IPv6地址和它们的子网。数据插入数 据库的格式是Address/y,其中y是子网掩码的位数。cidr:这个数据类型也可以用来存储网络和网络地址。一旦我们指定cidr数据类型的子网掩码,如果设置的位数原创 2018-01-11 14:06:05 · 3424 阅读 · 0 评论 -
PostgreSQL中大小写不敏感问题
本文主要讨论PostgreSQL中大小写不敏感存在的问题。默认情况下,PostgreSQL会将列名和表名全部转换为小写状态。图1 Person与person如图1所示,我们创建表person,其中包含name列。然后插入一条记录。执行SELECT查询时,使用列名Name和表名Person而不是name和person,发现仍然可以正常获取刚刚插入表person中的记录。图2 创建表Person?此时...原创 2018-03-09 16:34:50 · 19282 阅读 · 0 评论 -
pg审计DDL
首先确认log_statement设置为了ddl或者mod或者all 修改参数需要重新加载配置文件。 在日志文件中查找所有出现的create、alter和drop命令: egrep -i "create|alter|drop" /log_dir 如果开启了日志轮换,那么还需要在所有的日志文件中过滤这些内容。(是pg_log中的日志文件)原创 2018-01-02 09:49:01 · 681 阅读 · 0 评论 -
pg limit限制返回的行
limit 20:返回结果集中的前20行 offset 20 limit 20:返回结果集中前40行中的后20行 示例: 创建测试表: postgres=# create table test_limit(id int,name text); CREATE TABLE 插入数据: po原创 2018-01-02 09:45:57 · 1145 阅读 · 0 评论 -
Postgresql数据类型之UUID
1.UUID概述数据类型uuid存储由RFC 4122、ISO/IEC 9834-8:2005以及相关标准定义的通用唯一标识符(UUID)(某些系统将这种数据类型引用为全局唯一标识符GUID)。这种标识符是一个128位的量,它由一个精心选择的算法产生,该算法能保证在已知空间中任何其他使用相同算法的人能够产生同一个标识符的可能性非常非常小。因此,对于分布式系统,这些标识符相比序列生成器而言提供了一...原创 2018-03-17 19:11:35 · 11731 阅读 · 1 评论 -
PostgreSQL explain简单示例
explain输出结果解释下面是一个最简单的explain示例highgo=# explainselect * fromemp;QUERY PLAN--------------------------------------------------------SeqScan onemp(cost=0.00..15.60 rows=56...原创 2018-03-18 23:58:41 · 902 阅读 · 0 评论 -
Postgresql explain的analyze和buffers选项
postgreSQL使用explain查看SQL的执行计划时,因为SQL并未真实执行,看到的执行计划只是估算值,可能与实际情况差距较大。如果需要查看真实的执行性计划,就需要使用选项analyze获取更精确的执行计划。示例如下:highgo=# explainselect * from emp1 whereempno=7369 ;QUERY PLAN...原创 2018-03-18 23:59:05 · 6708 阅读 · 1 评论 -
PostgreSQL事务可以包含DML、DDL、DCL
PostgreSQL一个事务中可以包含DML, DDL, DCL.除了以下语句:create tablespacecreate database使用concurrently并行创建索引其他未尽情况略(Oracle执行DDL前自动将前面的未提交的事务提交,所以Oracle不支持在事务中执行DDL语句)这种情况和Oracle不同,oracle在执行ddl语句(如 drop table)会自动原创 2017-12-15 17:48:23 · 2053 阅读 · 0 评论 -
explain的输出格式
如何修改explain的输出格式默认情况下,explain输出的执行计划是文本格式,使用format选项可以修改的explain的输出格式,除text外,还支持json、xml、YAML三种格式。示例如下:输出json格式:highgo=# explain (formatjson) select * fromemp;QUERY PLAN-----------------...原创 2018-03-18 23:59:23 · 718 阅读 · 0 评论 -
postgresql数字类型
postgresql的数据类型很多,也可以使用create type命令创建自定义数据类型,但常用的数据类型是以下三种:l数字数据类型l字符串数据类型l日期/时间数据类型数字数据类型数字数据类型用于指定表中的数字数据,详情如下表所示:名称描述存储大小范围smallint原创 2017-12-06 22:11:27 · 48373 阅读 · 0 评论 -
psql内部命令及对应sql语句
\?: 查看所有帮助\l: 查看所有数据库SELECT d.datname as "Name", pg_catalog.pg_get_userbyid(d.datdba) as "Owner", pg_catalog.pg_encoding_to_char(d.encoding) as "Encoding", d.datcoll原创 2017-12-06 22:10:34 · 2315 阅读 · 0 评论 -
postgreSQL的主外键
--添加主键alter table cities add PRIMARY KEY(name);--添加外键alter table weather add FOREIGN key(city) REFERENCES cities(name) on update CASCADE on DELETE CASCADE;on update cascade: 被引用行更新原创 2017-12-06 21:59:58 · 3778 阅读 · 0 评论 -
postgresql与Oracle:空字符串与null
空字符串:两个单引号,中间无空格等任何内容在postgresql中,空字符串与null是不同的;而oracle中,空字符串与null等同。测试如下:postgresql中:postgres=# insert into testnull values(1,'feikong');INSERT 0 1postgres=# insert into testnull values(2,null原创 2017-12-06 09:49:44 · 3394 阅读 · 0 评论 -
PostgreSQL的约束
约束类型:检查约束、非空约束、唯一约束、主键、外键1.检查约束设置某个字段里的数值必须满足约束表达式的条件。例:限制人的年龄在0~120之间,语句如下:create table person(name varchar(40),age int check (age >=0 and ageinsert intoperson values('name1',120);ins原创 2017-12-21 22:36:10 · 4926 阅读 · 0 评论 -
Postgresql临时表
PostgreSQL支持两类临时表,会话级和事务级临时表。在会话级别的临时表中,在整个会话的生命周期中,数据一直保存。事务级临时表,数据只存在于这个事务的生命周期中。不指定临时表的属性,PostgreSQL中,不管是事务级还是会话级临时表,当会话结束时,临时表就会消失。这与oracle数据库不同,在oracle数据库中,只是临时表中的数据消失,而临时表还存在。示例:创建临时表temp原创 2017-12-21 22:35:37 · 8118 阅读 · 1 评论 -
postgresql是否支持双参数limit SQL语句?
看一下以下查询:highgo=# select * from te2 limit 5; id | name ----+-------- 1 | highgo 2 | highgo 3 | highgo 4 | highgo 5 | highgo(5 rows)highgo=# select * from te2 limit 5,1;ERROR: 42601: ...原创 2018-03-31 11:16:45 · 4719 阅读 · 0 评论 -
Postgresql中执行计划的扫描类型
全表扫描全表扫描在PostgreSQL中也称为顺序扫描(seq scan),全表扫描就是把表的所有数据块从头到尾读一遍,然后筛选出符合条件的数据块。 全表扫描在explain命令输出结果中用“Seq Scan”表示,如下所示:highgo=# explain select * from emp; QUERY PLAN-----------...原创 2018-04-03 15:05:53 · 2597 阅读 · 0 评论 -
Postgresql中执行计划的过滤类型
条件过滤条件过滤,一般就是在where条件上加的过滤条件,当扫描数据行时,会找出满足过滤条件的行。条件过滤在执行计划中显示为”Filter”,示例如下:highgo=# explain select ename from emp where empno=7499; QUERY PLAN-----------------------------...原创 2018-04-03 15:14:31 · 743 阅读 · 0 评论