暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

抢先体验部署PostgreSQL 17 Beta 1

PostgreSQL 项目

PostgreSQL 全球开发小组宣布,PostgreSQL 17 的第一个测试版现已可供下载。此版本包含 PostgreSQL 17 正式发布时将提供的所有功能的预览,不过测试期间版本的某些细节可能会发生变化。您可以在发行说明中找到有关所有 PostgreSQL 17 功能和更改的信息:https://www.postgresql.org/docs/17/release-17.html
本着开源 PostgreSQL 社区的精神,我们强烈建议您在您的系统上测试 PostgreSQL 17 的新功能,以帮助我们消除可能存在的错误或其他问题。虽然我们不建议您在生产环境中运行 PostgreSQL 17 Beta 1,但我们鼓励您找到针对此测试版运行典型应用程序工作负载的方法。您的测试和反馈将帮助社区确保 PostgreSQL 17 版本符合我们的标准,即提供世界上最先进的开源关系数据库的稳定、可靠版本。请阅读有关我们的测试流程以及您如何做出贡献的更多信息:https://www.postgresql.org/developer/beta/

PostgreSQL 17 功能亮点

1.查询和操作性能改进

PostgreSQL 17 在最新版本的基础上进行了改进,并继续提高整个系统的性能。Vacuum 是负责回收存储的 PostgreSQL 进程,它拥有一个新的内部数据结构,可将内存使用量减少 20 倍,同时缩短了完成工作所需的总体时间。此外,Vacuum 进程可使用的内存不再有 1GB 的限制(由 Maintenance_work_mem 控制),因此您可以选择将更多资源用于 Vacuum 进程。

此版本引入了流 I/O 接口,并且可以在执行顺序扫描和运行 ANALYZE 时显示性能改进。PostgreSQL 17 还包括可以控制事务、子事务和多事务缓冲区的可扩展性的配置参数。

PostgreSQL 17 现在可以使用规划器统计信息和公用表表达式 (WITH 查询) 的排序顺序来进一步优化这些查询并帮助它们更快地执行。此外,此版本显著缩短了使用带有 B 树索引的 IN 子句的查询的执行时间。从此版本开始,PostgreSQL 可以从具有 NOT NULL 约束的列上执行中删除冗余的 IS NOT NULL 语句,并且不再需要对包含 IS NOT NULL 列上的 IS NULL 子句的查询进行处理。现在从 PostgreSQL 17 开始,您可以为 BRIN 索引使用并行索引构建。具有高度并发更改的工作负载可以从 PostgreSQL 17 中受益,因为它改进了预写日志 (WAL) 锁的管理方式,一些测试显示性能提高了 2 倍。最后,PostgreSQL 17 添加了更多显式 SIMD 指令,包括对 bit_count 函数的 AVX-512 支持。

2.分区和分布式工作负载增强

PostgreSQL 17 为分区管理带来了更大的灵活性,增加了拆分和合并分区的功能,并增加了对分区表的标识列和排除约束的支持。此外,PostgreSQL 外部数据包装器 (postgres_fdw) 可以从带有 EXISTS 和 IN 子查询的查询中获得性能优势,因为现在可以将这些查询推送到远程服务器。

PostgreSQL 17 为逻辑复制添加了新功能,使其在高可用性工作负载和升级中更易于使用。从 PostgreSQL 17 升级到较新版本开始,您在使用时不再需要删除逻辑复制槽pg_upgrade,从而避免在升级后重新同步数据。此外,此版本还引入了逻辑复制的故障转移控制,为在高可用性环境中管理 PostgreSQL 数据库提供了更多控制。PostgreSQL 17 还允许逻辑复制订阅者使用hash索引进行查找,并引入了pg_createsubscriber使用物理复制在副本上添加逻辑复制的命令行工具。

3.开发人员体验

