一、逻辑结构

1.1 数据库集簇逻辑结构

1.2 数据库集群-Database cluster

也叫数据库集簇。它是指有单个PostgreSQL服务器实例管理的数据库集合,组成数据库集群的这些数据库使 用相同的全局配置文件和监听端口、共用进程和内存结构。一个DataBaseCluster可以包括:多个DataBase、 多个User、以及Database中的所有对象。如上图所示。

注意:当应用连接到一个数据库时,一般只能访问这个数据库中的数据,而不能访问其他数据库中的内容(除 非使用DBLink等其他手段)

数据库创建案例:

CREATE DATABASE name 
[ [ WITH ] 
  [ OWNER [=] user_name ]
  [ TEMPLATE [=] template ]
  [ ENCODING [=] encoding ]
  [ LC_COLLATE [=] lc_collate ]
  [ LC_CTYPE [=] lc_ctype ]
  [ TABLESPACE [=] tablespace ]
  [ CONNECTION LIMIT [=] connlimit ]
];

1.3 TABLESPACE

数据库在逻辑上分成多个存储单元,称作表空间。表空间用作把逻辑上相关的结构放在一起。数据库逻辑上是 由一个或多个表空间组成。初始化的时候,会自动创建pg_default和pg_global两个表空间

能否为每个表创建在不同的表空间

--创建自己的表空间,并在该表空间上创建表
create tablespace mydemotbs location '/home/postgres/pgsql/data/mydemotbs'; create table testtable1(tid int primary key,tname text) tablespace mydemotbs;

优势:相对于mysql比较灵活

二、模式

解释:模式(Schema)是数据库中的一个概念,可以将其理解为一个命名空间或目录,不同的模式下可以有 相同名称的表、函数等对象而不 会产生冲突。提出模式的概念是为了便于管理,只要有权限,各个模式的对象可以互相调用

在PostgreSQL中,一个数据库包含一个或多个模式,模式中又包含了表、函数以及操作符等数据库对象

pg中数据库跟模式的区别

数据库:在PostgreSQL中,不能同时访问不同数据库中的对象,需要重新连接到这个数据库 模式:没有此限制,一个用户在连接到一个数据库后,就可以同时访问这个数据库中多个模式的对象

pg为什么需要模式

  • 允许多个用户使用同一个数据库且用户之间又不会互相干扰
  • 把数据库对象放在不同的模式下组织成逻辑组,使数据库对象更便于管理。
  • 第三方的应用可以放在不同的模式中,这样就不会和其他对象的名字产生冲突了

模式的创建

-- 语法
CREATE SCHEMA schemaname [ AUTHORIZATION username ] [ schema_element [ ... ] ];
CREATE SCHEMA AUTHORIZATION username [ schema_element [ ... ] ];

-- 创建模式
CREATE SCHEMA osdba;

-- 查看模式
\dn

-- 删除模式
DROP SCHEMA osdba;

-- 修改模式名称
ALTER SCHEMA name RENAME TO newname;

-- 修改模式所有者
ALTER SCHEMA name OWNER TO newowner;

公共模式

通常情况下,创建和访问的时候都不用指定模式,实际上这时访问的都是public模式, 访问模式中的对象,需要先写出一个受修饰的名字,这个名字包含模式名及表名,它们之间用一个“.”分隔开

三、表

创建表中支持外键约束,主键,唯一键,支持分区表

四、索引

索引是数据库中的一种快速查询数据的方法。 索引优点:

  • 建立索引的好处是加快对表中记录的查找或排序
  • 其他的用途,如唯一索引还可以起到唯一约束的作用 索引缺点:
  • 增加了数据库的存储空间
  • 在插入和修改数据时要花费较多的时间,因为索引也要随之更新

4.1 索引的分类

  • BTree:最常用的索引,BTree索引适合用于处理等值查询和范 围查询。
  • HASH:只能处理简单的等值查询。
  • GiST:不是单独一种索引类型,而是一种架构,可以在这种架构上实现很多不同的索引策略
  • GIN:反转索引,可以处理包含多个键的值,如数组等