服务的启停方法启动数据库实例的方法有以下两种:
直接运行postgres进程启动。
使用pg_ctl命令启动数据库。
1postgres -D /home/osdba/pgdata &
上面的命令中,“-D/home/osdba/pgdata”用于指定数据目录。命令的最后一个“&”表示后台执行。
使用pg_ctl命令启动数据库的示例如下...
存储结构一般分为逻辑存储结构和物理存储结构。
逻辑存储结构通常指表、索引、视图、函数等逻辑对象
物理存储结构表示数据库在物理层面上是如何存储的,目前PostgreSQL数据库是运行在文件系统之上的
逻辑存储结构逻辑对象是有层次关系的,数据库创建后,有一个叫数据库簇的概念,在数据库簇中可以创建很多数据库(使用create database创建),也就是说,数据库簇相当于是一个数据库的容器。
...
进程和内存架构图
启动PostgreSQL数据库时,会先启动一个叫Postmaster的主进程,还会fork出一些辅助子进程,这些辅助子进程各自负责一部分功能。辅助子进程的分类如下。
Logger(系统日志)进程
BgWriter(后台写)进程
WalWriter(预写式日志)进程
PgArch(归档)进程
AutoVacuum(系统自动清理)进程
PgStat(统计信息收集)进程
主进...
什么是ACID在日常操作中,对于一组相关操作,通常需要其全部成功或全部失败。在关系型数据库中,将这组相关操作称为“事务”。
在一个事务中,多个插入、修改、删除操作要么全部成功,要么全部失败,这称为“原子性”,实际上一个事务还需要有其他3个特性,即“一致性”“隔离性”和“持久性”,英文简称为“ACID”,下面分别说明这4种特性。
原子性(Atomicity):事务必须以一个整体单元的形式进行...
用户和角色PostgreSQL使用角色的概念管理数据库访问权限。角色是一系列相关权限的集合。为了管理方便,通常把一系列相关的数据库权限赋给一个角色,如果哪个用户需要这些权限,就把角色赋给相应的用户。由于用户也拥有一系列的相关权限,为了简化管理,在PostgreSQL中,角色与用户是没有区别的,一个用户也是一个角色,我们可以把一个用户的权限赋给另一个用户。
用户和角色在整个数据库实例中是全局的...
索引是数据库中的一种快速查询数据的方法。索引中记录了表中的一列或多列值与其物理位置之间的对应关系,就好比是一本书前面的目录,通过目录中页码就能快速定位到我们需要查询的内容。
建立索引的好处是加快对表中记录的查找或排序。但建索引要付出以下代价:
增加了数据库的存储空间。
在插入和修改数据时要花费较多的时间,因为索引也要随之更新。
除有加快查询的作用外,索引还有一些其他的用途,如唯一索引还可...
视图就是由查询语句定义的虚拟表。对用户来说,视图就如同一张真的表。从视图中看到的数据可能来自数据库中的一张或多张表,也可能来自数据库外部,这主要取决于视图的查询语句是如何定义的。
一般数据库提供的视图大多是只读的,PostgreSQL数据库中提供的视图默认也是只读的,但也可以使用规则系统做出可更新的视图。
创建视图创建视图的语法如下:
12CREATE [ OR REPLACE ] [ TE...
有时我们需要把不同的表放到不同的存储介质或文件系统下,这时就需要用到表空间,在PostgreSQL中,表空间实际上是为表指定一个存储目录。在创建数据库时可以为其指定默认的表空间。创建表、创建索引的时候可以指定表空间,这样表、索引就可以存储到表空间对应的目录下了。
创建表空间的语法如下:
1CREATE TABLESPACE tablespace_name [ OWNER user_name ...
创建函数的语法遵循以下结构:
12345678910111213CREATE [OR REPLACE] FUNCTION function_name(arg1 data_type1, arg2 data_type2, ...)RETURNS return_typeAS $$DECLARE -- 变量声明BEGIN -- 函数体 -- 执行的 SQL 语句和逻辑 RETURN resu...
触发器(Trigger)是由事件自动触发执行的一种特殊的存储过程,触发事件可以是对一个表进行INSERT、UPDATE、DELETE等操作。
创建触发器1234567CREATE [ CONSTRAINT ] TRIGGER name { BEFORE | AFTER | INSTEAD OF } { event [ OR ... ] } ON ta...