PG初识

太阳1年前技术文章245

PG数据库是一种典型的C/S模型应用,不同的客户端通过TCP/IP进行连接、每个连接启动一个fork进程(多进程数据库)。

一、pg逻辑架构

1.1 pg与MySQL异同对比

逻辑架构

postgres

MySQL

实例

多进程

当进程多线程

数据库

一个实例下可创建多个db,各个db下相互隔离

一个实例下可创建多个db,同实例下各db可互相访问

模式

一个db下可创建多个schema,各schema下可互相访问

没有schema的概念、或者说schema等同于db

表/视图

table、view

table、view

tuple

row

表空间

默认表空间、自定义表空间

独立表空间、共享表空间


1.2 索引

1、pg数据库中主要支持以下几类索引:

1)B-tree索引,适合等值/范围查询

2)hash索引,只能针对等值查询

3)GiST索引,不是一种单独的索引而是一种架构,可以在这种架构上实现不同的索引策略

4)SP-GiST,空间分区索引

5)GIN索引,反转索引


2、索引的创建

一般的索引创建会阻塞对应表的DML操作,这种情况下我们可以通过并发创建索引来创建索引,并发创建索引的过程中不会阻塞相关的DML操作。但是值得注意的几点是:1)若执行并发创建索引被中断,会留下一个无效索引,需要手动删除;2)pg的重建索引不支持concurrently,可以手动创建新索引,后续删除旧索引。

## 普通的创建索引
create index index_name on tbl_name(col);

## 并发创建索引
create index concurrently idx_name1  on t1(name);

## 删除索引(索引名称schema内唯一,所以不需要指定表名)
drop index idx_name


1.3 用户权限

PG的权限按以下几个层次进行管理:

1)首先管理附在用户特殊属性上的权限,如超级用户的权限、创建数据库的权限、创建用户的权限、Login的权限,等等

2)然后是在数据库中创建模式的权限

3)接着是在模式中创建数据库对象的权限,如创建表、创建索引等等

4)之后是查询表、向表中插入数据、更新表、删除表中数据的权限

5)最后是操作表中某些字段的权限


1.4pg与MySQL语法上的异同

操作

postgres

mysql

数据库

create/drop database dbname [option]

create/drop database dbname [option]

模式

create/drop schema schema_name [option]

-

create/drop table tbl_name [option]

create/drop table tbl_name [option]

表空间

create tablespace test2 location 'xx';

-

查询所有数据库

\l

show databases

进入数据库

\c dbname

user dbname

查看当前schema下所有表

\d

show tables

查看表结构信息

\d tbl_name

desc tbl_name


标签: PostgreSQL

相关文章

PG安装部署

一、rpm包安装部署1、安装RPM包# yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_6...

PG的pathman分区表工具

一、概述在PG<=10的版本中,都是通过表继承的方式进行分区的,必须使用CHECK CONSTRAINT将每个分区创建为子表 。PostgreSQL 10提供了本机分区,它与经典方法没有什么不同...

PG的统计信息(三)

1.3 数据分布类统计信息1.3.1 pg_stats通过对pg_stats的查询,可以查看每个字段的数据分析统计信息,类似SQL Server的直方图,为优化器选择最佳执行计划提供依据,pg_sta...

pgbench 压测工具

pgbench 压测工具

一、基本参数pgbench工具是Postgres自带的一款轻量型基准压测工具。它自定义相关场景下脚本进行1.1 初始化参数参数含义-i / --initialize调用初始化模式-I init_ste...

PG体系结构(二)

PG体系结构(二)

二、逻辑架构graph TD     A[database] -->B(schema)     B -->C[表]     B -->D[视图]     B -->E[...

PG的表膨胀

1 什么是表膨胀众所周知,PostgreSQL的多版本并发是通过保留变更前的记录来实现的。当数据记录被DML修改,旧版本记录仍保留不变,仅仅需要修改相关记录的xmin、xmax属性,并新增写入变更后的...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。