• PgSQL 服务的启停及原理

    服务的启停方法启动数据库实例的方法有以下两种: 直接运行postgres进程启动。 使用pg_ctl命令启动数据库。 1postgres -D /home/osdba/pgdata & 上面的命令中,“-D/home/osdba/pgdata”用于指定数据目录。命令的最后一个“&”表示后台执行。 使用pg_ctl命令启动数据库的示例如下...
  • PgSQL 存储结构

    存储结构一般分为逻辑存储结构和物理存储结构。 逻辑存储结构通常指表、索引、视图、函数等逻辑对象 物理存储结构表示数据库在物理层面上是如何存储的,目前PostgreSQL数据库是运行在文件系统之上的 逻辑存储结构逻辑对象是有层次关系的,数据库创建后,有一个叫数据库簇的概念,在数据库簇中可以创建很多数据库(使用create database创建),也就是说,数据库簇相当于是一个数据库的容器。 ...
  • PgSQL 进程及内存结构图

    进程和内存架构图 启动PostgreSQL数据库时,会先启动一个叫Postmaster的主进程,还会fork出一些辅助子进程,这些辅助子进程各自负责一部分功能。辅助子进程的分类如下。 Logger(系统日志)进程 BgWriter(后台写)进程 WalWriter(预写式日志)进程 PgArch(归档)进程 AutoVacuum(系统自动清理)进程 PgStat(统计信息收集)进程 主进...
  • PgSQL 事务 并发 锁

    什么是ACID在日常操作中,对于一组相关操作,通常需要其全部成功或全部失败。在关系型数据库中,将这组相关操作称为“事务”。 在一个事务中,多个插入、修改、删除操作要么全部成功,要么全部失败,这称为“原子性”,实际上一个事务还需要有其他3个特性,即“一致性”“隔离性”和“持久性”,英文简称为“ACID”,下面分别说明这4种特性。 原子性(Atomicity):事务必须以一个整体单元的形式进行...
  • PgSQL 用户及权限管理

    用户和角色PostgreSQL使用角色的概念管理数据库访问权限。角色是一系列相关权限的集合。为了管理方便,通常把一系列相关的数据库权限赋给一个角色,如果哪个用户需要这些权限,就把角色赋给相应的用户。由于用户也拥有一系列的相关权限,为了简化管理,在PostgreSQL中,角色与用户是没有区别的,一个用户也是一个角色,我们可以把一个用户的权限赋给另一个用户。 用户和角色在整个数据库实例中是全局的...
  • PgSQL 索引

    索引是数据库中的一种快速查询数据的方法。索引中记录了表中的一列或多列值与其物理位置之间的对应关系,就好比是一本书前面的目录,通过目录中页码就能快速定位到我们需要查询的内容。 建立索引的好处是加快对表中记录的查找或排序。但建索引要付出以下代价: 增加了数据库的存储空间。 在插入和修改数据时要花费较多的时间,因为索引也要随之更新。 除有加快查询的作用外,索引还有一些其他的用途,如唯一索引还可...
  • PgSQL 视图

    视图就是由查询语句定义的虚拟表。对用户来说,视图就如同一张真的表。从视图中看到的数据可能来自数据库中的一张或多张表,也可能来自数据库外部,这主要取决于视图的查询语句是如何定义的。 一般数据库提供的视图大多是只读的,PostgreSQL数据库中提供的视图默认也是只读的,但也可以使用规则系统做出可更新的视图。 创建视图创建视图的语法如下: 12CREATE [ OR REPLACE ] [ TE...
  • PgSQL 表空间

    有时我们需要把不同的表放到不同的存储介质或文件系统下,这时就需要用到表空间,在PostgreSQL中,表空间实际上是为表指定一个存储目录。在创建数据库时可以为其指定默认的表空间。创建表、创建索引的时候可以指定表空间,这样表、索引就可以存储到表空间对应的目录下了。 创建表空间的语法如下: 1CREATE TABLESPACE tablespace_name [ OWNER user_name ...
  • PgSQL 函数

    创建函数的语法遵循以下结构: 12345678910111213CREATE [OR REPLACE] FUNCTION function_name(arg1 data_type1, arg2 data_type2, ...)RETURNS return_typeAS $$DECLARE -- 变量声明BEGIN -- 函数体 -- 执行的 SQL 语句和逻辑 RETURN resu...
  • PgSQL 触发器

    触发器(Trigger)是由事件自动触发执行的一种特殊的存储过程,触发事件可以是对一个表进行INSERT、UPDATE、DELETE等操作。 创建触发器1234567CREATE [ CONSTRAINT ] TRIGGER name { BEFORE | AFTER | INSTEAD OF } { event [ OR ... ] } ON ta...
1237