POSTGRCSQL - 技术教程文章

Measuring PostgreSQL Checkpoint Statistics【代码】

Checkpoints can be a major drag on write-heavy PostgreSQL installations. The first step toward identifying issues in this area is to monitor how often they happen, which just got an easier to use interface added to the database recently.  Checkpoints are periodic maintenance operations the database performs to make sure that everything it’s been caching in memory has been synchronized with the ...

mac 快速启动postgresql【代码】

brew install postgresql mkdir -p /usr/local/var/postgres initdb /usr/local/var/postgres/data mkdir -p /usr/local/var/log/postgres pg_ctl start -D /usr/local/var/postgres/data -l /usr/local/var/log/postgres/log.log export PGDATA=/usr/local/var/postgres/data原文:http://my.oschina.net/u/923974/blog/504440

Postgresql_常用的几个日期处理方法

虽然不常用,但是找的时候挺不好找的,那就记录下来。1.两个日期之间的天数(包括两头的日期,所以+1)select extract(day from(age(to_date(‘2014-01-02‘,‘yyyy-mm-dd‘),to_date(‘2014-01-01‘,‘yyyy-mm-dd‘))))+12.根据两个日期,生成之间的日期 select to_date(to_char(generate_series(‘2014-01-01‘::date,‘2014-01-02‘, ‘1 days‘),‘yyyy-mm-dd‘),‘yyyy-mm-dd‘)date原文:http://blog.csdn.net/ls_man/articl...

PostgreSQL 11 install with jit on CentOS 7.5 X64

1.system infoCentOS Linux release 7.5.1804 X86_64 2.disable selinux and firewalldinstall require os packages-# yum install -y epel-release-# yum install -y gcc gcc-c++ readline-devel zlib-devel libicu-devel4.llvm install1).cmake-# wget https://cmake.org/files/v3.11/cmake-3.11.4.tar.gz-# tar zxvf cmake-3.11.4.tar.gz-# ./configure-# make-# make install2).llvm-# wget http://releases.llvm.org/7.0.0/ll...

PostgreSQL之windows下的安装和使用【图】

一、下载从http://www.enterprisedb.com/products-services-training/pgdownload#windows 选择你要下载的版本,我是在win7 64位下操作的,下载的是9.4.4版本http://get.enterprisedb.com/postgresql/postgresql-9.4.4-3-windows-x64.exe二、安装双击运行,如下图:选择next,如下图:选择安装目录(我选择的是默认的,也可以自行选择安装路径),选择next:选择数据目录(我选择的是默认的,也可以自行选择安装路径),选择next:设...

PostgreSQL 12.2 公开课及视频及PGCE认证(第10期)(CUUG)(2020年)

十、PostgreSQL 12.2 IN/EXISTS/ANY/ALL/JOIN百花争鸣 1、IN/EXISTS/ANY/ALL哪个好?2、相同业务IN/EXISTS/ANY/ALL/INNER JOIN解决方案对比。3、相同业务NOT (IN/EXISTS/ANY/ALL)解决方案对比。4、数据量的增长对性能带来的严重影响如何解决?5、我们是否应该意识到更多的复杂性?6、给开发人员的建议!这是针对PostgreSQL数据库编写SQL查询的开发人员提出的最常见的问题之一。数据量的增长对性能带来的挑战是非常残酷的,我们该如何应...

PostgreSQL 安装

http://www.csdn.net/article/2012-08-23/2809053-PostgreSQL-is-Our-New-Default一、安装(以root身份进行)1、检出最新的postgresql的yum配置从http://yum.pgsqlrpms.org/reporpms/repoview/pgdg-centos.html然后根据版本选择需要的rpm后执行下列命令rpm -Uvh http://yum.pgsqlrpms.org/reporpms/8.3/pgdg-centos-8.3-6.noarch.rpm2、安装或者升级postgresql-libsyum upgrade postgresql-libs3、安装postgresqlyum install postgre...

PostgreSQL教程(十七):客户端命令(1)

