postgresql
文章平均质量分 57
spche
这个作者很懒,什么都没留下…
展开
-
使用vs2019编译postgresql 12
1.按照PG的帮助下载需要的包,有一些不下到了,如xml的,但编译能通过,也许是12优化编译了,没存在的包能跳过了,具体原因再找2. git clone,速度慢的话,去网上找找,改hosts后,下载速度飞快。3.修改postgresql\src\tools\msvc\VSObjectFactory.pm中的DetermineVisualStudioVersion函数,直接返回retu...原创 2020-02-06 17:05:04 · 1557 阅读 · 1 评论 -
ingres 中的 parallel create index
在开源的数据库中,支持并行建索引的,只有ingres,但它并不是并行建一个索引,而是对同一个表,同时并行建多个索引,下面主要分析它如何协调主子线程通信部分,使用版本是 ingres-10.1.0-114-gpl;并行建索引函数为:src/back/dmf/dmu/dm2upind.c STATUS dm2u_pindex( DM2U_INDEX_CB *index_cbs)主子线程通信函数是 src/back/dmf/dmu/dm2uputi.c DB_STATUS dm2u原创 2011-03-16 14:24:00 · 1677 阅读 · 2 评论 -
postgresql中新增数据类型
在ADT目录下面新增一个文件,主要实现下面四个函数in : 输入函数,把SQL中的输入转化成数据库内部表示out: 输出函数,把数据库内部表示转化成可视的内容send recv 相当于二进制的 in ,out 在 include/catalog/pg_proc.h 中 增加那四个函数在 pg_proc的定义,这个pg_proc.h会生成BKI文件 include/c原创 2012-04-20 23:53:27 · 1549 阅读 · 2 评论 -
postgresql 中的 large object
//主要有下面两个系统表,pg_largeobject_metadata主要记录权限的,有用的只有pg_largeobjectCATALOG(pg_largeobject_metadata,2995){ Oid lomowner; /* OID of the largeobject owner */#ifdef CATALOG_VARLEN /* variab原创 2012-05-02 23:41:08 · 2633 阅读 · 0 评论 -
replication
这是pg的主从备份,就是有一个主机把修改发给一个或多个副机,pg主从机之间是通过log来实现的,而不是采用简单的SQL,主机是sender,从机是receiver,就是进程,有多少个receiver,主机就有多少个进程,默认是异步的,就是主机不停的从硬盘上log中读取,之后发给副机,副机把收到的log应用到数据库中,主机中正在执行的事务是与发送没关系的,目前还没有实现从内存的log buf原创 2012-05-02 23:41:38 · 1228 阅读 · 0 评论 -
Transaction
TransactionId 是一个32位的无符号整数,事务和子事务的id,全是按照一个顺序来的,当这个32位整数用完一圈后,就需要一些特殊的操作/*---------- * Check to see if it's safe to assign another XID. This protects against * catastrophic data loss due to X原创 2012-04-20 23:59:40 · 1415 阅读 · 0 评论 -
postgresql中的统计信息
pg里面有一个专门的进程 statistics collector 负责对数据库,表,函数的调用次数进行统计,通过socket与执行查询的进程进行通信,当执行语句的进程,在执行一条语句时,会在执行前,把上条语句的统计信息通过socket发送给 statistics collector 进程,这样做是因为上个事务已经 commit 或 rollback 了,统计的是事务已完成的数量。 sta原创 2012-04-20 23:54:01 · 3556 阅读 · 0 评论 -
postgresql中增加系统参数
/* * Certain options can only be set at certain times. The rules are * like this: * * INTERNAL options cannot be set by the user at all, but only through * internal processes ("server_versio原创 2012-04-20 23:54:09 · 1261 阅读 · 0 评论 -
Building Indexes Concurrently
/* * We do a concurrent index build by first inserting the catalog entry for the * index via index_create(), marking it not indisready and not indisvalid. * Then we commit our transaction and st原创 2012-04-20 23:54:48 · 587 阅读 · 0 评论 -
在VS2008上面单步调试pgsql9.2
对于9.2 用vs2008对于flex总报错,把bison下的 libintl3.dll regex2.dll libiconv2.dll m4.exe 向flex\bin下面拷一份msvc\buildenv.pl 中的内容 $ENV{PATH}=$ENV{PATH}.';C:/pg/bison/bin;C:/pg/diffutils/bin;C:/pg/flex/bin;C:/pg/ge原创 2010-01-12 10:51:00 · 1575 阅读 · 1 评论 -
postgresql9.6中的 Row Security Policies
1.。中文VS2008下面编译pg9.6修改VSObjectFactory.pm 中的 DetermineVisualStudioVersion 直接 return '9.00';原创 2016-11-16 17:42:56 · 945 阅读 · 0 评论 -
BenckMarkSQL5.0 绘图
yum install texinfo-texyum install libjpeg-turbo下载新版本的zlib http://www.zlib.net/./configure --prefix=/home/aaa/zlib1.2.6makemake installvi /etc/ld.so.conf.d/zlib.conf加入如下内容后保存退出/home/aaa/zlib1.2.6/li...原创 2018-03-13 14:11:18 · 359 阅读 · 0 评论 -
性能监控
vmstat 1 -SmSwap si: Amount of memory swapped in from disk (/s). so: Amount of memory swapped to disk (/s).CPU These are percentages of total CPU time. us: Time spent running n...原创 2018-03-13 19:56:26 · 519 阅读 · 0 评论 -
ARIES
ARIES是一个恢复算法,是一系列的论文组成主论文ARIES: A Transaction Recovery Method Supporting Fine-Granularity Locking and Partial Rollbacks Using Write-Ahead Logging索引方面ARIES/KVL : A Key-Value Locking Method for Concurrency Control of Multiaction Transactions Operating on B-T原创 2010-11-15 09:55:00 · 2670 阅读 · 0 评论 -
posrgresql 中的 subtransaction-log
<br />这个最简单,只记录了一个整数,就是子事务的父事务ID,就是在pg_subtrans目录下,也是通过LRU算法,在共享内存中<br />/* * The pg_subtrans manager is a pg_clog-like manager that stores the parent * transaction Id for each transaction. It is a fundamental part of the * nested transactions imple原创 2010-11-09 18:02:00 · 1245 阅读 · 0 评论 -
postgreSQL 的 lightweight lock
LWLocks are normally used to protect not-very-long sections of computation typedef struct LWLock{slock_t mutex; /* Protects LWLock and queue of PGPROCs */bool releaseOK;原创 2010-01-13 16:58:00 · 1058 阅读 · 0 评论 -
在ubuntu8.04中单步调试postgresql
先装readline包sudo apt-get install libreadline5-dev zlib1g-dev安装flex,为安装postgis使用sudo apt-get install flex(1)PostgreSQL 的安装tar jzvf postgresql-8.3.1.tar.bz2cd postgresql-8.3.1.tar.bz2./configure --prefix原创 2010-01-12 10:53:00 · 6995 阅读 · 0 评论 -
postgresSQL的锁总结
总共有三种锁 spin, lwlock, lockspin个数没有限制,做为其它锁的一部分,没有等待队列,就一种锁方式,使用系统调用实现lwlock个数有限制,队列数组实现,短时间修改内存时使用,有等待队列,可以等待,在共享内存中,一个锁对应两种锁方式,排它和共享,lock个数有限制,hash实现,进程或事务上锁,可以等待,在共享内存中,一个锁对应多种封锁方式原创 2010-01-12 10:58:00 · 886 阅读 · 0 评论 -
postgreSQL 的 page
page的结构如下* +----------------+---------------------------------+* | PageHeaderData | linp1 linp2 linp3 ... |* +-----------+----+---------------------------------+* | ... linpN | |* +---原创 2010-01-12 10:59:00 · 961 阅读 · 0 评论 -
postgresql 的buffer 的clock sweep 算法
typedef struct sbufdesc{BufferTag tag; /* ID of page contained in buffer */BufFlags flags; /* see bit definitions above */uint16 usage_count; /* usage counter for clock sweep code */unsigned r原创 2010-01-12 11:00:00 · 1829 阅读 · 0 评论 -
postgreSQL 中的 Lock
typedef struct LOCK{/* hash key */LOCKTAG tag; /* unique identifier of lockable object *//* data */LOCKMASK grantMask; /* bitmask for lock types already granted */LOCKMASK waitMask; /* bitm原创 2010-01-13 16:55:00 · 2917 阅读 · 0 评论 -
postgresql的shared memory
postgresql是多进程的,这个 shared memory 就是多个进程中进行通信用的,是用共享内存实现的在 storage/ipc/ipci.c 中的 voidCreateSharedMemoryAndSemaphores(bool makePrivate, int port) 函数中主要包括shmem index table 类型是 hash table在shared m原创 2010-01-13 17:00:00 · 2358 阅读 · 0 评论 -
postgresql的内存分配
pg为了分配内存的时候,方便管理,不产生内存泄露,引入了MemoryContext,所有的内存全从MemoryContext 中进行分配,所有的MemoryContext构成一棵树,树的根结点为 TopMemoryContext ,TopMemoryContext 只初始化一次,在数据据库启动过程中完成初始化每次分配是从 CurrentMemoryContext ,上面进行分配的主要用原创 2010-01-13 17:00:00 · 1609 阅读 · 0 评论 -
postgreSQL 的 dynamic hash table
dynamic hash table 是只存在于内存中,不向硬盘写的,为了便于内存查找的数据结构,不是indexdynamic hash table 既可以存在本进程的私有内存,也可以存在共享内存中,dynamic hash table 中存在多个directory, 每个directory存在多个 segment, 每个segment其实就是 bucket 链表的首指针,hash 值相同原创 2010-01-13 16:57:00 · 1106 阅读 · 0 评论 -
pgpool分析
应用http://mengqingyu.javaeye.com/blog/463666http://zauc.wordpress.com/2010/01/23/%E4%BD%BF%E7%94%A8pgpool-ii%E8%BF%9B%E8%A1%8Cpostgresql%E7%9A%84replication/http://blog.csdn.net/xtlog/archive/200原创 2010-04-16 14:36:00 · 1824 阅读 · 1 评论 -
pgpool分析二
pgpool就是一个架在数据库与应用系统之间的中间层,用于实现cluster或分布式数据库,实现数据库的大规模集成应用,类以于oracle的Tuxedo;不过这个是开源的,功能上也有一些限制,具体应用去它的官网上去看,下面主要分析它的实现原理对于replication,它和mysql一样是通过传递SQL实现的,对于分布式存储,它是把SQL经过parse,rewrite之后,生成经过优化后的SQ原创 2010-05-20 22:56:00 · 5105 阅读 · 1 评论 -
pgpool分析三
pgpool一共可以管理pool_config->num_init_children * pool_config->max_pool * sizeof(ConnectionInfo);数据库连接每个pool_config->num_init_children 对应pgpool的一个child进程,也就是对应一台postgresql数据库,这个进程最多可以管理pool_config->max_p原创 2010-05-28 15:09:00 · 2012 阅读 · 0 评论 -
postgresql Two-phase commit
对于XA的支持,pg目前没明确提出来,只是实现了两阶段提交,XID这个名词已被占用,所以提出了GID a global transaction identifier create table a(a int);begin;insert a values(1);prepare transaction 'aaa';commit prepared 'aaa';rollback prepared 'aaa';目前支持这样的语法,'aaa' 就是GID,具体见下http://www.postgresql.org/do原创 2010-09-29 10:43:00 · 2369 阅读 · 0 评论 -
postgresql 中的 clog
<br />clog 就是 commit log<br />用来记录事物最终状态的日志,放在数据库目录的pg_clog下面,<br />PG中,每一个事务的事务号是一个32的整数,有三个是比较特殊的<br />/* ---------------- * Special transaction ID values * * BootstrapTransactionId is the XID for "bootstrap" operations, and * FrozenTransactionI原创 2010-11-09 15:53:00 · 3273 阅读 · 1 评论 -
posrgresql 中的 multi-transaction-log
<br />其实主要是当把多个事务ID看作一个事务ID时,给这多个事务的集合一个multi的事务ID,这个事务ID不是普通的事务ID,有专有用途,<br />MultiXactId 也是32整数,为了把事务的集合存起来,需要两个文件,一个是存集合的偏移,另一个存集合中的事务ID,集合的大小没存,是通过相邻的偏移计算的,存放在数据库目录下的 pg_multixact 下<br /> <br /> <br />/* * The pg_multixact manager is a pg_clog-like m原创 2010-11-09 17:48:00 · 1218 阅读 · 0 评论 -
postgresql中的spin lock
这是和硬件相关,使用操作系统底层函数实现的封锁,实现部分在 storage/lmgr/s_lock.c 中这种封锁的锁 就是一个整数, 且只有两个值,1 表时封锁,0 表示解锁,封锁就是调用系统函数将锁置为1, 解锁就是直接置0spin lock是其它封锁的基础,别的封锁全是在 spin lock 上面实现的原创 2010-01-13 16:59:00 · 685 阅读 · 0 评论