【一】 PostgreSQL 概述
PostgreSQL 是一款功能丰富的开源对象关系数据库管理系统 (ORDBMS),其支持绝大多数 SQL 标准并且还提供了许多额外的新特性,如复杂查询、外键、触发器、视图、事务完整性、多版本并发控制等。此外,PostgreSQL 拥有强大的可扩展性,允许用户轻松添加新数据类型、函数、操作符、聚合函数、索引方法以及过程语言等功能。开发人员通常将其读作“post-gress-Q-L”。
(1)PostgreSQL 的优点
PostgreSQL 具备以下几个主要优势:
①支持多种操作系统,包括 Windows、Linux、UNIX、macOS 和 BSD。
②完全支持 ACID 特性、关系完整性、数据库事务以及 Unicode 多语言。
③允许使用 PL/pgSQL、PL/Perl、PL/Python 或其他过程语言来实现存储过程和触发器的功能,支持临时表和物化视图。
④提供全面的索引类型支持,如 R-/R+tree 索引、哈希索引、倒排索引、部分索引、表达式索引、GIST 和 GIN (用于加速全文搜索),并且从 8.3 版本起开始支持位图索引。
⑤支持多种数据域、存储过程、触发器、函数、外部调用和游标。
⑥提供四种分区方式:范围分区、哈希分区、混合分区和列表分区。
⑦易于通过用户自定义函数 (UDF) 进行功能扩展。
(2)PostgreSQL 与 MySQL 的对比
作为一款开源关系型数据库,PostgreSQL 相较于 MySQL 在以下几个方面有明显优势:
①PostgreSQL 的稳定性极佳,在面对崩溃或断电等灾难场景时,Innodb 等引擎的抗打击能力已显著提升,相比之下 PostgreSQL 表现得更加优秀。
②在高并发读写及接近负载极限的情况下,PostgreSQL 的性能曲线仍然保持平稳,而 MySQL 则可能会在到达峰值后出现明显下降。
③PostgreSQL 在 GIS 领域具有明显优势,不仅提供丰富的几何类型,还支持多种字典、数组、bitmap 等数据类型,而 MySQL 在这方面相对逊色。
④PostgreSQL 的“无锁”特性尤为突出,这得益于其实现的多版本并发控制 (MVCC)。
⑤PostgreSQL 允许使用函数和条件索引,使得数据库的调优更加灵活,而 MySQL 并不具备此功能。条件索引在 Web 应用中尤为重要。
⑥PostgreSQL 拥有强大的 SQL 编程能力,支持多种统计函数和语法,并且支持用多种语言编写存储过程,对于 R 的支持也非常友好。相比之下,MySQL 在这方面差距明显。
⑦PostgreSQL 提供多种集群架构,调整同步频率和集群策略非常便捷,操作也相对简单。
⑧大多数关系型数据库的字符串长度有限 (通常约 8KB),而 PostgreSQL 的 Text 类型可以转换,支持内置正则表达式、索引以及全文搜索,还可使用 xml xpath。
⑨MySQL 主要采用异步复制,而实现同步复制较为困难。而 PostgreSQL 支持同步、异步和半同步复制。
⑩PostgreSQL 对 NUMA 架构的支持优于 MySQL,在读性能方面也表现得更好。
⑪PostgreSQL 的提交操作可以完全异步,而 MySQL 的内存表因表锁问题不够实用。
【二】 PostgreSQL 安装
在 Linux 服务器上安装 PostgreSQL 数据库的步骤如下:
1. 选择版本:首先访问 PostgreSQL 的官方网站,进入下载页面,链接地址为 [https://www.postgresql.org/download/linux/redhat/](https://www.postgresql.org/download/linux/redhat/)。根据实际需求,选择适合的 PostgreSQL 版本及相应的配置信息,如图所示。选定版本和配置后,点击 “Copy Script” 按钮,复制生成的脚本命令备用。
2. 安装 yum 源:根据之前选择的版本,通过以下命令安装 yum 源。
3. 安装 PostgreSQL:使用如下命令安装 PostgreSQL,具体命令依赖于之前选择的版本。
安装完成后,终端界面如图所示。
【三】PostgreSQL 配置
在 PostgreSQL 数据库安装完成后,需要进行一系列配置。具体步骤如下:
1. 初始化数据库:使用下述命令对 PostgreSQL 数据库进行初始化。初始化后,会在 `/var/lib/pgsql` 目录下创建一个名为 15 的文件夹,这里的 15 是数据库的版本号。如果该目录下已经存在相应版本的文件夹,则初始化时会报错,此时需要先删除对应的文件夹,然后重新初始化。
2. 启动设置:启动数据库服务,使用如下命令。
3. 设置密码:安装 PostgreSQL 后,系统会默认创建一个名为 `postgres` 的 Linux 登录用户。你需要为该 `postgres` 用户设置密码,命令如下:
4. 远程连接配置:默认情况下,安装的 PostgreSQL 数据库只能在本机登录。为了允许远程连接,需要进行一些配置。
首先,找到 `listen_addresses` 节点,去掉前面的 `#` 符号,并修改如下内容,然后保存并退出。
接着,在同一目录下编辑 `pg_hba.conf` 文件。
对 IPv4 设置进行修改,修改前文件内容如图所示。
修改后如图所示。保存并退出。
5. 重启服务:由于配置文件已经修改,需要重启 PostgreSQL 服务以使更改生效,命令如下:
6. 修改数据库密码:使用 `postgres` 用户登录系统,或使用 `su postgres` 切换到该用户。
接下来输入以下命令,修改数据库用户的密码:
7. 远程登录测试:使用客户端工具测试是否可以成功连接 PostgreSQL 数据库。PostgreSQL 默认使用 5432 端口,在测试前需要将 5432 端口加入防火墙白名单,或者关闭防火墙,命令如下:
使用 Navicat 作为客户端工具测试连接 PostgreSQL,连接成功界面如图所示。