postgresql学习笔记
正文
1. 什么是PostgreSQL
PostgreSQL是一个功能强大的开源对象关系型数据库系统,他使用和扩展了SQL语言,并结合了许多安全存储和扩展最复杂数据工作负载的功能,根据 2024 年 Stack Overflow 的调研结果,PostgreSQL 已经超越 MySQL 成为最受开发者欢迎的数据库
目前主流的 服务提供商如微软云、腾讯云 阿里云、百度云都提供了 PostgreSQL RDS 服务
特点:
-
支持多种操作系统:PostgreSQL可以在Windows、Linux、UNIX、Mac OS X和BSD等操作系统上运行。
-
支持广泛的数据类型以及自定义类型:支持多种数据类型、函数、操作符和聚集函数,用户可以通过添加新的数据类型、函数和操作符来扩展数据库。
-
索引方法:支持多种索引方法,包括R-/R+tree索引、哈希索引、反向索引、部分索引、Expression索引、GiST和GIN等。
-
并发控制:借助多版本并发控制(MVCC)技术,PostgreSQL实现了高度并发的读写操作,避免了数据锁定和读写冲突。
-
复制和高可用性:支持数据复制和流复制,可以创建热备份和实现高可用性架构。
-
扩展性:通过提供扩展机制,用户可以自定义和使用各种插件和扩展,从而增强PostgreSQL的功能。
应用场景:
-
Web应用程序:PostgreSQL提供了可靠、高性能的数据库解决方案,适用于开发Web应用程序和电子商务平台。
-
地理信息系统:借助PostGIS扩展,PostgreSQL可以有效地存储和查询地理空间数据,并支持空间分析功能。
-
数据仓库和大数据分析:由于其处理复杂查询和大规模数据集的能力,PostgreSQL适用于构建数据仓库和进行数据分析。
-
物联网(IoT)应用:由于其稳定、高可靠的特性,PostgreSQL适用于处理大量传感器数据和实时事件。
2. 安装
下载解压后的目录:
初始化数据库(也可以使用pg_ctl
)(不能使用root):bin/initdb -D ./data -E UTF8 --locale=C
pg_ctl
是 PostgreSQL 用于控制数据库服务器进程的****命令行工具,具有以下功能:
-
初始化PG数据库实例
-
启动,停止,重启PG数据库服务
-
查看PG数据库服务的状态
-
让数据库重新读取配置文件
-
将备库提升为主库
示例: 初始化PG数据库实例
pg_ctl initdb [-s] [-D datadir] [-o options]
实际调用initdb命令进行数据库实例的初始化
示例:
pg_ctl init -s -D $PGDATA
-s 只打印错误和告警信息,不打印提示性信息
D datadir,指定数据库实例的数据目录
-o options,直接传递给initdb命令的参数
启动,停止,重启PG数据库服务
启动PG数据库
pg_ctl start [-w] [-t seconds] [-s] [-D datadir] [-l filename] [-o options] [-p path] [-c]
示例:
pg_ctl start -w -D $PGDATA
start,启动数据库实例
-w,等待启动完成
-t,等待启动完成等待的秒数,默认60秒
-s,只打印错误和告警信息,不打印提示性信息
-D datadir,指定数据库实例的数据目录
-l,把服务器日志输出附加在filename文件上
-o options,指定传递给postgres程序的选项
-p path,指定postgres程序位置,默认与pg_ctl同一个目录
-c,提高服务器的软限制(ulimit -c),允许数据库实例异常时产生一个coredump文件,以便于问题的排查与分析
停止PG数据库
pg_ctl stop [-W] [-t seconds] [-s] [-D datadir] [-m s|f|i ]
示例:
pg_ctl stop -D $PGDATA -m f
-W,不等待数据库停下来就返回
-m,指定停止的模式,可选值s(smart),f(fast),i(immediate)。
重启PG数据库
pg_ctl restart [-w] [-t seconds] [-s] [-D datadir] [-c] [-m s|f|i ] [-o options]
示例:
pg_ctl restart -D $PGDATA
重新读取配置文件
pg_ctl reload [-s] [-D datadir]
示例:
pg_ctl reload -D $PGDATA
在配置文件中改变参数后,需要使用上述命令使参数生效。
查看数据库实例状态
pg_ctl status [-D datadir]
示例:
pg_ctl status -D $PGDATA
将备库提升为主库
pg_ctl promote [-D DATADIR] [-W] [-t SECS] [-s]
示例:
pg_ctl promote -D $PGDATA
3. 配置文件
postgresql.conf
pg_hba.conf
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!