PostgreSQL是一个功能非常强大的、源代码开放的客户/服务器关系型数据库管理系统(RDBMS)。

PostgreSQL 的 主要优点如下:

1)维护者是PostgreSQL Global Development Group,首次发布于1989年6月。

2)操作系统支持WINDOWS、Linux、UNIX、MAC OS X、BSD。

3)从基本功能上来看,支持ACID、关联完整性、数据库事务、Unicode多国语言。

4)表和视图方面,PostgreSQL支持临时表,而物化视图,可以使用PL/pgSQL、PL/Perl、PL/Python或其他过程语言的存储过程和触发器模拟。

5)索引方面,全面支持R-/R+tree索引、哈希索引、反向索引、部分索引、Expression 索引、GiST、GIN(用来加速全文检索),从8.3版本开始支持位图索引。

6)其他对象上,支持数据域,支持存储过程、触发器、函数、外部调用、游标7)数据表分区方面,支持4种分区,即范围、哈希、混合、列表。

8)从事务的支持度上看,对事务的支持与MySQL相比,经历了更为彻底的测试。

9)My ISAM表处理方式方面,MySQL对于无事务的MyISAM表,采用表锁定,1个长时间运行的查询很可能会阻碍对表的更新,而PostgreSQL不存在这样的问题。

10)从存储过程上看,PostgreSQL支持存储过程。因为存储过程的存在也避免了在网络上大量原始的SQL语句的传输,这样的优势是显而易见的。

11)用户定义函数的扩展方面,PostgreSQL可以更方便地使用UDF(用户定义函数)进行扩展。

通俗而言主要特点如下:

  • 免费
  • 速度快
  • 平台可移植性
  • 丰富的接口
  • 面向对象的特征
  • 安全性
  • 配合的开源软件很多

PostgreSQL 的 应用劣势如下:

1)最新版本和历史版本不分离存储,导致清理老旧版本时需要做更多的扫描,代价比较大但一般的数据库都有高峰期,如果合理安排VACUUM,这也不是很大的问题,而且在PostgreSQL9.0中VACUUM进一步被加强了。

2)在PostgreSQL中,由于索引完全没有版本信息,不能实现Coverage index scan,即查询只扫描索引,不能直接从索引中返回所需的属性,还需要访问表,而Oracle与Innodb则可以。

存储系统:

存储系统是PostgreSQL的最底层模块,它向下通过操作系统接口访问物理数据,向上为上层模块提供存储操作的接口和函数。PostgreSQL对物理数据的访问和操作都是通过其存储系统模块来进行的。

PostgreSQL存储系统是由以下几个子模块所构成的:

1)页面管理子模块:对PostgreSQL缓冲区页面的组织结构进行定义以及提供页面操作的方法。

2)缓冲区管理子模块:管理PostgreSQL的缓冲区,包括本地缓冲区和共享缓冲区。

3)存储设备管理子模块:数据库记录是存储在存储介质上的,存储设备管理子模块将屏蔽不同物理存储设备(块设备,流设备)接口函数的差异,向上层缓冲区管理子模块提供统一的访问接口函数。

4)文件管理子模块:一般的操作系统对一个进程允许打开的文件数是有限制的,而PostgreSQL服务器有些时候需要打开的文件数是很多的,因此PostgreSQL文件管理子模块自身为了突破这个瓶颈,封装了文件的读写操作,在这里建立了一个LRU链表,通过一定的替换算法来对打开的文件进行管理,使得可以打开的文件数目不受操作系统平台的限制。

页面内存:

  • PostgreSQL内存页面的默认大小是8kB。
  • 页面的逻辑结构被定义成三个部分:
    • 页首部(PageHeader)
    • 元组记录空间(ltem Space)
    • 特殊空间(Special Space)
  • 页首部记录了页面的使用信息,这些信息由元组记录空间和特殊空间的偏移量地址、页面分布格式版本号和页面的事物日志记载点等等所组成。
  • 元组记录空间是存储元组信息的地方,在这里面每个元组记录被称为一个ltem,Item由ltemld和元组数据组成,ltemld内部定义了元组在页面中的偏移量、ltem指针的状态以及元组项的比特位数长度。
  • 特殊空间是为了页面操作所需要的。为了其他模块对页面进行操作,PostgreSQL内部定义了一些页面的操作函数。页面的相关操作包括页面初始化、页面添加、修复和删除。供其他子模块进行调用。这里值得关注的是页面修复与页面批量删除的操作函数。为了实现这两个操作函数,PostgreSQL专门定义了一个数据结构itemldSortData,它为方便在这两个函数中对元组项Item实现降序排序而定义。