零、口令文件: 在给出其它PostgreSQL客户端命令之前,我们需要先介绍一下PostgreSQL中的口令文件。之所以在这里提前说明该文件,是因为我们在后面的示例代码中会大量应用该文件,从而保证我们的脚本能够自动化完成。换句话说,如果在客户端命令执行时没有提供该文件,PostgreSQL的所有客户端命令均会被口令输入提示中断。 在当前用户的HOME目录下,我们需要手工创建文件名为 .pgpass的口令文件,这样就可以在我们连接Postg...

postgresql:解决in的效率问题【代码】【图】

数据库中进行表的链接查询比使用in的速度是要快的,怎样在程序中避免使用in? postgresql提供了regexp_split_to_table这个函数,我们可以借助该函数避免使用in带来的问题 使用方法:   有表A,表A中有字段Id  使用in查询:select * from A where id in ( xxx,xxxx,xxxx)  替换后写法:select A.* from (select regexp_split_to_table(‘xxxx,xxx‘,‘,‘ ) as ids) as tt join A on tt.ids=A.id 分割方式随意,上面的替换...

PostgreSQL Replication之第一章 理解复制概念(2)【图】

1.2不同类型的复制 现在,您已经完全地理解了物理和理论的局限性,可以开始学习不同类型的复制了。1.2.1 同步和异步复制我们可以做的第一个区分是同步复制和异步复制的区别。这是什么意思呢?假设我们有两台服务器,希望从一台服务器(the master)复制数据到第二台服务器(the slave)。下图说明了同步和异步复制的概念:我们可以使用一个简单的事务如下所示:BEGIN:INSERT INTO foo VALUES (‘bar‘);COMMIT;在异步复制的情况下,...

PostgreSQL 与 MySQL 相比,优势何在?【转】

最近看到PostgreSQL话题比较多,就搜索了一下它与mysql的对比作者:知了链接:http://www.zhihu.com/question/20010554/answer/74037965来源:知乎一、PG相对于MySQL的优势:1、在SQL的标准实现上要比MySQL完善,而且功能实现比较严谨;2、存储过程的功能支持要比MySQL好,具备本地缓存执行计划的能力;3、对表连接支持较完整,优化器的功能较完整,支持的索引类型很多,复杂查询能力较强;4、PG主表采用堆表存放,MySQL采用索引组...

postgresql+redis缓存

PostgreSQL 与基友们的故事之 - Redis 在PostgreSQL中直接读写redis。好处多多,可以降低应用层设计的复杂度,减少交互次数,降低RT。应用场景举例:.1. 使用redis作为PostgreSQL的二级缓存, 提升数据库的性能。例如在生产中有多台redis主机或集群,使用redis扩展PG的二级缓存能力,减少对IO的需求。这个完全可以做成触发器形式的,数据插入或更新的时候,同时插入或更新到redis。删除的时候,从redis删除。用来做二级缓存时,更新...

PostgreSQL 创建表分区

创建表分区步骤如下: 1. 创建主表 CREATE TABLE users ( uid int not null primary key, name varchar(20)); 2. 创建分区表(必须继承上面的主表)CREATE TABLE users_0 ( check (uid >= 0 and uid< 100) ) INHERITS (users); CREATE TABLE users_1 ( check (uid >= 100)) INHERITS (users); 3. 在分区表上建立索引,其实这步可以省略的哦CREATE INDEX users_0_uidindex on users_0(uid); CREATE INDEX users_1_uidindex on users_1...

PostgreSQL存储过程返回数据集实例【代码】【图】

这里用一个实例来演示PostgreSQL存储过程如何返回数据集.1 首先准备数据表<pre name="code" class="sql">//member_category create table member_category(id serial, name text, discount_rate real, base_integral integer); alter table member_category add primary key(id); alter table member_category add check(name<>'');//member create table member(id serial, member_num text, name text, category_id integer, acc...

Kali2017 Metasploit连接postgresql数据库【代码】