PostgreSQL 17 继续以 SQL/JSON 标准为基础,增加了对JSON_TABLE可以将 JSON 转换为标准 PostgreSQL 表的功能以及 SQL/JSON 构造函数(JSON、JSON_SCALAR、JSON_SERIALIZE)和查询函数(JSON_EXISTS、JSON_QUERY、JSON_VALUE)的支持。值得注意的是,这些功能最初计划用于 PostgreSQL 15 版本,但由于设计考虑,在测试期间被恢复,这就是我们要求您在测试期间帮助我们测试功能的原因之一!此外,PostgreSQL 17 在其jsonpath实现中添加了更多功能,以及将 JSON 值转换为不同数据类型的能力。

该MERGE命令现在支持RETURNING子句,让您可以进一步处理已修改的行。您还可以MERGE使用新函数查看命令的哪一部分修改了行merge_action。PostgreSQL 17 还允许您使用该MERGE命令更新视图,并添加了一个WHEN NOT MATCHED BY SOURCE子句,以便在源行不满足条件时提供行为。

COPY用于高效地批量加载和导出 PostgreSQL 数据,现在使用 PostgreSQL 17,导出大行时性能可提高 2 倍。此外,COPY当源编码与目标编码匹配时,性能有所提高,并且有一个新选项,ON_ERROR即使插入行时出现错误,也可以继续复制。PostgreSQL 17 还为异步和更安全的查询取消例程提供了更好的支持,驱动程序可以使用 libpq API 采用这些例程。

PostgreSQL 17 包含一个内置排序规则提供程序,它提供与排序规则类似的排序语义C,只是使用UTF-8编码而不是SQL_ASCII。此新排序规则保证是不可变的,从而确保无论 PostgreSQL 安装在什么系统上运行,排序的返回值都不会改变。

4.安全功能

PostgreSQL 17 添加了一个新的连接参数 sslnegotiation,它允许 PostgreSQL 在使用 ALPN 时执行直接 TLS 握手,从而消除了网络往返。PostgreSQL 在 ALPN 目录中注册为 postgresql。

此版本引入了在身份验证期间执行的事件触发器,并在 libpq 中包含了一个新的 API,可PQchangePassword在客户端自动对密码进行哈希处理,以防止意外在服务器中以纯文本形式登录。

PostgreSQL 17 添加了一个名为 pg_maintain 的新预定义角色,该角色允许用户在所有关系上执行 VACUUM、ANALYZE、CLUSTER、REFRESH MATERIALIZED VIEW、REINDEX 和 LOCK TABLE。此版本还确保 search_path 对于 VACUUM、ANALYZE、CLUSTER、REFRESH MATERIALIZED VIEW 和 INDEX 等维护操作是安全的。最后,用户现在可以使用 ALTER SYSTEM 来设置无法识别的自定义服务器变量的值。

5.备份和导出管理

PostgreSQL 17 引入了使用 执行增量备份的功能pg_basebackup,并添加了一个新的实用程序,称为pg_combinebackup,用作备份恢复过程的一部分。此版本为 添加了一个新的标志,称为pg_dump,—filter可让您指定一个文件,其中包含有关从转储中包含/排除哪些对象的说明。

6.监控

该EXPLAIN命令提供有关查询计划和执行的信息,并添加了两个新选项:SERIALIZE,显示将数据转换为网络传输所需的时间,以及MEMORY,报告优化器内存使用情况。此外,EXPLAIN现在可以显示 I/O 块读取和写入所花费的时间。

CALLPostgreSQL 17 规范化了中的参数pg_stat_statements,减少了频繁调用的存储过程的条目数。此外,VACUUM进度报告现在显示清理索引的进度。PostgreSQL 17 还引入了一个新视图,pg_wait_events它提供有关等待事件的描述,并且可以与 结合使用pg_stat_activity以更深入地了解活动会话等待的原因。此外,pg_stat_bgwriter视图中的某些信息现在被拆分到新pg_stat_checkpointer视图中。

7.附加功能

