PostgreSQL
文章平均质量分 58
PostgreSQL号称“世界上最先进的开源关系型数据库“,是一个功能非常强大的、源代码开放的客户/服务器 对象关系型数据库管理系统(ORDBMS)。
这里主要介绍一些PostgreSQL的常用的技巧。
秦时明月之君临天下
道阻且长,行则将至。
展开
-
PostgreSQL用load语句加载插件
在 PostgreSQL 中,`LOAD` 主要用于加载共享库,通常用于扩展功能或性能优化。原创 2024-10-24 22:15:55 · 417 阅读 · 0 评论 -
PostgreSQL VACUUM之深入浅出 (五)
`autovacuum_freeze_max_age` 是 AUTOVACUUM 最不常用的参数,也基本不需要优化,但却是 AUTOVACUUM 最重要的一个参数,因为它与 wraparound 有关,即使 AUTOVACUUM 关闭,达到这个阈值,也会强制触发 AUTOVACUUM ,可见它有多重要。转载 2024-10-23 22:41:37 · 33 阅读 · 0 评论 -
PostgreSQL VACUUM之深入浅出 (四)
可以看到, AUTOVACUUM 已触发,并且 autovacuum worker 已启动,先是 query 为空,而后 query 为 VACUUM ANALYZE public.pgbench_accounts。与 AUTOVACUUM 不同的是,手动 VACUUM 可以通过如下方式设置参数。这样,在实际工作中,就可以灵活调整参数而不需要改配置文件了。查看 PostgreSQL 日志,得知 VACUUM 用时 304.60 s,ANALYZE 用时 27.56 s。根据如上测试,可以验证,适当增大。转载 2024-10-23 22:33:19 · 24 阅读 · 0 评论 -
PostgreSQL VACUUM之深入浅出 (三)
对 VACUUM 有了一定的了解之后,下面系统介绍下 VACUUM 相关参数。VACUUM 相关参数主要分为三大类。转载 2024-10-23 22:28:51 · 23 阅读 · 0 评论 -
PostgreSQL VACUUM之深入浅出 (二)
PostgreSQL 提供了 AUTOVACUUM 的机制。autovacuum 不仅会自动进行 VACUUM,也会自动进行 ANALYZE,以分析统计信息用于执行计划。转载 2024-10-23 21:57:27 · 34 阅读 · 0 评论 -
PostgreSQL VACUUM之深入浅出 (一)
VACUUM 是 PostgreSQL MVCC (Multiversion concurrency control) 实现的核心机制之一,是 PostgreSQL 正常运行的重要保证。本文将通过实例演示 PostgreSQL 为什么需要做 VACUUM,以及一步一步精准触发 AUTOVACUUM, 到 VACUUM 优化实战,深入浅出,一看就懂。转载 2024-10-23 21:48:54 · 59 阅读 · 0 评论 -
pgAdmin不显示template1数据库,该如何设置才可以显示?
pgAdmin和其他数据库管理工具一样,可能是考虑到使用者(比如普通开发人员)可能并不是特别的了解PostgreSQL的(相对)底层的逻辑;因此,为了方便使用(提高使用体验),默认情况下,pgAdmin是不会显示模板库、以及一些内置的模式和对象。但是如果是针对了解部分底层逻辑的使用者(比如DBA),他们可能需要这些比较底层的功能。设置后我们重连一下数据库,就能看到模式数据库和内置模式了。原创 2024-10-21 02:06:14 · 365 阅读 · 0 评论 -
PostgreSQL模板数据库template0和template1的异同点
PostgreSQL有两个模板数据库:template0和template1,template0是不可修改的,而template1是可以修改的。其实就是复制template1模板库,命名为新库。那模板数据库有什么作用呢?顾名思义,当做模板。那两个模板库有什么区别呢?原创 2024-10-21 01:52:16 · 543 阅读 · 0 评论 -
DBeaver显示PostgreSQL数据库的信息模式
DBeaver连接PostgreSQL数据库后,默认情况下是不加载信息模式的,如果有需要,我们可以通过设置显示信息模式。具体步骤:点击数据库连接–>右键打开设置–>连接设置–>常规–>导航视图–>自定义–>勾选显示系统对象。原创 2024-10-01 22:50:53 · 356 阅读 · 0 评论 -
什么是 PostgreSQL commitfest以及如何贡献
Commitfest 是一个为期一个月的活动,Postgres 贡献者和核心员工(提交者)致力于查看补丁、审查补丁、改进补丁并提交到 master 分支。实际上,这些是您最有可能获得补丁反馈的月份。翻译 2024-09-24 18:42:01 · 54 阅读 · 0 评论 -
了解Postgres Hackers邮件列表语言
邮件列表充满了可能不熟悉的首字母缩略词和行话 没有在电子邮件中长大的年轻人(尽管短信已经 继承了许多缩写)。如果您不是英语母语者, 或者 30 岁以下,或者没有沉浸在科技世界中,我会提供一些 解决方案。为此,我下载了去年的黑客电子邮件,编写了一个程序 去掉所有非人类的东西(头、代码块、附件等), 然后对结果进行了一些数据分析。翻译 2024-09-24 16:48:53 · 134 阅读 · 0 评论 -
VSCode调试PostgreSQL源码
本文讲述了如何在Ubuntu20.04上使用对PostgreSQL进行调试转载 2024-08-14 15:29:19 · 186 阅读 · 0 评论 -
PostgreSQL扩展file_fdw详解及使用实践(使用SQL查询数据库日志)
从上例中我们发现使用file_fdw可以很轻松的读取服务器上的数据文件里面的内容。那么通过file_fdw我们可以实现一个很常见的功能:利用file_fdw在数据库中创建外部表来读取数据库日志里面的信息。PostgreSQL的file_fdw模块允许我们直接从数据库中来访问服务器的文件系统中的文件,不过这些文件必须是能够被COPY FROM读取的格式。可以发现,上面我们创建的外部表只能访问一个日志文件,并且需要指定绝对路径,如果日志文件中像上图所示有多个LOG文件,而且绝对路径不固定又该怎么办呢?转载 2024-07-23 18:16:25 · 116 阅读 · 0 评论 -
PostgreSQL报错invalid primary checkpoint record的修复
如果在容器中, 使用下面命令进行挂载数据库 并执行命令行, 方便与我们执行后面的命令。registry.uixe.net/images/postgres 是我的内网镜像地址,因此如果公网, 或者你自己私有镜像, 请替换为可用的 镜像名称。最近又遇到这个错误,这种情况一般都是由于客户服务器断电等原因导致的, 因此网上搜索一堆修复方法, 总结了后, 打算写在这里, 由于我们的pgsql是运行在容器内, 因此这里写的命令均是容器内可以执行的。否则程序以为自己依然在运行状态。重启后, 完美解决。转载 2024-07-21 01:15:43 · 329 阅读 · 1 评论 -
PostgreSQL学习笔记之——备份和恢复(pg_start_backup、pg_stop_backup、pg_basebackup)
需要注意的是,archive_command 设定的归档命令是否成功执行,如果未成功,它会周期性的重试,在此期间已有的WAL日志将不会被覆盖重用,新的WAL日志信息会不断占用 pg_wal 的磁盘空间,知道pg_wal所在磁盘沾满后数据库关闭。用 %f 代表不包含路径信息的WAL文件的文件名。**判断当前是否是全页写模式,当参数 full_page_writes的值为 off 时表示关闭了全页写模式,但当检查备份准备时,如果没有开启,则会强制性将参数 full_page_writes 值设置为 on。转载 2024-07-21 01:12:51 · 248 阅读 · 0 评论 -
PostgreSQL源码分析——基础备份
在排他模式下使用时,该函数将写一个备份标签文件(backup_label),如果pg_tblspc/目录中有任何链接, 则将一个表空间映射文件(tablespace_map)写入数据库集群的数据目录,然后执行检查点,然后返回备份的开始写-提前日志位置。这里的基础备份,其中一个最大的优势就是可以不停机,不停业务进行物理备份,在备份过程中,不需要获取表上的锁,正常业务受备份的影响较小。历史文件包括给予pg_start_backup的标签,备份的开始和结束写前预写式日志的位置,以及备份的开始和结束时间。转载 2024-07-21 01:08:55 · 69 阅读 · 0 评论 -
PostgreSQL如何在windows/linux开启归档
修改后需要重启才能生效!原创 2024-07-19 23:50:32 · 386 阅读 · 0 评论 -
PostgreSQL锁和阻塞发现与处理
或者通过数据库日志(开启log_statements=‘all’,SQL审计)追踪事务中所有的SQL,分析事务之间的锁冲突。通过数据库日志(开启lock_timeout, log_lockwait参数)跟踪锁等待信息。state为idle in transaction,说明该会话执行完了但没有提交。如果觉得前面分步操作太麻烦,可以用下面的sql一次查出(比较长,可以建成视图)根据pid和relation找到阻塞源(granted=t)根据被阻塞/阻塞源的pid查正在执行的语句。找到所在会话执行提交或回滚。转载 2024-02-28 01:11:10 · 490 阅读 · 0 评论 -
PostgreSQL在Windows重装后重新恢复数据的方法
windows系统重装后我们的postgresql服务器就不会正常启动,因为在系统中注册的服务重装后已经没有了,但是你的postgresql不是安装在系统盘区上的,那么postgresql服务器的文件和数据就还是存在的,比如原来的安装目录是D:\PostgreSQL,那么我们怎么让服务器服务自动运行起来,这样我们的程序才能连接数据库了,而且数据还不会丢失。最简单的办法重装,把原来的文件全部删除,如果原来有数据备份,把备份数据恢复就可以了,那如果重装系统前没有备份数据呢?-D代表数据库文件目录 ,转载 2023-12-17 14:37:57 · 585 阅读 · 0 评论 -
查看PostgreSQL数据库进程占用内存的方法
使用top命令查看内存时,会发现有一些PostgreSQL进程占用了很大的内存,用ps aux常看各个进程的内存时,如果把各个进程的内存加起来时,发现超过了总内存,所以很困惑。转载 2023-11-26 01:06:05 · 1222 阅读 · 0 评论 -
PostgreSQL将文本转换成固定的长整型
PostgreSQL将文本转换成固定的长整型原创 2023-10-24 23:47:38 · 528 阅读 · 0 评论 -
PostgreSQL如何查询表大小
查询 PG 表的大小通常需要使用函数/视图来实现,分为单独查询和批量查询的场景,下面简单列一下转载 2023-08-27 18:33:00 · 4922 阅读 · 0 评论 -
PostgreSQL could not identify an equality operator for type json
看这字面上的意思是:pgsql没有能够对json类型字段进行等值操作的操作符。因为这里面我用的是`UNION`,而不是`UNION ALL`,因此会有个去重的操作,而去重的话,就必需将它们进行等值比较,查看是否相等(重复);而pg没有对应的操作符能够支持json字段的该功能,因此报错了。原创 2023-08-20 16:27:22 · 1311 阅读 · 0 评论 -
PostgreSQL-Character with value 0x09 must be escaped.
这个ASCII的值,是换行符。那这应该是因为json不支持换行导致的,我们将换行符转换成空格就行了。中文即使:值为0x09的字符必须转义。原创 2023-07-24 00:44:47 · 1012 阅读 · 0 评论 -
PostgreSQL查找配置文件位置、数据所在目录
转自:https://blog.csdn.net/DongGeGe214/article/details/121489384。后面的参数即为配置文件所在位置。后面的参数即为数据目录,转载 2023-04-05 21:39:30 · 3208 阅读 · 0 评论 -
PostgreSQL常用的两个字符串分割函数
常用的两个字符串分割函数:regexp_split_to_table、regexp_split_to_array,具体作用其实显而易见,一个是分割成表,一个是数组。原创 2023-03-30 23:37:55 · 1874 阅读 · 0 评论 -
PostgreSQL之从表中随机取数据
从表中随机取一条数据原创 2022-12-10 17:45:05 · 2598 阅读 · 0 评论 -
PostgreSQL怎么查看数据库用户系统权限、对象权限
使用pg数据库可以通过如下方法查询用户的系统权限和对象权限。转载 2022-10-21 01:25:31 · 13427 阅读 · 0 评论 -
Navicat Charts Creator图表工具探索
Navicat Charts Creator是Navicat系统的一个软件,是用于制作图表的工具,功能很强大。我是在闲逛的时候发现的这个软件(提供 14 天 免费的全功能 Navicat 试用版),官网:。原创 2022-10-04 00:43:23 · 1553 阅读 · 0 评论 -
PostgreSQL事务ID回卷
在postgresql中,由于没有像oracle、mysql那样的undo来实现多版本并发控制,而是当执行dml操作时在表上创建新行,并在每行中用额外的列(xmin,xmax)来记录事务号(xmin为insert或回滚时的事务号、xmax为update或delete的事务号,注意xmin还会记录回滚时的事务号),以此实现多版本并发控制,当然基于此也会导致postgresql中一个比较常见的问题——表膨胀。当前事务只能看到比表上xmin事务号小的记录,txid(事务id)的最大值为32位,即2^32为429转载 2022-08-29 12:53:31 · 1827 阅读 · 0 评论 -
CentOS安装postgresql12-devel.x86_64报错-需要:llvm-toolset-7-clang >= 4.0.1
去搜了下,发现是需要安装。包,我第一想法就是安装它,然后再按照 就正常了。原创 2022-08-25 01:15:24 · 2370 阅读 · 2 评论 -
PostgreSQL命令行-psql竖式输出查询结果
psql 默认是水平输出查询结果,一条记录占一行。而且和 mysql 不同的是,它还不换行,如果一行内容太多,后面的就看不见了。如果想切换城竖式显示,只需要使用 \x 命令即可。原创 2022-07-17 00:46:31 · 3142 阅读 · 0 评论 -
PostgreSQL之如何进行SQL优化?
如何使用索引?(what 什么是索引?why 为什么需要索引?how 如何创建索引?when 什么时候走索引?)这篇文章会告诉你!原创 2022-07-09 15:03:31 · 9957 阅读 · 0 评论 -
PostgreSQL之如何敲开PG的大门?
PostgreSQL号称"世界上最先进的开源关系型数据库",在国内越来越受欢迎,那么我们应该如何去学习它呢?这篇文章介绍了如何用正确的方式敲开PG的大门。原创 2022-07-09 14:18:13 · 986 阅读 · 0 评论 -
PostgreSQL日期时间特殊值
记录一些PostgreSQL日期时间特殊值。原创 2022-07-02 23:08:53 · 511 阅读 · 0 评论 -
PostgreSQL插件-pg_stat_statements-安装和使用
该模块提供了一种跟踪服务器执行的所有 SQL 语句的规划和执行统计信息的方法。必须通过将模块添加到 中的shared_preload_libraries来加载该模块,因为它需要额外的共享内存。这意味着需要重新启动服务器才能添加或删除模块。此外,必须启用查询标识符计算才能使模块处于活动状态,如果将 compute_query_id 设置为 或 ,或者加载任何计算查询标识符的第三方模块,则会自动完成该计算。当 处于活动状态时,它将跟踪服务器所有数据库的统计信息。要访问和操作这些统计信息,该模块提供了视图 和 ,翻译 2022-06-23 21:40:43 · 4358 阅读 · 2 评论 -
PostgreSQL插件-pg_stat_statements-查找最耗费资源的SQL(Top SQL)
数据库是较大型的应用,对于繁忙的数据库,需要消耗大量的内存、CPU、IO、网络资源。SQL 优化是数据库优化的手段之一,而为了达到 SQL 优化的最佳效果,您首先需要了解最消耗资源的 SQL(Top SQL),例如 IO 消耗最高的 SQL。数据库资源分为多个维度、CPU、内存、IO 等,为能够从各个维度层面查找最消耗数据库资源的 SQL,您可以使用 pg_stat_statements 插件统计数据库的资源开销和分析 Top SQL。本文将通过示例介绍如何创建 pg_stat_statements 插件、转载 2022-06-12 22:18:57 · 2049 阅读 · 1 评论 -
【转发】PostgreSQL查询不走索引的情况
查询不走索引的情况:1、条件字段选择性弱,查出的结果集较大,不走索引;2、where条件等号两边字段类型不同,不走索引;3、索引字段 is null 不走索引;4、对于count(*)当索引字段有not null约束时走索引,否则不走索引;5、like 后面的字符当首位为通配符时不走索引;6、使用不等于操作符如:、!= 等不走索引;7、索引字段前加了函数或参加了运算不走索引;8,部分索引但查询条件包括不属于部分索引的数据如果where条件都没有以上所述,那么考虑优化器分析的统计信息陈旧..转载 2022-06-12 21:51:41 · 3968 阅读 · 0 评论 -
数据库语言(DDL,DML,DQL,DCL)
一、DDL(data definition language)数据定义语言:DDL语句不用commit数据定义语言DDL用来创建数据库中的各种对象-----表、视图、索引、同义词、聚簇等如:CREATE TABLE(表)/VIEW(视图)/INDEX(索引)/SYN(同义词)/CLUSTER(簇)1、创建(create):create index,create tablespace……2、删除(drop,truncate):truncate删除整个数据,drop删除整个表(数据+表结构)两者都不用comm转载 2022-06-05 00:42:10 · 2276 阅读 · 0 评论 -
PostgreSQL设置字段默认值
--为表my_table 添加gid字段,设置默认值为1ALTER TABLE my_table ADD COLUMN gid INTEGER DEFAULT 1; --修改my_table 的gid 字段默认值为2ALTER TABLE my_table ALTER COLUMN gid SET DEFAULT 2; --删除my_table的gid字段的默认值ALTER TABLE my_table ALTER COLUMN gid DROP DEFAULT;--删除字段alter原创 2022-05-29 12:36:25 · 10462 阅读 · 1 评论