msfdb:msf数据库管理命令 1、查看msf数据库连接状态msf > db_status [*] postgresql selected, no connection    //未连接 2、msfdb命令msf > msfdb      //msfdb可以在命令行直接使用 [*] exec: msfdbManage a metasploit framework databasemsfdb init # initialize the database          //初始化数据库msfdb reinit # delete and reinitialize the database  //清空配置重新初始化数据库msfdb de...

浅析PostgreSQL中的TidBitmap【图】

1 TidBitmap结构分析 TidBitmap是一个专门用来在内存中缓存Tuple的tid的数据结构。TidBitmap位于PostgreSQL存储引擎StorageEngine\ src\ backend\ nodes\tidbitmap.c中,其结构如图1-1所示,是一个由若干名为PagetableEntry的位图构成的一张动态Hash表Pagetable。其中,每个bucket对应一个PagetableEntry。TidBitmap顾名思义,正常情况下,每个PagetableEntry代表一个Page,而在该PagetableEntry中,共有(Max_Tuples_Per_...

postgresql相关开源软件及架构简介

1、PgBouncerPG数据库的一个轻量级连接池工具,功能及特点如下:1)缓存后端PG数据库的连接,当前端应用请求时,分配连接池中的连接给应用,从而充分利用了系统资源。2)允许应用创建比连接池更多的连接,并未应用连接提供排队等候功能,这样既充分利用了资源,也保证了应用端的高并发。3)可以对应用连接进行限制,这样,可以起到系统稳定和安全作用。4)PgBouncer的通信效率非常高。5)PgBouncer通过C语言实现,短小精悍,消耗很...

postgresql查询、修改sRID【代码】

postgresql导入shp数据后,查看矢量数据的SRIDSELECT st_srid(geom) FROM road limit 1; --上述road为表名更新SRID的方法UpdateGeometrySRID(varchar table_name, varchar column_name, integer srid);UpdateGeometrySRID(varchar schema_name, varchar table_name, varchar column_name, integer srid);UpdateGeometrySRID(varchar catalog_name, varchar schema_name, varchar table_name, varchar column_name, integer srid); ...

Postgresql物理存储结构【图】

Postgresql目前不支持使用裸设备和块设备。Postgresql的属于Relation:表示表或索引。Tuple:表示表中的行。Page:表示在磁盘中的数据块。Buffer:表示在内存中的数据块。Page结构Page默认大小为8KB,最大32KB,一个数据块中可存放多行的数据。块中的结构如下图:块头记录了如下信息:块的checksum值空闲空间的起始位置和结束位置特殊数据的起始位置其他一些信息行指针是一个32bit的数字,具体结构如下:行内容的偏移量,占15bit;...

PostgreSQL之用户、角色、权限管理【图】

PostgreSQL是一个多用户数据库,可以为不同用户指定允许的权限。角色PostgreSQL使用角色的概念管理数据库访问权限。 根据角色自身的设置不同,一个角色可以看做是一个数据库用户,或者一组数据库用户。 角色可以拥有数据库对象(比如表)以及可以把这些对象上的权限赋予其它角色, 以控制谁拥有访问哪些对象的权限。 操作角色的语句: create role db_role1; /--创建角色/ drop role db_role1; /--删除角色/ select rolename from p...

Linux环境下源码安装PostgreSQL

1.下载PostgreSQL源码包,并保存到Linux操作系统的一个目录下2.解压PostgreSQL源码包 :tar zxvf postgresql-9.2.4.tar.gz           或  tar jxvf postgresql-9.2.4.tar.bz23,切换到刚刚解压的目录下:cd postgresql-9.2.44. ./configure如果遇到错误,则需要如下安装依赖工具包(按需安装)yum install gccyum install readlineyum install flexyum install zlib在执行./configuregmake worldgmake install-world安装完毕...

postgresql表的继承

转载地址:【传送门】一、表的继承: 这个概念对于很多已经熟悉其他数据库编程的开发人员而言会多少有些陌生,然而它的实现方式和设计原理却是简单易懂,现在就让我们从一个简单的例子开始吧。 1. 第一个继承表: CREATE TABLE cities ( --父表 name text, population float, altitude int ); CREATE TABLE capitals ( --子表 state char(2) ) INHERITS (cities)...

