postgresql学习笔记

 

正文

1. 什么是PostgreSQL

PostgreSQL是一个功能强大的开源对象关系型数据库系统,他使用和扩展了SQL语言,并结合了许多安全存储和扩展最复杂数据工作负载的功能,根据 2024 年 Stack Overflow 的调研结果,PostgreSQL 已经超越 MySQL 成为最受开发者欢迎的数据库

目前主流的 服务提供商如微软云、腾讯云 阿里云、百度云都提供了 PostgreSQL RDS 服务

特点:

  1. 支持多种操作系统:PostgreSQL可以在Windows、Linux、UNIX、Mac OS X和BSD等操作系统上运行。

  2. 支持广泛的数据类型以及自定义类型:支持多种数据类型、函数、操作符和聚集函数,用户可以通过添加新的数据类型、函数和操作符来扩展数据库。

  3. 索引方法:支持多种索引方法,包括R-/R+tree索引、哈希索引、反向索引、部分索引、Expression索引、GiST和GIN等。

  4. 并发控制:借助多版本并发控制(MVCC)技术,PostgreSQL实现了高度并发的读写操作,避免了数据锁定和读写冲突。

  5. 复制和高可用性:支持数据复制和流复制,可以创建热备份和实现高可用性架构。

  6. 扩展性:通过提供扩展机制,用户可以自定义和使用各种插件和扩展,从而增强PostgreSQL的功能。

应用场景:

  1. Web应用程序:PostgreSQL提供了可靠、高性能的数据库解决方案,适用于开发Web应用程序和电子商务平台。

  2. 地理信息系统:借助PostGIS扩展,PostgreSQL可以有效地存储和查询地理空间数据,并支持空间分析功能。

  3. 数据仓库和大数据分析:由于其处理复杂查询和大规模数据集的能力,PostgreSQL适用于构建数据仓库和进行数据分析。

  4. 物联网(IoT)应用:由于其稳定、高可靠的特性,PostgreSQL适用于处理大量传感器数据和实时事件。

2. 安装

下载解压后的目录:

初始化数据库(也可以使用pg_ctl)(不能使用root):bin/initdb -D ./data -E UTF8 --locale=C

pg_ctl PostgreSQL 用于控制数据库服务器进程的****命令行工具,具有以下功能:

  1. 初始化PG数据库实例

  2. 启动,停止,重启PG数据库服务

  3. 查看PG数据库服务的状态

  4. 让数据库重新读取配置文件

  5. 将备库提升为主库

示例: 初始化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

4. pgadmin

5. psql

6. 数据类型

7. springboot项目中使用

8. sql高级特性

9. 体系结构

10. 并行查询

11. 事务与并发控制

12. 分区表

13. Nosql特性

14. 性能优化

15. 基准测试与pgbench

16. 扩展模块

17. PostGIS

posted @   侯小厨  阅读(48)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
Fork me on Gitee
点击右上角即可分享
微信分享提示