PostgreSQL 17 中添加了许多其他新功能和改进。其中许多功能可能对您的用例也有帮助。请参阅 发行说明以获取新功能和更改功能的完整列表:
https://www.postgresql.org/docs/17/release-17.html

8.测试错误和兼容性

每个 PostgreSQL 版本的稳定性很大程度上取决于您(社区)使用工作负载和测试工具测试即将发布的版本,以便在 PostgreSQL 17 正式发布之前发现错误和回归问题。由于这是 Beta 版,因此仍有可能对数据库行为、功能细节和 API 进行微小更改。您的反馈和测试将有助于确定新功能的最终调整,因此请在不久的将来进行测试。用户测试的质量有助于确定我们何时可以发布最终版本。
PostgreSQL wiki 中公开提供了 未解决问题列表。您可以使用 PostgreSQL 网站上的此表单报告错误:
https://www.postgresql.org/account/submitbug/

1.安装前准备

1.1、软件、硬件说明

项目版本环境要求
操作系统CentOS 7.9内存:2G CPU:2核
数据库PostgreSQL 17.0 beat1PostgreSQL 17.0 beat1

1.2、检查操作系统版本

  1. [root@PostgreSQL_Beta vnote-continuous-build]# hostnamectl
  2. Static hostname: PostgreSQL_Beta
  3. Icon name: computer-vm
  4. Chassis: vm
  5. Machine ID: f909e2afff734de89f78798b68126c97
  6. Boot ID: 5c802c6e3e554a9b89a58bb0ca1b6fe1
  7. Virtualization: vmware
  8. Operating System: CentOS Linux 7 (Core)
  9. CPE OS Name: cpe:/o:centos:centos:7
  10. Kernel: Linux 3.10.0-1160.71.1.el7.x86_64
  11. Architecture: x86-64
  12. [root@PostgreSQL_Beta vnote-continuous-build]#

2、环境初始化

2.1、安装PostgreSQL必备插件

  1. yum -y install readline readline-devel zlib zlib-devel libicu libicu-devel

2.2、安装PostgreSQL必备插件

  1. [root@PostgreSQL_Beta ~]# sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config

2..3、内核参数调整

  1. [root@PostgreSQL_Beta ~]# cat>>/etc/sysctl.conf<<EOF
  2. > fs.file-max = 76724200
  3. > kernel.sem = 10000 10240000 10000 1024
  4. > kernel.shmmni = 4096
  5. > kernel.shmall = 253702
  6. > kernel.shmmax = 1039163392
  7. > net.ipv4.ip_local_port_range = 9000 65500
  8. > net.core.rmem_default = 262144
  9. > net.core.wmem_default = 262144
  10. > net.core.rmem_max = 4194304
  11. > net.core.wmem_max = 1048576
  12. > fs.aio-max-nr = 40960000
  13. > vm.dirty_ratio=20
  14. > vm.dirty_background_ratio=3
  15. > vm.dirty_writeback_centisecs=100
  16. > vm.dirty_expire_centisecs=500
  17. > vm.swappiness=10
  18. > vm.min_free_kbytes=524288
  19. > vm.swappiness=0
  20. > vm.overcommit_memory=2
  21. > vm.overcommit_ratio=75
  22. > net.ipv4.ip_local_port_range = 10000 65535
  23. > EOF

2.4、用户 limits 设置

说明: 把下面的行增加到/etc/security/limits.conf 文件中

  1. [root@PostgreSQL_Beta ~]# cat>>/etc/security/limits.conf<<EOF
  2. > postgres soft nofile 1048576
  3. > postgres hard nofile 1048576
  4. > postgres soft nproc 131072
  5. > postgres hard nproc 131072
  6. > postgres soft stack 10240
  7. > postgres hard stack 32768
  8. > postgres soft core 6291456
  9. > postgres hard core 6291456
  10. > EOF

