首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
PostgreSQL
Foucus
创建于2022-03-23
订阅专栏
PostgreSQL技术学习研究
等 6 人订阅
共142篇文章
创建于2022-03-23
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
从数据加密到PostgreSQL SSL认证连接
为了保证数据库连接的安全性能,PostgreSQL允许使用SSL证书的方式去连接数据库,这无疑大大加强了数据访问的安全性能。 在讲解PostgreSQL中SSL的使用前,我们先来了解下什么是SSL证书。首先我们先来聊聊什么是数据加密。1.数据加密这也是和我们生活中息息相关的,可能...
PostgreSQL如何限制用户查看函数内容
CREATE OR REPLACE FUNCTION pg_catalog.除此之外,我们可能需要利用一些能够对函数体加密的第三方插件了。我们来一步步看看,pg中函数的相关信息是存在pg_proc表中的,函数体的内容存放在该表的prosrc字段中。创建普通用户,可以看到因为pg_...
PostgreSQL jsonpath使用实践
jsonpath是用来解析json数据的工具,类似于xpath,jsonpath可以解析十分复杂的json数据。PostgreSQL从9.2开始就支持json数据类型,但是由于解析json数据的性能很差,导致并不受大家青睐,而是选择使用nosql数据库代替。于是从pg9.4开始支...
聊聊PostgreSQL中的VFD机制
在操作系统中,为了高效地管理文件,当进程打开或创建一个文件时,操作系统会为该文件分配一个文件描述符(文件句柄),通过该文件描述符来唯一标识该文件,其本质上就是用来管理文件的索引。理论上来说,我们的操作系统内存有多少就可以打开多少的文件描述符,但实际上一般最大打开文件数会是系统内存...
PostgreSQL full_page_writes与checkpoint
我们都知道数据库中出现故障时都会去从最近一次的checkpoint开始应用wal日志进行恢复。那么checkpoin越频繁我们恢复就会越快,当然checkpoint也会对IO产生一些影响,不过一般在磁盘性能允许的情况下,还是建议checkpoint越频繁越好。但是在Postgre...
源码探究PostgreSQL中的Fast Path Locking
首先我们要知道,在数据库启动的时候会初始化共享内存区域,共享内存是一个统称,实际上有很多共享内存区,比如锁也是一块。bill$# for i in 1..HINT: You might need to increase max_locks_per_transaction.说了这么...
PostgreSQL index monitor——监控表上索引使用频率
...percent_of_times_index_used表示表上使用索引查询的频率,建议对于大表这个值要在90%以上。
PostgreSQL如何修改表的字段顺序
比较简单的方法就是将表删除后重建。1 | 2021-07-05 10:09:02.2 | 2021-07-05 10:09:02.3 | 2021-07-05 10:09:02.4 | 2021-07-05 10:09:02.5 | 2021-07-05 10:09:02.HIN...
PostgreSQL获取用户下所有对象
有时我们需要对数据库用户下的对象进行审计时,可以使用下面脚本直接获取用户下所有对象。nsp.,cls.,rol.,case cls.else cls.on rol.oid = cls.on nsp.oid = cls.where nsp.and nsp.and rol.order...
PostgreSQL如何对URL进行解析
尽管PostgreSQL中支持大量的数据类型,但是对于URL似乎并没有一个相应的类型能够去存储。但是有的时候我们对于这些URL数据并不仅仅是简单的查询,我们可能希望通过这些URL能够查询一些额外的信息,例如URL的使用的协议、主机名等等。这里我们便可以使用ts_debug函数来进...
PostgreSQL授权普通用户kill会话权限
作为DBA,可能经常回听到开发人员说“我有个SQL执行太久了,帮我kill下”“我有张表好像锁住了,帮我kill下”。PostgreSQL9.6开始,新增了默认角色pg_signal_backend,这个角色具有 cancel query、terminate 其它会话的权限。Yo...
PostgreSQL 切勿kill -9去杀进程
因此甚至还建议大家去使用kill -9直接去操作系统上杀掉进程。又比如我们Oracle停库的时候常常都是先停监听,再手动kill掉LOCAL=NO的进程,然后再去停库。首先我们先 看一个例子: 这里我们有一个进程号为474的psql进程,如果我们使用kill -9杀掉该进程会发生...
PostgreSQL copy协议与事务
今天看到有人问“PostgreSQL中的copy命令是在同一个事务中执行的吗”。其实我想之所以提出这个问题,主要是想知道在执行copy语句时如果出现错误导致中断,那么数据是会导出/入部分,还是会像事务一样回滚。为了解答这个问题,我们先来简单了解下copy协议。我们使用客户端和数据...
PostgreSQL——真的非要无脑关闭NUMA吗?
相较于Oracle,pg对操作系统的依赖要高很多,因此对于pg的调优很大一部分都在操作系统层面。最近刚好有看到别人聊关于numa这个话题,那么我们就一起来看看pg中numa该如何使用吧。很多有经验的DBA对于numa的建议都是直接关掉,Oracle中更是建议如此,似乎这已经成为大...
简单聊聊PostgreSQL buffer与OS cache
缓存可以说是数据库中相当重要的一部分,很多性能相关的问题都与之息息相关。那么我们今天就聊聊在PostgreSQL中的缓存。在数据库中似乎我们最关心的是磁盘IO,经常会听到数据库IO存在瓶颈之类的问题。这也是为什么在数据库中我们需要缓存。打个比方,对于计算机而言,1个CPU周期是0...
从数据库启动日志看PostgreSQL的崩溃恢复
今天碰到朋友问我个问题,数据库启动时日志中的这个“invalid record length at 3/EAA68B8: wanted 24, got 0”里面的wanted 24是啥意思。 而数据库正常启动时的日志其实并不是上面那样,而是如下图所示: 上图的日志是因为数据库异常...
PostgreSQL OOM最佳实践
OOM是Linux中一个比较常见的情况,PostgreSQL数据库触发OOM现象就是数据库进程被KILL了。OOM发生的原因有很多,这里我们从OOM的产生以及如何在PostgreSQL中预防OOM发生来进行研究。OOM(out-of-memory),顾名思义就是内存溢出了,之所以...
PostgreSQL如何计算age
首先我们要知道pg_class的relfrozenxid字段是什么意思,官方文档对其解释是: “在此之前的所有事务ID在表中已经被替换为一个永久的(“冻结的”) 事务ID。 这用于跟踪表是否需要被清理,以便阻止事务ID回卷或者允许pg_xact被收缩。 如果该关系不是一个表则为0...
PostgreSQL 从cmin/cmax到combo cid
cmin和cmax是PostgreSQL中表的系统字段之一,用来判断同一个事务内的其他命令导致的行版本变更是否可见。即在事务中每个命令都应该能看到其之前执行的命令的变更。cmin:插入事务中的命令标识符(从0开始)。cmax:删除事务中的命令标识符(从0开始)。简单来说,cmin...
PostgreSQL Buffer Manager与hash算法
说的直接点,我要在buffer中访问某个page,数据库怎么去判断buffer中是否存在呢,如果存在又是怎么定位到这个page呢?很简单,通过hash算法。在数据库中似乎hash算法随处可见,hash索引、hash连接等等。之所以使用hash算法,自然是因为其速度快、效率高了。在...
下一页