centos安装postgresql和postgis【图】

1、安装步骤-- 安装对应的rpm文件(其他系统的rpm包,请自行到https://yum.postgresql.org/下载)yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm-- 查询postgresql的版本yum search postgresql-- 安装对应的版本(我安装的是postgresql9.6+postgis2.4)yum -y install postgresql96.x86_64 postgresql96-server.x86_64 postgresql96-devel.x86_64-- 安装...

Postgresql流复制配置方法【代码】【图】

背景:在两个或多个部署了postgresql数据库上,进行配置流复制。或基于原来的流复制架构进行扩展备用节点。出现问题可进行手动切换主库 环境如下postgresql 版本为11.7master 172.16.1.11 主库slave 172.16.1.12 备库建议:数据库服务器之间配置ntp进行时间定期(加到定期任务crontab -e)同步,否则可能会导致数据异常一、搭建master服务器主库master1、修改 master服务器 pg_hba.conf ,添加如下TYPE DATABASE U...

PostgreSQL对GROUP BY子句使用常量的特殊限制【代码】

一、问题描述最近,一个统计程序从Oracle移植到PostgreSQL(版本9.4)时,接连报告错误:错误信息1: postgresql group by position 0 is not in select list.错误信息2: non-integer constant in GROUP BY.产生错误的sql类似于:insertinto sum_tab (IntField1, IntField2, StrField1, StrField2, cnt) select IntField, 0, StrField, ‘null‘, count(*) from detail_tab where ... groupby IntField, 0, StrField, ‘null‘;其...

PostgreSQL教程(十五):系统表详解

一、pg_class: 该系统表记录了数据表、索引(仍然需要参阅pg_index)、序列、视图、复合类型和一些特殊关系类型的元数据。注意:不是所有字段对所有对象类型都有意义。 名字类型引用描述relnamename 数据类型名字。relnamespaceoidpg_namespace.oid包含这个对象的名字空间(模式)的OI。reltypeoidpg_type.oid对应这个表的行类型的数据类型。relowneroidpg_authid.oid对象的所有者。relamoidpg_am.oid对于索引对象,表示该索引的类...

PostgreSQL Json字段作为查询条件案例【代码】【图】

业务扩展字段在数据库中经常会使用json格式的数据来存储,这就涉及到一个头疼的问题,假设要使用扩展字段里的某个值作为查询条件怎么办,原来PostgreSQL本身就支持这种查询方式。例子:假设业务扩展字段ext_data存的json格式如下:我们需要查询扩展字段中extInfo.userType=1的所有数据,那么对应的SQL语句如下:select*from event_log where (ext_data::json#>>‘{extInfo,userType}‘)::text=‘1‘ 原文:https://www.cnblogs.com...

docker安装postgreSQL【图】

Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,您可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。鉴于docker搭建应用软件环境的简洁、方便,本文详细描述了在docker环境下搭建redis的详细步骤。1、查看本地镜像,查询可用镜像和...

postgresql inner join【代码】

test=>select*from favoriteguidance test-> ;userid | createtime | objectcreatetime | title | objectid -----------+-------------------------------+-------------------------------+-----------+-----------100000004|2017-08-0700:27:26.452547-04|2017-08-0700:27:26.158434-04| 校园导航 |100000013100000004|2017-08-0700:27:26.606016-04|2017-08-0700:27:26.606016-04| g...

benchmark在postgresql上的安装及使用【图】

BenchmarkSQL是一款经典的开源数据库测试工具,内嵌了TPCC测试脚本,可以对EnterpriseDB、PostgreSQL、MySQL、Oracle以及SQL Server等数据库直接进行测试。二、测试前提1. 安装JDK。因为BenchmarkSQL本身是使用Java语言编写的,所以如果在Linux系统下还没有安装JDK的话,我们首先需要对其进行安装;2. 安装PostgreSQL数据库系统。俗话说巧妇难为无米之炊,测试之前肯定需要有测试对象,本文是测试PG系统,故需安装有PG;3. 安装Ben...