2.5检查是否修改正确

  1. [root@PostgreSQL_Beta ~]$ cat /etc/security/limits.conf
  2. # /etc/security/limits.conf
  3. #
  4. #This file sets the resource limits for the users logged in via PAM.
  5. #It does not affect resource limits of the system services.
  6. #
  7. #Also note that configuration files in /etc/security/limits.d directory,
  8. #which are read in alphabetical order, override the settings in this
  9. #file in case the domain is the same or more specific.
  10. #That means for example that setting a limit for wildcard domain here
  11. #can be overriden with a wildcard setting in a config file in the
  12. #subdirectory, but a user specific setting here can be overriden only
  13. #with a user specific setting in the subdirectory.
  14. #
  15. #Each line describes a limit for a user in the form:
  16. #
  17. #<domain> <type> <item> <value>
  18. #
  19. #Where:
  20. #<domain> can be:
  21. # - a user name
  22. # - a group name, with @group syntax
  23. # - the wildcard *, for default entry
  24. # - the wildcard %, can be also used with %group syntax,
  25. # for maxlogin limit
  26. #
  27. #<type> can have the two values:
  28. # - "soft" for enforcing the soft limits
  29. # - "hard" for enforcing hard limits
  30. #
  31. #<item> can be one of the following:
  32. # - core - limits the core file size (KB)
  33. # - data - max data size (KB)
  34. # - fsize - maximum filesize (KB)
  35. # - memlock - max locked-in-memory address space (KB)
  36. # - nofile - max number of open file descriptors
  37. # - rss - max resident set size (KB)
  38. # - stack - max stack size (KB)
  39. # - cpu - max CPU time (MIN)
  40. # - nproc - max number of processes
  41. # - as - address space limit (KB)
  42. # - maxlogins - max number of logins for this user
  43. # - maxsyslogins - max number of logins on the system
  44. # - priority - the priority to run user process with
  45. # - locks - max number of file locks the user can hold
  46. # - sigpending - max number of pending signals
  47. # - msgqueue - max memory used by POSIX message queues (bytes)
  48. # - nice - max nice priority allowed to raise to values: [-20, 19]
  49. # - rtprio - max realtime priority
  50. #
  51. #<domain> <type> <item> <value>
  52. #
  53. #* soft core 0
  54. #* hard rss 10000
  55. #@student hard nproc 20
  56. #@faculty soft nproc 20
  57. #@faculty hard nproc 50
  58. #ftp hard nproc 0
  59. #@student - maxlogins 4
  60. # End of file
  61. postgres soft nofile 1048576
  62. postgres hard nofile 1048576
  63. postgres soft nproc 131072
  64. postgres hard nproc 131072
  65. postgres soft stack 10240
  66. postgres hard stack 32768
  67. postgres soft core 6291456
  68. postgres hard core 6291456

3.PostgreSQL17.0beta1部署

3.1、创建用户和组

  1. [root@PostgreSQL_Beta ~]# groupadd postgres -g 3000
  2. [root@PostgreSQL_Beta ~]# useradd postgres -g 3000 -u 3000
  3. [root@PostgreSQL_Beta ~]# echo "postgres"|passwd --stdin postgres
  4. 更改用户 postgres 的密码 。
  5. passwd:所有的身份验证令牌已经成功更新。

3.2、创建安装目录

目录规划:

序号目录名称目录
1postgres安装目录/postgres/server
2软件安装目录/install
3数据目录/postgres/data
4WAL 目录/postgres/wal
5归档目录/postgres/archive

创建目录:

  1. [root@PostgreSQL_Beta ~]# mkdir /install
  2. [root@PostgreSQL_Beta ~]# chmod -R 777 /install
  3. [root@PostgreSQL_Beta ~]# mkdir /postgres
  4. [root@PostgreSQL_Beta ~]# mkdir -p /postgres/server
  5. [root@PostgreSQL_Beta ~]# mkdir -p /postgres/data
  6. [root@PostgreSQL_Beta ~]# mkdir -p /postgres/wal
  7. [root@PostgreSQL_Beta ~]# mkdir -p /postgres/archive
  8. [root@PostgreSQL_Beta ~]# chown -R postgres:postgres /postgres /install
  9. [root@PostgreSQL_Beta ~]# chmod 0775 /postgres
  10. [root@PostgreSQL_Beta ~]# chmod 0700 /postgres/data
  11. [root@PostgreSQL_Beta ~]#

