一、逻辑结构¶
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:反转索引,可以处理包含多个键的值,如数组等