- 浏览: 232117 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
chenxliang:
2016年10月26、27日,上海浦东,Postgres中国用 ...
PostgreSQL的用户、角色和权限管理 -
gejiod:
最近出了SQL:2011標準,希望樓主也更新下
SQL2008标准 -
lincon77:
太长了,又是E文,要是有些例子可能好理解些
SQL2003标准 -
少主丶无翼:
很谢,找了很久
SQL2003标准 -
zeeeitch:
...
PostgreSQL启动过程中的那些事七:初始化共享内存和信号二十:shmem中初始化堆同步扫描、pg子进程相关结构
题外话:年底了,就以这篇博文结束2012吧
总结回顾一下 pg 服务进程中的内存上下文吧。
Pg
的内存管理就像经济体制,计划经济和市场经济并存,主要是共享内存和内存上下文。共享内存就是计划经济,启动时根据各相关参数计算好大小就固定了,使用时也严格按照计划使用。内存上下文就是市场经济,这一部分是按需使用。这两种内存的管理前面有几篇文章做了专门讨论,可以参考
pg的内存管理机制一:AllocSet的内存分配
http://blog.csdn.net/beiigang/article/details/7051589
PostgreSQL的内存管理机制二:AllocSet/MemoryContext的内存回收
http://blog.csdn.net/beiigang/article/details/7058324
PostgreSQL的内存管理机制三:AllocSet/MemoryContext实例删除和内存回收
http://blog.csdn.net/beiigang/article/details/7093975
PostgreSQL的内存管理机制四:AllocSet/MemoryContext的内存再分配
http://blog.csdn.net/beiigang/article/details/7096613
PostgreSQL的内存管理机制十一:初始化共享内存shared memory及其哈希表索引
http://blog.csdn.net/beiigang/article/details/7176390
PostgreSQL的内存管理机制十二:共享内存/shmem分配
http://blog.csdn.net/beiigang/article/details/7288763
等。
这一节结合前面讨论简单查询的例子回顾一下 pg 服务进程处理简单查询时用到的各内存上下文。
1
下面是从 pg 服务进程从 postmaster 进程进程过来的内存上下文。
2
创建了 CacheMemoryContext 内存上下文 , 在 CacheMemoryContext 里创建 catchache 的相关对象 , 并创建了管理 relchache 的哈希表 RelationIdCache 。
3
创建了 PortalMemory 内存上下文 , 在 PortalMemory 里创建了管理 protal 的哈西表 “Postal hash” 对象。
4
创建了 MessageContext 、 TransactionAbortContext 、 TopTransactionContext 内存上下文 , 在 TopTransactionContext 创建了内存快照、资源属主 , MessageContext 在其里创建了解析树、 query 树、 plan 树 , 在 TransactionAbortContext 里记录在事务提交或回滚时要清理相关资源的情况。
5
创建了 inline_set_returning_function 临时 内存上下文 ,在里面处理内联函数返回值,用完后马上删除。
6
创建了 PortalHeapMemory , ExecutorState 、 HashTableContext 、 HashBatchContext 等内存上下文。这些内存上下文和前面讨论简单查询时的例子紧密相关,会为了完成不同的查询语句而创建不同的内存上下文,下面是前面讨论时用到的例子,及这个查询语句的执行计划。
简单查询例子:
create table test1 (ID numeric(10), cname varchar(30));
create table test2 (ID numeric(10), comp varchar(30));
select cname,comp from test1,test2 where test1.id=test2.id;
该例子的执行计划,可以看出对这两个表做 hash 连接和分别做顺序扫描,并做 hash 连接需要的 hash 运算。
explain select cname,comp from test1,test2 where test1.id=test2.id;
"Hash Join (cost=24.63..116.69 rows=2113 width=156)"
" Hash Cond: (test1.id = test2.id)"
" -> Seq Scan on test1 (cost=0.00..16.50 rows=650 width=94)"
" -> Hash (cost=16.50..16.50 rows=650 width=94)"
" -> Seq Scan on test2 (cost=0.00..16.50 rows=650 width=94)"
在 PortalHeapMemory 里创建了这个查询计划的描述符 QueryDesc ,及这个查询计划描述符 querydesc 的成员,这个查询计划的执行状态 Estate 等对象。
------------
转载请注明出处,来自博客:
blog.csdn.net/beiigang
beigang.iteye.com
发表评论
-
PostgreSQL服务过程中的那些事二:Pg服务进程处理简单查询六:执行器执行
2012-11-07 20:13 1848话说 查询“ select c ... -
PostgreSQL服务过程中的那些事二:Pg服务进程处理简单查询五:规划成plantree
2012-10-31 20:37 1753话说 查询“ select cname, comp ... -
PostgreSQL服务过程中的那些事二:Pg服务进程处理简单查询四:分析重写成querytree
2012-10-24 19:27 1440话说 查询“ select cname, comp ... -
postgresql 小技巧
2012-10-16 19:36 1406Note : #PostgreSQL and ... -
PostgreSQL服务过程中的那些事二:Pg服务进程处理简单查询三:获取内存快照
2012-10-16 19:31 1764话说 查询“ select cname, comp ... -
PostgreSQL服务过程中的那些事二:Pg服务进程处理简单查询二:SQL解析为parsetree
2012-10-09 19:50 1553话说 查询“ select cname, comp fr ... -
PostgreSQL服务过程中的那些事二:Pg服务进程处理简单查询一:开启事务
2012-09-25 19:55 1900在《 PostgreSQL 服务过程中的那些事二: ... -
PostgreSQL服务过程中的那些事一:启动postgres服务进程一.八:加载DB基础设施,完成服务进程初始化
2012-09-18 21:02 1810话说调用 InitPostgres ... -
PostgreSQL服务过程中的那些事一:启动postgres服务进程一.七:初始化portal管理环境
2012-09-11 19:58 1638话说调用 In ... -
PostgreSQL服务过程中的那些事一:启动postgres服务进程一.六:初始化系统表缓存catcache
2012-09-04 20:51 1871话说调用 InitPostgres ... -
PostgreSQL服务过程中的那些事一:启动postgres服务进程一.五:初始化relcache管理环境
2012-08-28 20:47 1325话说调用 InitPostgres ... -
PostgreSQL服务过程中的那些事一:启动postgres服务进程三:初始化relcache管理环境
2012-08-28 20:46 0<!-- [if gte mso 9]><x ... -
PostgreSQL服务过程中的那些事二:Pg服务进程处理简单查询梗概
2012-08-21 21:04 1264话说客户端发起请求, pg 服务器为该请求启动一个 ... -
PostgreSQL服务过程中的那些事一:启动postgres服务进程二:建立连接完成
2012-08-13 18:50 15823 这节主要讨论 pg 服务进程 pos ... -
PostgreSQL服务过程中的那些事一:启动postgres服务进程一
2012-08-08 14:42 5713到pg 服务进程了,打算搞一个完整但简单的查询例子,从 ... -
PostgreSQL启动过程中的那些事十九:walwriter进程二
2012-08-03 16:53 13873 这节主要讨论 walwrit ... -
PostgreSQL启动过程中的那些事十九:walwriter进程一
2012-08-01 17:26 1626话说 main()->Po ... -
PostgreSQL启动过程中的那些事十八:bgwriter进程二
2012-07-27 07:25 14393 这节主要讨论 bgwr ... -
PostgreSQL启动过程中的那些事十八:bgwriter进程一
2012-07-23 20:18 1656话说 main()->Postm ... -
PostgreSQL启动过程中的那些事十六:启动进程三:CheckPointGuts刷出共享内存里所有数据
2012-07-12 16:24 1490话说启动进程调用 Startup ...
相关推荐
三、 pg_attrdef: pg_attrdef: pg_attrdef:pg_attrdef:pg_attrdef:pg_attrdef:pg_attrdef:pg_attrdef:pg_attrdef: . 63 四、 pg_authid: pg_authid: pg_authid: pg_authid:pg_authid: 64 五、 pg_auth_members: pg_...
当存储过程运行到该行时,执行会暂停,允许检查当前的变量状态和执行上下文。在psql中,虽然没有图形化的断点,但可以通过退出和重新进入存储过程来模拟类似效果。 4. **查看和修改变量** 在存储过程中,可以使用`...
**PGAdmin系统管理PostgreSQL中文手册** 这本中文手册详细阐述了如何利用pgAdmin这一强大的图形用户界面工具来管理和操作PostgreSQL数据库系统。pgAdmin是一款免费的开源软件,专为PostgreSQL设计,提供了直观的...
Postgresql存储过程是指在Postgresql数据库中定义的一组SQL语句的集合,它可以完成复杂的操作,并且可以重复使用。Postgresql存储过程可以用来实现业务逻辑,减少数据库服务器的压力和网络传输的数据量。 一、存储...
DBD::Pg作为DBI的子模块,专为PostgreSQL提供服务。 **PostgreSQL与libpq** PostgreSQL,通常简称为Postgres,是一种开源的关系型数据库管理系统(RDBMS),以其高度的稳定性和强大的功能著称。libpq是PostgreSQL...
这使得用户可以在本地计算机上搭建和运行PostgreSQL数据库服务器。 2. 依赖库:PostgreSQL运行需要一些特定的库文件支持,比如libssl(用于加密通信)、libpq(PostgreSQL的C语言接口库)等。离线安装包通常会打包...
5. **数据操作**:pgAdmin3提供数据编辑器,允许你直接在界面上添加、修改和删除记录,非常方便。 6. **备份与恢复**:pgAdmin3也支持数据库的备份和恢复。通过“工具”菜单,选择“备份”或“恢复”命令,按照向导...
其中,存储过程是一个非常重要的概念,本文将对 PostgreSQL 中的存储过程进行详细的介绍和解释。 什么是存储过程 存储过程是一组为了完成特定任务而编写的 SQL 语句集合。它可以将复杂的操作封装起来,以便于重复...
7. **扩展支持**:pgAdmin3能够管理PostgreSQL的各种扩展,如PostGIS(地理空间数据库)、PL/pgSQL(内置过程语言)和其他第三方模块。 8. **多语言支持**:pgAdmin3-1.8.4支持多种语言,包括中文,使得非英语用户...
在编译 PostgreSQL 的过程中,需要带上 --with-perl 选项,以便正确地安装 Pl/PerlU 语言组件。 五、安装依赖包 在主节点上,需要安装以下依赖包: * DBI 模块 * DBD::Pg 模块 * DBIx::Safe 模块 其中,DBI 模块...
这样的设计对于那些需要在本地或内存中快速访问数据的应用,或者希望减少对外部服务依赖的开发场景特别有用。在【unittests】中使用嵌入式PostgreSQL服务器,可以方便地进行数据库相关的测试,因为无需安装或配置...
在PostgreSQL数据库系统中,后台工作进程(Background Worker)是一种扩展其功能的重要机制。这些进程独立于主要的数据库服务器进程运行,允许开发者实现自定义任务,如定期维护、监控或其他后台服务。Go语言以其...
Maven坐标:org.postgresql:postgresql:42.3.1; 标签:postgresql、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构...
在Linux系统上搭建PostgreSQL、PostGIS和pg_pathman环境是一项关键的任务,这些组件共同构成了一个强大的地理空间数据库解决方案。PostgreSQL是一种开源的关系型数据库管理系统,具有高度的可扩展性和可靠性;...
pg_ctl -w start -D /opt/PostgreSQL/9.1/data -l /opt/PostgreSQL/9.1/data/pg_log/startup.log ``` 而停止服务器可以使用: ``` pg_ctl stop -m fast -w -D /opt/PostgreSQL/9.1/data ``` ### 二、服务器配置 ##...
DBD::Pg是Perl编程语言中的一个数据库驱动模块,它与DBI(Database Interface,数据库接口)模块一起工作,为开发者提供了访问PostgreSQL数据库的能力。PostgreSQL是一种强大的开源关系型数据库管理系统,以其高度的...
PostgreSQL 14.1 手册 PostgreSQL 全球开发组 翻译:彭煜玮1,PostgreSQL中文社区2文档翻译组
- `src/backend/utils/misc/pg_shmem.c`文件中实现了共享内存的相关功能,这对于多进程之间的通信非常重要。 #### 五、PostgreSQL与MySQL对比 **1. PostgreSQL文件目录组织**: - 整体代码结构清晰,遵循了良好的...
本程序的重点是如何利用C#对PostgreSQL数据库进行操作,PDatabase.cs是一个完整的操作类,role是角色表的操作类,程序采用三层架构模型。 在对PostgreSQL数据库进行操作时,用到了如何调用存储过程来完成各项操作。...
在开始使用PostgreSQL之前,你需要了解如何在不同的操作系统上安装和配置PostgreSQL 9.6.0。这包括设置环境变量、配置服务器参数、创建数据库集群和启动/停止服务等步骤。 三、数据类型与操作 PostgreSQL提供了丰富...