3.3、使用安装用户postgres,切换到install安装目录下,并解压安装包

  1. [root@PostgreSQL_Beta ~]# su postgres
  2. [postgres@PostgreSQL_Beta root]$ cd /install
  3. [postgres@PostgreSQL_Beta install]$ ls
  4. postgresql-17beta1.tar.gz
  5. [postgres@PostgreSQL_Beta install]$ tar -xvf postgresql-17beta1.tar.gz
  6. postgresql-17beta1/
  7. postgresql-17beta1/.cirrus.star
  8. postgresql-17beta1/.cirrus.tasks.yml
  9. ..................................................................................
  10. postgresql-17beta1/src/tutorial/complex.source
  11. postgresql-17beta1/src/tutorial/funcs.c
  12. postgresql-17beta1/src/tutorial/funcs.source
  13. postgresql-17beta1/src/tutorial/syscat.source

3.4、切换到postgresql-17beta1安装包目录,并执行安装

说明:安装在/postgres/server目录,port=5432
  1. [postgres@PostgreSQL_Beta install]$ ls
  2. postgresql-17beta1 postgresql-17beta1.tar.gz
  3. [postgres@PostgreSQL_Beta install]$cd postgresql-17beta1
  4. [postgres@PostgreSQL_Beta postgresql-17beta1]$ ./configure --prefix=/postgres/server --with-pgport=5432
  5. checking build system type... x86_64-pc-linux-gnu
  6. checking host system type... x86_64-pc-linux-gnu
  7. checking which template to use... linux
  8. checking whether NLS is wanted... no
  9. checking for default port number... 5432
  10. checking for block size... 8kB
  11. checking for segment size... 1GB
  12. checking for WAL block size... 8kB
  13. ...................................................................
  14. config.status: creating src/Makefile.global
  15. config.status: creating src/include/pg_config.h
  16. config.status: creating src/include/pg_config_ext.h
  17. config.status: creating src/interfaces/ecpg/include/ecpg_config.h
  18. config.status: linking src/backend/port/tas/dummy.s to src/backend/port/tas.s
  19. config.status: linking src/backend/port/posix_sema.c to src/backend/port/pg_sema.c
  20. config.status: linking src/backend/port/sysv_shmem.c to src/backend/port/pg_shmem.c
  21. config.status: linking src/include/port/linux.h to src/include/pg_config_os.h
  22. config.status: linking src/makefiles/Makefile.linux to src/Makefile.port

3.5、使用 make 编译

  1. [postgres@PostgreSQL_Beta postgresql-17beta1]$ make
  2. make -C ./src/backend generated-headers
  3. make[1]: 进入目录“/install/postgresql-17beta1/src/backend”
  4. make -C ../include/catalog generated-headers
  5. make[2]: 进入目录“/install/postgresql-17beta1/src/include/catalog”
  6. make[2]: 对“generated-headers”无需做任何事。
  7. make[2]: 离开目录“/install/postgresql-17beta1/src/include/catalog”
  8. make -C nodes generated-header-symlinks
  9. ........................................................................................................
  10. make[2]: 离开目录“/install/postgresql-17beta1/src/test/isolation”
  11. make -C test/perl all
  12. make[2]: 进入目录“/install/postgresql-17beta1/src/test/perl”
  13. make[2]: 对“all”无需做任何事。
  14. make[2]: 离开目录“/install/postgresql-17beta1/src/test/perl”
  15. make[1]: 离开目录“/install/postgresql-17beta1/src”
  16. make -C config all
  17. make[1]: 进入目录“/install/postgresql-17beta1/config”
  18. make[1]: 对“all”无需做任何事。
  19. make[1]: 离开目录“/install/postgresql-17beta1/config”

