题外话:年底了,就以这篇博文结束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
- 大小: 5 KB
- 大小: 8 KB
- 大小: 10.8 KB
- 大小: 17 KB
- 大小: 19.9 KB
- 大小: 23.6 KB
分享到:
相关推荐
三、 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_...
**PGAdmin系统管理PostgreSQL中文手册** 这本中文手册详细阐述了如何利用pgAdmin这一强大的图形用户界面工具来管理和操作PostgreSQL数据库系统。pgAdmin是一款免费的开源软件,专为PostgreSQL设计,提供了直观的...
当存储过程运行到该行时,执行会暂停,允许检查当前的变量状态和执行上下文。在psql中,虽然没有图形化的断点,但可以通过退出和重新进入存储过程来模拟类似效果。 4. **查看和修改变量** 在存储过程中,可以使用`...
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也支持数据库的备份和恢复。通过“工具”菜单,选择“备份”或“恢复”命令,按照向导...
这样的设计对于那些需要在本地或内存中快速访问数据的应用,或者希望减少对外部服务依赖的开发场景特别有用。在【unittests】中使用嵌入式PostgreSQL服务器,可以方便地进行数据库相关的测试,因为无需安装或配置...
其中,存储过程是一个非常重要的概念,本文将对 PostgreSQL 中的存储过程进行详细的介绍和解释。 什么是存储过程 存储过程是一组为了完成特定任务而编写的 SQL 语句集合。它可以将复杂的操作封装起来,以便于重复...
7. **扩展支持**:pgAdmin3能够管理PostgreSQL的各种扩展,如PostGIS(地理空间数据库)、PL/pgSQL(内置过程语言)和其他第三方模块。 8. **多语言支持**:pgAdmin3-1.8.4支持多种语言,包括中文,使得非英语用户...
在编译 PostgreSQL 的过程中,需要带上 --with-perl 选项,以便正确地安装 Pl/PerlU 语言组件。 五、安装依赖包 在主节点上,需要安装以下依赖包: * DBI 模块 * DBD::Pg 模块 * DBIx::Safe 模块 其中,DBI 模块...
在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 ``` ### 二、服务器配置 ##...
PostgreSQL 14.1 手册 PostgreSQL 全球开发组 翻译:彭煜玮1,PostgreSQL中文社区2文档翻译组
DBD::Pg是Perl编程语言中的一个数据库驱动模块,它与DBI(Database Interface,数据库接口)模块一起工作,为开发者提供了访问PostgreSQL数据库的能力。PostgreSQL是一种强大的开源关系型数据库管理系统,以其高度的...
- `src/backend/utils/misc/pg_shmem.c`文件中实现了共享内存的相关功能,这对于多进程之间的通信非常重要。 #### 五、PostgreSQL与MySQL对比 **1. PostgreSQL文件目录组织**: - 整体代码结构清晰,遵循了良好的...
本程序的重点是如何利用C#对PostgreSQL数据库进行操作,PDatabase.cs是一个完整的操作类,role是角色表的操作类,程序采用三层架构模型。 在对PostgreSQL数据库进行操作时,用到了如何调用存储过程来完成各项操作。...
在开始使用PostgreSQL之前,你需要了解如何在不同的操作系统上安装和配置PostgreSQL 9.6.0。这包括设置环境变量、配置服务器参数、创建数据库集群和启动/停止服务等步骤。 三、数据类型与操作 PostgreSQL提供了丰富...