PostgreSQL的SysCache和RelCache

一,概述当我们访问数据库的表时,需要从系统表中获取一些表的相关信息。这种动作是非常频繁的,为了提高获取这些信息的效率,PostgreSQL设定了两个Cache——SysCache和RelCache。SysCache中存放的是最近使用过的系统表的元组,而RelCache中存放的是最近访问过的表的模式信息(包含系统表的信息)。简单来说,SysCache存放的是每个系统表最近使用过的元组,RelCach

- 阅读全文 -

PostgreSQL的VFD机制

一,VFD概述操作系统对于单个进程能打开的文件数有限制,而数据库系统的进程经常需要打开很多文件进行操作。为了避免这个限制,PostgreSQL实现了VFD(虚拟文件描述符)机制。其实质并没有改变操作系统的限制,只是每个进程维护了一个自己的LRU(Least Recently Used,近期最少使用算法)池来管理本进程打开的所有VFD。当进程需要打开文件时,就从该池中申请VFD,池中每个每个VFD都

- 阅读全文 -

PostgreSQL外存管理——表和元组的存储方式

在了解表和元组的组织方式之前,我们先简单了解下PostgreSQL里面的文件块的概念。PostgreSQL的存储管理器采用与操作系统类似的分页存储管理方式,即数据在内存中是以页面块的形式存在。每个表文件由多个BLCKSZ(一个可配置的常量,在pg_config.h中定义,默认是8KB)字节大小的文件块组成,每个文件块又可以包含多个元组(tuple),如下图所示。表文件以文件块为单位读入内存中,每一

- 阅读全文 -

SQL中的NULL

NULL是SQL中一个特殊的值,表示未知,在数据库中显示为空。NULL的字段不管是什么类型一般占一个bit(PostgreSQL中是这样实现的)。SQL标准对于NULL值有以下一些规定(注:基于PostgreSQL讨论,其它数据库可能有差异):凡是NULL参与的算术表达式(诸如加减乘除)运算结果均为NULL。postgres=# select 10 + NULL; ?column? -----

- 阅读全文 -

PostgreSQL查询执行器之查询执行策略选择

1. 查询执行策略在PostgreSQL中,用户输入的SQL语句被分为两种类型,并被两种不同的执行部件处理:(1)可优化语句(Optimizable statement)————由执行器(Executor)执行器去执行。可优化语句主要是DML语句(SELECT、INSERT、UPDATE、DELETE等),这里语句的特点是均需要查询相关满足条件的元组,然后将这些元组返回给用户,或者在这些元组上进行

- 阅读全文 -

PostgreSQL的查询处理概述

查询处理器是数据库管理系统中一个部件集合,它允许用户使用SQL语言在较高层次上表达查询,其主要职责是将用户的各种命令转化为数据库上的操作序列并执行。查询处理分为查询编译和查询执行两个阶段。查询编译的主要任务是根据用户的查询语句生成数据库中的最优执行计划,在此过程中要考虑视图、规则及表的连接路径等问题。查询执行主要考虑执行计划时所采用的算法问题。1. 查询编译器概述当PostgreSQL的后台服务进

- 阅读全文 -

PostgreSQL源码里面的List结构

PostgreSQL中广泛使用了一种List数据结构,该结构是一个单链表。其定义在pg_list.h和list.c文件中:typedef struct ListCell ListCell; typedef struct List { NodeTag type; /* T_List, T_IntList, or T_OidList */ int length; List

- 阅读全文 -

PostgreSQL内存上下文学习

1. 内存上下文概述从7.1版本开始,PostgreSQL使用新的内存管理机制——内存上下文(MemoryContext)来进行内存管理,以解决之前大量指针传递引起的内存泄漏问题。使用该机制后,数据库中的内存分配操作都是在各种语义的内存上下文中进行,所有在内存上下文中分配的内存空间都通过内存上下文进行记录。因此可以很轻松的通过释放内存上下文来释放其中的所有内容。在实际的使用过程中,每个进程都会有自

- 阅读全文 -

微信公众号

随机文章

最近回复

  • repostone: 非技术的路过。
  • NYC: 确认一下你配置的调度策略是Fair,而不是Capacity,不要...
  • NYC: 这个没问题,我文章里面说的是策略,配置的时候是通过CDH配置的。...
  • 一方: 但是我的action队列抢占了资源,导致action不能并行,难...
  • NYC: 是的,不管是哪个队列,队列内部只要有资源够action/lanu...
  • 一方: 老铁,我想问下,你分配好队列,然后固定了lancher队列的am...
  • 一方: https://blog.csdn.net/bigdatapri...
  • NYC: 1,我的解决方案是不可能完全杜绝死锁的,我目前也没有发现比较好的...
  • 一方: 老铁你好!看了下你的解决方案,感觉还是无法解决死锁的问题啊,假如...
  • luke: **感谢分享**

分类

标签