PostgreSQL-研究学习-介绍与安装

这篇具有很好参考价值的文章主要介绍了PostgreSQL-研究学习-介绍与安装。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

PostgreSQL-预研

是个很厉害的数据库的样子 ψ(*`ー´)ψ

官方文档:http://www.postgres.cn/docs/12/


总的结论和备注

PgSQL 支持对JSON的支持很强大,以及提供了很多数学几何相关的数据类型【例:点,线条,几何等】

基本语法其实和MySQL差不多,具体的就要在使用的时候去适应和学习了!!!

概述

PostgreSQL数据库是目前功能最强大的开源数据库,支持丰富的数据类型(如JSON和JSONB类型、数组类型)和自定义类型。而且它提供了丰富的接口,可以很容易地扩展它的功能,如可以在GiST框架下实现自己的索引类型等,它还支持使用C语言写自定义函数、触发器,也支持使用流行的语言写自定义函数,比如其中的PL/Perl提供了使用Perl语言写自定义函数的功能,当然还有PL/Python、PL/Tcl,等等。

PostgreSQL是为特性非常齐全的对象-关系型数据库,同时还支持NoSql的文档型存储。

PostgreSQL 对比MySQL

一、事务隔离之间的比较
事务隔离级别 postgresql mysql
读未提交 无法读脏数据
读已提交 快照实现 快照实现
可重复读 有,无幻读,发生冲突时,牺牲其中一个事务 已实现,有幻读,悲观锁,因为Gap Lock问题,存在性能问题
可串行化 已实现,通过SSI实现,乐观锁,性能比较好 悲观锁,S2PL,性能不好,实用性比较差
二、持久化之间的比较
持久化技术 postgresql mysql
事务的持久化 WAL日志 binlog和innodb的redo log
页断裂问题 full_page_writes double write
检查块的一致性 checksum checksum,db_lock_checking
事务同步提交 默认是同步synchronous_commit=on,session级别可以设置,更灵活 sync_binlog=1,innodb_flush_log_at_trx_commit=1全局参数
三、复制之间的比较
postgresql mysql
支持物理复制和逻辑复制 仅支持逻辑复制
物理复制延迟小 逻辑复制延时大
大更新对复制延迟影响小 大更新对复制延迟的影响很大,很容易导致复制延迟
物理复制主备之间数据绝对一致 逻辑复制可能出现准备数据不一致情况
支持一主多从,支持联级复制,不支持双主架构 支持一主多从,支持联级复制,支持双主架构
四、查询相关功能的比较
postgresql mysql
成熟的基于代价的SQL优化器,复杂SQL性能很好 查询优化器不够成熟,非完全的基于代价的SQL优化器,对复杂查询的性能较低
多种表连接类型:nested-loop join,sort-merge join,hash join 一种表连接类型:nested-loop
非常智能,可以走多个索引 大部分查询只能使用表上得单一索引;在某些情况下,会存在使用多个索引的查询,但是查询优化器通常会低估其成本,它们常常比表扫描还有慢
pg11版本之前表增加列基本上是重建表和索引,消耗时间比较长,pg11之后对非空列添加不需要重建 表增加列,只是在数据字典中增表定义,不会重建表
支持在线创建索引,pg10开始支持并行创建索引 支持在线创建索引,不支持并发索引
支持并行查询 mysql8.0之前不支持并行查询
支持B-树,哈希,R-树和Gist索引 B-树,哈希(不同存储引擎)
五、表功能之间的比较
postgresql mysql
除了支持pl/pgsql写存储过程,还支持pl/perl,pl/python,pl/tcl;也支持用C语言的写存储过程 存储过程与触发器功能有限
有单独的sequence 没有单独的sequence,sequence在表主键上
PostGIS插件支持,PostGIS是目前使用最广泛地开源GIS系统 GIS的支持有限
通过GIN索引提供了对JSON内部数据的索引,只要创建索引之后,不管存储json的数据格式如何变化,都能利用GIN索引加快查询 json类型只支持虚拟列方式创建索引,不支持json内部数据的索引,当json内部的列结构不确定时,不能事先创建索引来提高查询性能
通过FDW框架完善支持外部表功能,可以方便连接其他异构数据源,如mysql,mongodb等 外部表功能有限,基本不具有太多实用价值
堆表,不支持索引组织表 索引组织表,不支持堆表
ddl可以回滚,支持原子性DDL DDL不支持回滚,mysql8.0之前多个ddl不能原子执行
支持窗口函数 mysql8.0之前不支持窗口函数
六、视图和安全之间的比较
postgresql mysql
支持物化视图 不支持物化视图
支持临时表 支持临时表
支持主键,外键,唯一键,检查,非约束,还支持exclusion constraints 支持主键,外键,唯一键,检查,非约束
支持两阶段提交 支持两阶段提交
认证方式丰富,信任/口令/PAM/LDAP/Kerberos/基于ident 基本支持密码认证
可以使用pgcrypto库中的函数对列进行加密/解密;可以通过ssl连接实现网络加密 可以在表级制定密码来对数据进行加密;可以使用aes_encrypt和aes_decrypt函数对列数据进行加密和解密;可以通过ssl连接实现网络加密
使用explain命令查看查询的解释计划,结果很直观,也很详细 使用explain命令查看查询解释计划,但结果不直观,不详细
postgresql完成遵从ACID mysql只有innodb等少量存储引擎遵从ACID

安装教程【CentOS7 - 14版本】

# 官方https://www.postgresql.org/download/linux/redhat/
# Install the repository RPM:
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

# Install PostgreSQL:
sudo yum install -y postgresql14-server

# Optionally initialize the database and enable automatic start:
sudo /usr/pgsql-14/bin/postgresql-14-setup initdb
sudo systemctl enable postgresql-14
sudo systemctl start postgresql-14

# ================================================================
### 其他操作
# =============================================
## 自定义数据存储目录【1】
# 创建目录
mkdir -p /usr/local/postgresql/data
# 授权, postgres用户与组在第2步会自动创建好
chown -R postgres:postgres /usr/local/postgresql
# =============================
# 初始化数据库【2】
su - postgres
# 使用自定义数据存储目录【选一个】
/usr/pgsql-14/bin/initdb -D /usr/local/postgresql/data/
# 使用默认数据存储目录【选一个】
/usr/pgsql-14/bin/initdb
# =============================
## 修改启动脚本【3】
# 使用root用户
vim /usr/lib/systemd/system/postgresql-14.service
......
# Location of database directory
Environment=PGDATA=/usr/local/postgresql/data/
......
# 重新加载系统服务
systemctl daemon-reload
# =============================
## 设置监听地址【4】
# 使用postgres用户
vim /usr/local/postgresql/data/postgresql.conf
......
# - Connection Settings -
listen_addresses = '*'                  # what IP address(es) to listen on;
......
# =============================
# 新增密码认证【5】
vim /usr/local/postgresql/data/pg_hba.conf
......
。。。。。
host    replication     all             ::1/128                 trust
# 添加可通过密码对所有用户和主机进行认证【就下面这一行】
host    all             all             0.0.0.0/0               trust  
# =============================# =============================
## 修改postgres超级用户密码【6】
# 使用postgres用户
psql -p 5432 -U postgres
ALTER USER postgres WITH PASSWORD '123456';
# ============================= 完成  =============================
# docker 方案【未尝试】
docker run -d -p 5432:5432 --name postgresql -v pgdata:/var/lib/postgresql/data -e  POSTGRES_PASSWORD=123321 postgres

安装pgAdmin4-web服务

官网:https://www.pgadmin.org/
官方安装教程:https://www.pgadmin.org/download/pgadmin-4-rpm/

安装好了之后的截面图:
PostgreSQL-研究学习-介绍与安装,数据库,笔记,postgresql,学习,数据库

安装教程:(如下)

rpm -ivh https://ftp.postgresql.org/pub/pgadmin/pgadmin4/yum/pgadmin4-redhat-repo-2-1.noarch.rpm --force --nodeps
sudo yum install pgadmin4-web

# 设置 selinux  这个需要重启
vim /etc/selinux/config
SELINUX=disable
# 设置 selinux  临时不用重启
setenforce 0

# 修改端口
vim /etc/httpd/conf.d/pgadmin4.conf
<VirtualHost *:80>
ServerName pgadmin.cn
# 自带内容
</VirtualHost>

# 执行
/usr/pgadmin4/bin/setup-web.sh

# 完成:后续按提示初始化就可以里  
# docker方案【未尝试】
docker pull dpage/pgadmin4

docker run -d -p 5433:80 --name pgadmin4 -e PGADMIN_DEFAULT_EMAIL=123@123.com -e PGADMIN_DEFAULT_PASSWORD=123456 dpage/pgadmin4

一些SQL写法-Demo参考

聚集-过滤
SELECT
    count(*) AS unfiltered,
    count(*) FILTER (WHERE i < 5) AS filtered   # 这里的过滤
FROM generate_series(1,10) AS s(i);
 unfiltered | filtered
------------+----------
         10 |        4
高级分组统计

CUBEROLLUP 更高级的排列

=> SELECT * FROM items_sold;
 brand | size | sales
-------+------+-------
 Foo   | L    |  10
 Foo   | M    |  20
 Bar   | M    |  15
 Bar   | L    |  5
(4 rows)

=> SELECT brand, size, sum(sales) FROM items_sold GROUP BY GROUPING SETS ((brand), (size), ());
 brand | size | sum
-------+------+-----
 Foo   |      |  30
 Bar   |      |  20
       | L    |  15
       | M    |  35
       |      |  50
(5 rows)
手动构建临时Table
=> SELECT * FROM (VALUES (1, 'one'), (2, 'two'), (3, 'three')) AS t (num,letter);
 num | letter
-----+--------
   1 | one
   2 | two
   3 | three
(3 rows)
WITH单查询内辅助查询
WITH regional_sales AS (  # 有点像临时表的查询,预处理
    SELECT region, SUM(amount) AS total_sales
    FROM orders
    GROUP BY region
), top_regions AS (
    SELECT region
    FROM regional_sales
    WHERE total_sales > (SELECT SUM(total_sales)/10 FROM regional_sales)
)
SELECT region,
       product,
       SUM(quantity) AS product_units,
       SUM(amount) AS product_sales
FROM orders
WHERE region IN (SELECT region FROM top_regions)
GROUP BY region, product;

中文全文检索

全文索引的实现要靠 PgSQL 的 gin 索引。分词功能 PgSQL 内置了英文、西班牙文等,但中文分词需要借助开源插件 zhparser

参考文档:https://www.cnblogs.com/zhenbianshu/p/7795247.html文章来源地址https://www.toymoban.com/news/detail-667477.html


到了这里,关于PostgreSQL-研究学习-介绍与安装的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux 源码安装: PostgreSQL 15.6数据库

    💖The Begin💖点点关注,收藏不迷路💖 🍒 PostgreSQL 中文文档 下载地址:https://www.postgresql.org/ftp/source/ 安装结果: vi ~/.bashrc ,如果全局的则编辑/etc/profile。 可以执行以下命令查看 PostgreSQL 版本信息: 1、创建一个名为 postgresql.service 的服务单元文件: 编辑 /etc/systemd/system/p

    2024年03月24日
    浏览(82)
  • 数据库管理系统PostgreSQL部署安装完整教程

            PostgreSQL是一个开源的关系型数据库管理系统,它支持大量的数据类型和复杂的查询语言,可以用于各种应用程序。它是一个高性能的数据库,可以处理大量的数据,并且具有良好的可扩展性和可靠性。 目录 一.Linux系统安装PostgresSQL(Centos7) 1.更新yun源 2.安装Po

    2024年02月09日
    浏览(73)
  • 数据库应用:CentOS 7离线安装PostgreSQL

    目录 一、理论 1.PostgreSQL 2.PostgreSQL离线安装 3.PostgreSQL初始化 4.PostgreSQL登录操作 二、实验 1.CentOS 7离线安装PostgreSQL  2.登录PostgreSQL 3.Navicat连接PostgreSQL 三、总结         (1)简介 PostgreSQL 是一个功能强大的开源对象关系数据库管理系统(ORDBMS), 用于安全的存 储数据,允许

    2024年02月16日
    浏览(46)
  • 阿里云PolarDB自研数据库详细介绍_兼容MySQL、PostgreSQL和Oracle语法

    阿里云PolarDB数据库是阿里巴巴自研的关系型分布式云原生数据库,PolarDB兼容三种数据库引擎:MySQL、PostgreSQL、Oracle(语法兼容),目前提供云原生数据库PolarDB MySQL版、云原生数据库PolarDB PostgreSQL版和云原生数据库PolarDB分布式版,阿里云百科aliyunbaike.com分享阿里云PolarDB数据

    2024年02月07日
    浏览(56)
  • Docker环境安装Postgresql数据库Posrgresql 15.6

    宿主机是ubuntu 22.04版本 ubuntu宿主机上安装docker ,参见官方文档https://docs.docker.com/engine/install/ubuntu/, docker-ce是社区版 docker-ee是企业版 1、检查Docker是否安装 2、查看Docker各个版本,也可以参见https://download.docker.com/linux/ubuntu/dists/jammy/pool/stable/amd64/ 3、设置 Docker的apt仓库 4、安装

    2024年04月17日
    浏览(47)
  • PostgreSQL学习笔记(一):数据库、模式、表空间、用户、用户角色

        本文讨论所说的都是 PostgreSQL 数据库的相关定义内容,其中名词以及翻译如下: 数据库: database 模式: schema 表: table 表空间: tablespace 用户: use 用户角色: role PostgreSQL 通用的语法:     在 PostgreSQL 数据库中,数据库(database)可以认为是物理层面数据集合。当使

    2024年02月11日
    浏览(39)
  • DBeaver数据库管理工具安装连接PostgreSQL和DM

    1. 安装 下载地址 https://dbeaver.io/download/ 2. 连接PostgreSQL 配置显示所有数据库 第二个勾选会显示模板数据库 点击 测试连接 ,然后下载驱动 连接成功 3. 连接DM8 3.1 下载驱动 地址 https://eco.dameng.com/document/dm/zh-cn/app-dev/java_Mybatis_frame.html 下载完成解压,将需要的 DmJdbcDriver18.jar 放到

    2024年02月16日
    浏览(49)
  • 在Centos系统源码安装postgreSQL数据库及postGIS扩展

    安装前 PostGIS扩展通常需要安装一些依赖项。 1.GDAL: PostGIS需要GDAL(Geospatial Data Abstraction Library)来处理地理空间数据格式。 2.GEOS: GEOS(Geometry Engine - Open Source)是一个用于处理地理空间数据的C++库。 3.Proj: Proj是用于地图投影的库。 postgreSQL与postGIS插件的版本支持关系 版本对

    2024年04月27日
    浏览(59)
  • PGSQL(PostgreSQL)数据库基础篇: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或其

    2024年04月26日
    浏览(61)
  • PostgreSQL 16数据库的yum、编译、docker三种方式安装——筑梦之路

    随手一记:生成密码的密文sha256加密

    2024年02月07日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包