PG初识

太阳2年前技术文章1013

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的多版本并发控制(一)

PG的多版本并发控制(一)

一、 表系统字段几个比较重要概念1.1  tupletuple表示表中的数据行,在MySQL中用row表示。在表数据页中,主要分为普通的数据元祖和TOAST元祖。以下是一个普通数据元祖的结构,主要由三...

PG查询性能Top SQL

一、查询当前正在运行的Top SQL    查询当前正在运行的会话中耗时最长的Top SQL,where条件可按需修改SELECT pgsa.datname AS database_name    ...

PG参数整理

一、参数的分类参数的类型名称说明internal内部参数,只读无法修改。postgres程序写死或者是在初始化指定后无法修改的参数postmaster更改该类参数,需重启生效sighup不需重启,重新...

PG体系结构(一)

PG体系结构(一)

一、进程结构PG数据库启动时会先启动一个主进程(9.3之前称为postmaster,9.3以后称为postgres server process),然后fork出一些辅助子进程(backend、bac...

PG常用命令

1、连库相关#连库 $ psql -h <hostname or ip> -p <端口> [数据库名称] [用户名称] #连库并执行命令 $ psql -h <ho...

PG安装部署

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

发表评论    

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