随笔分类 - postgresql
摘要:表的模式信息存放在系统表中,因此要访问表,就需要首先在系统表中取得表的模式信息。对于一个PostgreSQL系统来说,对于系统表和普通表模式的访问是非常频繁的。为了提高这些访问的效率,PostgreSQL设立了高速缓存(Cache)来提高访问效率。 Cache中包括一个 系统表元组Cache(Sys
阅读全文
摘要:Postgresql作为C语言开发的代码,其中大量的运用了一些宏的操作。 因此理解这些宏很重要,然而有时候这些宏总让人很费解。 作为一个经常翻翻postgresql源码的小白,在这里做一个记录吧,方便自己查看。 1. \ define offsetof(type, field) ((long) &(
阅读全文
摘要:PostgreSQL为每个收到的查询设计一个查询规划。选择正确的匹配查询结构和数据属性的规划对执行效率是至关重要要的,所以系统包含一个复杂的规划器来试图选择好的规划。你可以使用EXPLAIN命令查看查询规划器创建的任何查询。阅读查询规划是一门艺术,需要掌握一定的经验,本节试图涵盖一些基础知识。 以下
阅读全文
摘要:1.相关的数据类型 我们先看相关的数据类型: HeapTupleData (src/include/access/htup.h) HeapTupleHeaderData (src/include/access/htup_details.h) t_choice具有2个成员的联合类型: 1.t_heap
阅读全文
摘要:众所周知,缓存是提高数据库性能的一个重要手段。本文着重讲一讲PostgreSQL中的缓存相关的东西。当然万变不离其宗,原理都是共同的,理解了这些,你也很容易把它运用到其它数据库中。 What is a cache and why do we need one 不同的计算机组件运行的速度是不一样的,他
阅读全文
摘要:是的,又是我,不要脸的又来混经验了。我们知道PostgreSQL是一个高度可扩展的数据库,这次我聊聊如何在PostgreSQL里创建一个优雅的type,如何理解优雅?大概就是不仅仅是type本身,其它相关的“服务”都得跟上,要像数据库自带的type一样想怎么用怎么用。 好的,我们开始。 1. CRE
阅读全文
摘要:今天我们讲一讲pgjdbc。pgjdbc是postgresql的JDBC接口。其网址是 "https://jdbc.postgresql.org/" .是开源软件,我们可以轻松的查看其代码,理解jdbc的工作原理。 一. 源代码目录结构 pgjdbc的源码结构如下图: 那么我们来一一看看各个模块都是
阅读全文
摘要:1.倒排索引原理 倒排索引来源于搜索引擎的技术,可以说是搜索引擎的基石。正是有了倒排索引技术,搜索引擎才能有效率的进行数据库查找、删除等操作。在详细说明倒排索引之前,我们说一下与之相关的正排索引并与之比较。 1.1正排索引 在搜索引擎中,正排表是以文档的ID为关键字,表中记录文档中每个字的位置信息,
阅读全文
摘要:最近客户在使用我司开发的数据库时,报告了如下问题(也不能算是问题,就是疑惑吧),环境如下: 执行准备工作: 然后,开启一个事务,在该事务中查询test表: 在开另一个psql console,查询锁的情况: 发现在执行select期间对表上的所有的索引都加上了AccessShareLock锁,但是查
阅读全文
摘要:HOOK IN POSTGRESQL 初探 前言 众所周知,PostgreSQL具有很好的扩展性,是一个可以"开发"的数据库。在PostgreSQL里面,你可以定制你自己的Types、Function、Operation,支持各种过程语言等等。还可以依据自己的喜好修改源码增加新功能。为方便扩展,Po
阅读全文
摘要:时光荏苒,岁月如梭。楼主已经很久没有更新了。之前说好的一周一更的没有做到。实在是事出有因,没能静下心来好好看代码。当然这不能作为我不更新的理由,时间挤挤还是有的,拖了这么久,该再写点东西了,不然人就怠懒了。不过这回,我准备写的精简些,一方面我想偷点懒省点时间,二来毕竟写太长大家也不一定爱看。 之前我
阅读全文
摘要:1 PL/pgSQL Under the Hood This part discusses some implementation details that are frequently important for PL/pgSQL users to know. 1.1 Variable Subst
阅读全文
摘要:Trigger Procedures PL/pgSQL can be used to define trigger procedures on data changes or database events. A trigger procedure is created with the CREAT
阅读全文
摘要:Errors and Messages 1. Reporting Errors and Messages Use the RAISE statement to report messages and raise errors. The level option specifies the error
阅读全文
摘要:Cursors Rather than executing a whole query at once, it is possible to set up a cursor that encapsulates the query, and then read the query result a f
阅读全文
摘要:利用python(我用的是python2.7版本)连接postgresql数据库,这里使用psycopg2这个插件 官网下载psycopg2 2.5.1.tar.gz:http://initd.org/psycopg/ 过程很简单,如下:
阅读全文
摘要:Control Structures of PL/SQL Control structures are probably the most useful (and important) part of PL/pgSQL.With PL/pgSQL's control structures, you
阅读全文
摘要:最近在看postgresql的查询计划,在查询中对表的扫描计划大概有如下几种: 这里就把自己的理解写下来,欢迎大家批评指正: 1)对于Seq Scan很好理解,就是按照表的记录的排列顺序从头到尾依次检索扫描,每次扫描要取到所有的记录。这也是最简单最基础的扫表方式,扫描的代价比较大; 2)对于Inde
阅读全文
摘要:1.Structure of PL/pgSQL The structure of PL/pgSQL is like below: A label is only needed if you want to identify the block for use in an EXIT statement
阅读全文
摘要:上一篇我们介绍了查询规划模块的总体流程和预处理部分的源码。查询规划模块再执行完预处理之后,可以进入正式的查询规划处理流程了。 查询规划的主要工作由grouping_planner函数完成。在具体实现的时候,针对postgresql中独有的继承表,程序使用inheritance_planner函数来解
阅读全文
浙公网安备 33010602011771号