3.6、使用 make install安装

  1. [postgres@PostgreSQL_Beta postgresql-17beta1]$ make install
  2. make -C ./src/backend generated-headers
  3. make[1]: 进入目录“/install/postgresql-17beta1/src/backend”
  4. make -C ../include/catalog generated-headers
  5. make[2]: 进入目录“/install/postgresql-17beta1/src/include/catalog”
  6. make[2]: 对“generated-headers”无需做任何事。
  7. make[2]: 离开目录“/install/postgresql-17beta1/src/include/catalog”
  8. make -C nodes generated-header-symlinks
  9. make[2]: 进入目录“/install/postgresql-17beta1/src/backend/nodes”
  10. ................................................................................................................
  11. make -C config install
  12. make[1]: 进入目录“/install/postgresql-17beta1/config”
  13. /usr/bin/mkdir -p '/postgres/server/lib/pgxs/config'
  14. /usr/bin/install -c -m 755 ./install-sh '/postgres/server/lib/pgxs/config/install-sh'
  15. /usr/bin/install -c -m 755 ./missing '/postgres/server/lib/pgxs/config/missing'
  16. make[1]: 离开目录“/install/postgresql-17beta1/config”
  17. [postgres@PostgreSQL_Beta postgresql-17beta1]$
  18. [postgres@PostgreSQL_Beta postgresql-17beta1]$

3.7、查看版本是否正确

  1. [postgres@PostgreSQL_Beta postgresql-17beta1]$ /postgres/server/bin/postgres --version
  2. postgres (PostgreSQL) 17beta1
  3. [postgres@PostgreSQL_Beta postgresql-17beta1]$

3.8、初始化数据目录

  1. [postgres@PostgreSQL_Beta postgresql-17beta1]$ /postgres/server/bin/initdb -D/postgres/data -X/postgres/wal -EUTF8 -Upostgres -W
  2. The files belonging to this database system will be owned by user "postgres".
  3. This user must also own the server process.
  4. The database cluster will be initialized with locale "zh_CN.UTF-8".
  5. initdb: could not find suitable text search configuration for locale "zh_CN.UTF-8"
  6. The default text search configuration will be set to "simple".
  7. Data page checksums are disabled.
  8. Enter new superuser password:设置密码
  9. Enter it again:设置密码
  10. fixing permissions on existing directory /postgres/data ... ok
  11. fixing permissions on existing directory /postgres/wal ... ok
  12. creating subdirectories ... ok
  13. selecting dynamic shared memory implementation ... posix
  14. selecting default "max_connections" ... 100
  15. selecting default "shared_buffers" ... 128MB
  16. selecting default time zone ... Asia/Shanghai
  17. creating configuration files ... ok
  18. running bootstrap script ... ok
  19. performing post-bootstrap initialization ... ok
  20. syncing data to disk ... ok
  21. initdb: warning: enabling "trust" authentication for local connections
  22. initdb: hint: You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb.
  23. Success. You can now start the database server using:
  24. /postgres/server/bin/pg_ctl -D /postgres/data -l logfile start
  25. [postgres@PostgreSQL_Beta postgresql-17beta1]$

3.9、设置环境变量

  1. [postgres@PostgreSQL_Beta postgresql-17beta1]$ vi /home/postgres/.bashrc

环境变量设置内容如下:

  1. # .bashrc
  2. # Source global definitions
  3. if [ -f /etc/bashrc ]; then
  4. . /etc/bashrc
  5. fi
  6. # Uncomment the following line if you don't like systemctl's auto-paging feature:
  7. # export SYSTEMD_PAGER=
  8. # User specific aliases and functions
  9. export PGPORT=5432
  10. export PGUSER=postgres
  11. export PGHOME=/postgres/server
  12. export PGDATA=/postgres/data
  13. export PATH=$PGHOME/bin:$PATH
  14. ~
  15. "~/.bashrc" 16L, 363C

