逻辑结构

数据库集群(Database Cluster)

也叫数据库集簇,是指由单个 PostgreSQL 服务器实例管理的数据库集合。组成数据库集群的这些数据库使用相同的全局配置文件、相同的端口、共用进程和内存结构。

一个 Database Cluster 可以包括:

  • 多个 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 ]
]

表空间(TABLESPACE)

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

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

可以创建自己的表空间,并在该表空间上创建表:

CREATE TABLESPACE mydemotbs LOCATION '/home/postgres/pgsql/data/mydemotbs';
CREATE TABLE testtable1 (
    tid int PRIMARY KEY,
    tname text
) TABLESPACE mydemotbs;

优势:相对于 MySQL 比较灵活,可以更精细地控制存储布局。


模式(Schema)

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

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

数据库与模式的区别

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

为什么需要模式?

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

模式的创建与管理

-- 创建模式
CREATE SCHEMA osdba;

-- 查看模式
\dn

-- 删除模式
DROP SCHEMA osdba;

-- 修改模式
ALTER SCHEMA name RENAME TO newname;
ALTER SCHEMA name OWNER TO newowner;

公共模式(public)

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


PostgreSQL 创建表支持:

  • 外键约束
  • 主键
  • 唯一键
  • 分区表

索引

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

索引优点

  • 建立索引的好处是加快对表中记录的查找或排序。
  • 其他用途,如唯一索引还可以起到唯一约束的作用。

索引缺点

  • 增加了数据库的存储空间。
  • 在插入和修改数据时要花费较多的时间,因为索引也要随之更新。

索引的分类

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

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