8.PG逻辑结构之库表
·
逻辑结构
数据库集群(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_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 中,一个数据库包含一个或多个模式,模式中又包含了表、函数以及操作符等数据库对象。
数据库与模式的区别
- 数据库:在 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 | 反转索引,可以处理包含多个键的值,如数组等。 |
更多推荐
所有评论(0)