3.10、使环境变量生效

  1. [postgres@PostgreSQL_Beta postgresql-17beta1]$ source /home/postgres/.bashrc
  2. [postgres@PostgreSQL_Beta postgresql-17beta1]$

3.11、开机自启动服务

说明:PostgreSQL的开机自启动脚本位于PostgreSQL源码目录的contrib/start-scripts路径下,这个路径是安装包解压完的路径。

1.切换到root账户,并指定目录/install/postgresql-17beta1/contrib/start-scripts

  1. [root@PostgreSQL_Beta ~]# cd /install/postgresql-17beta1/contrib/start-scripts
  2. [root@PostgreSQL_Beta start-scripts]#

2.修改linux文件属性,添加X属性

  1. [root@PostgreSQL_Beta start-scripts]# chmod a+x linux

3.复制linux文件到/etc/init.d目录下,更名为PostgreSQL

  1. [root@PostgreSQL_Beta start-scripts]# cp linux /etc/init.d/PostgreSQL

4.修改/etc/init.d/PostgreSQL文件

  1. [root@PostgreSQL_Beta start-scripts]# vi /etc/init.d/PostgreSQL

5.修改/etc/init.d/PostgreSQL文件中的prefix、PGDATA

说明:prefix设置为PostgreSQL的安装路径:prefix=/postgres/server;
PGDATA设置为PostgreSQL的数据目录路径:PGDATA=”/postgres/data”
  1. # Installation prefix
  2. prefix=/postgres/server
  3. # Data directory
  4. PGDATA="/postgres/data"
  5. # Who to run postgres as, usually "postgres". (NOT "root")
  6. PGUSER=postgres

6.执行service PostgreSQL start,就可以启动PostgreSQL服务

  1. [root@PostgreSQL_Beta start-scripts]# service PostgreSQL start
  2. Starting PostgreSQL: ok

7、设置PostgreSQL服务开机自启动

  1. [root@PostgreSQL_Beta ~]# chkconfig --add PostgreSQL

8、重启PostgreSQL服务器

  1. [root@PostgreSQL_Beta ~]# reboot

9、检查PostgreSQL服务,此时PostgreSQL服务已自启动

  1. [postgres@PostgreSQL_Beta /]$ pg_ctl status
  2. pg_ctl: server is running (PID: 917)
  3. /postgres/server/bin/postgres "-D" "/postgres/data"
  4. [postgres@PostgreSQL_Beta /]$

3.11、登录pgsql,测试登录

  1. [postgres@PostgreSQL_Beta /]$ psql
  2. psql (17beta1)
  3. Type "help" for help.
  4. postgres=#

3.12、导入数据测试性能

  1. postgres=# select total_exec_time,(total_exec_time/calls) as average from pg_stat_statements;
  2. total_exec_time | as average
  3. --------------------+---------------------
  4. 12.39657 | 6.198285
  5. 0.8457290000000001 | 0.28190966666666667
  6. 58.91526 | 58.91526
  7. (3 rows)
  8. postgres=#

总结:

1、安装方式:通过安装PostgreSQL 17 Beta 1,发现PostgreSQL 17 Beta 1的安装方式与PostgreSQL 14、15、16版本的安装方式没有太大变化。

2、查询和操作性能改进:官网介绍本次更新,Vacuum 是负责回收存储的 PostgreSQL 进程,它拥有一个新的内部数据结构,可将内存使用量减少 20 倍。本次导入10万条数据,感官上与以前的版本没有多大变化,10s左右就导入完成(可能是个人测试数据过小,而未测试到真正的性能问题);

3、备份和导出管理:新增的pg_combinebackup插件,对流复制按需恢复,应该是个好工具。

4、监控:相信对PostgreSQL维护有很大的帮助。

5、未测试到的功能,将继续测试,探索新的功能。

最后修改时间:2024-05-27 17:46:42
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论