2、PostgreSQL数据库介绍相关推荐

  1. Postgresql数据库介绍

    文章目录 一.数据库介绍 1.数据库DB引擎排行榜 2.数据库的主要优势 一.数据库介绍 1.数据库DB引擎排行榜 当前数据库的使用情况 https://db-engines.com/en/ranki ...

  2. PostgreSql数据库介绍和使用

    数据库背景 由Michael Stonebraker教授领导的POSTGRES项目是由防务高级研究项目局(DARPA).陆军研究办公室(ARO).国家科学基金(NSF) 以及 ESL, Inc 共同赞 ...

  3. Postgresql数据库介绍4——使用

    SQL语句( The SQL Language) 本章描述PostgreSQL中的 SQL 的语法. 我们开始描述SQL的主要语法,这些内容是理解随后各章的基础,在那些章里面将详细介绍 SQL 命令如 ...

  4. Postgresql数据库介绍10——使用

    索引(Indexes) Indexes are a common way to enhance database performance. An index allows the database s ...

  5. Postgresql数据库介绍8——使用

    函数和操作(Functions and Operators) 逻辑操作符(Logical Operators) The usual logical operators are available: A ...

  6. postgreSql数据库学习使用

    1.postgresql数据库介绍 1.1 产品简介 PostgreSQL 是一个免费的对象-关系数据库服务器(ORDBMS),在灵活的BSD许可证下发行. PostgreSQL 开发者把它念作 po ...

  7. Centos 7环境下源码安装PostgreSQL数据库

    马上就要去实习了,工作内容是搞数据仓库方面的,用的是postgresql关系型数据库,于是自己先来了解下这种数据的用法,之后说说这个数据库和MySQL的关系和区别. 1.Postgresql简介 看了 ...

  8. [原创]Silverlight与PostgreSQL数据库的互操作(CURD完全解析)

    今天将为大家介绍如何让Silverlight使用PostgreSQL作为后台数据库以及CURD操作. 准备工作 1)建立起测试项目 细节详情请见强大的DataGrid组件[2]_数据交互之ADO.NE ...

  9. Spring Boot中使用PostgreSQL数据库

    在如今的关系型数据库中,有两个开源产品是你必须知道的.其中一个是MySQL,相信关注我的小伙伴们一定都不陌生,因为之前的Spring Boot关于关系型数据库的所有例子都是对MySQL来介绍的.而今天 ...

最新文章

  1. Deformable 可变形的DETR
  2. 斯坦福新书《决策算法》,694页PDF免费下载
  3. oracle 加号和on,Oracle中连接与加号(+)的使用
  4. SSM框架整合(一)
  5. django——会话追踪技术
  6. 返回多维数组中某一维的最大值
  7. 标签管理体系之业务应用
  8. 最小二乘法移动最小二乘法
  9. java编程应该要的英语_java编程中常用英语单词
  10. java中有个很强大的工具jconsole.exe
  11. python入门经典-入门python有什么好的书籍推荐?
  12. 费波纳奇数c语言,费波纳切数列用C语言怎么编程
  13. 程序员找工作?只凭感觉去面试?不要做白日梦了,程序员必备面试题,脱口而出的专业语言,让你的薪水翻一番,建议收藏
  14. 【ML小结1】ML入门
  15. TD-LTE原理及其关键技术介绍
  16. 定积分(Definite Integral)
  17. 中国大学排名是怎样的?
  18. 植物野外识别速查图鉴
  19. 5G网络架构(接入网,传输网,核心网)
  20. 被全球数10万顶尖程序员关注收藏!这些JavaScript项目到底强在哪里?

热门文章

  1. 程序员应聘阿里P7岗,面试都过了,结果却因为最后一步被刷下来了…
  2. python万年历实现代码_万年历接口调用示例
  3. monkeyrunner使用
  4. 网络对抗技术实验报告一
  5. html代码实现简单的数码时钟
  6. (七)云计算技术学习--OpenStack之Cinder和Swift
  7. 《服务的最佳实践》再实践——定时关闭程序
  8. 2020年经济专栏蓝皮书
  9. 《来吧,一起创客》新书上市,精彩抢先看!
  10. 用Python深度学习来快速实现图片的风格迁移