PostgreSQL常见面试题

0    1330    4

Tags:

👉 本文共约10074个字,系统预计阅读时间或需38分钟。

目录

Oracle、MySQL、PG之间的区别?

1、Oracle 12c、MySQL和PG都可以是单实例多数据库模式。

2、PG和Oracle是多进程模式,MySQL是单进程多线程模式。在并发不高时,MySQL处理速度快,但当并发高的时候,对于现在多核的单台机器上,MySQL的总体处理性能不如PostgreSQL,原因是MySQL的线程无法充分利用CPU的能力。

3、PostgreSQL没有回滚段,而Oracle与MySQL innodb都有回滚段。

4、PostgreSQL完全免费,而且是BSD协议,Oracle是商业数据库,不开源,MySQL数据库虽然是开源的,但现在随着SUN被oracle公司收购,现在基本上被oracle公司控制。

5、PostgreSQL在复杂SQL的执行、存储过程、触发器方面比MySQL支持的要好的多,是去O最佳的数据库。

6、Oracle和PG支持物理备库,而MySQL只支持逻辑主从复制。

7、Oracle支持堆表,也支持索引组织表;PostgreSQL只支持堆表,不支持索引组织表;Innodb只支持索引组织表。

8、PG、SQL Server、Oracle的默认的事务隔离级别为Read Committed(提交读),MySQL的默认的事务隔离级别为Repeatable Read(可重复读)

9、PG、Oracle默认的块大小为8KB,而MySQL默认数据页大小为 16 KB

详情请参考:https://www.dbaup.com/pgoraclehemysqldequbieduibi.html

PG中有关职工表SQL查询的20道题

请参考:https://www.dbaup.com/pgzhongyouguanzhigongbiaosqlchaxunde20daoti.html

谈谈你对PG体系结构的理解

主要从日志文件、参数文件、控制文件、数据文件、redo日志(WAL)、后台进程这几个方面来介绍一下PostgreSQL的架构,请参考:

常见高可用方案

主备流复制:

PG12高可用之1主2从流复制环境搭建及切换测试

PG 14 + Pgpool-II + Watchdog 实现高可用(自动故障转移+读写分离+负载均衡)

pgpool-II和pgpoolAdmin的使用

PostgreSQL使用Pgpool-II实现读写分离+负载均衡

PostgreSQL高可用之repmgr(1主2从+1witness)+Pgpool-II实现主从切换+读写分离+负载均衡

PG高可用集群之Patroni + etcd + HAProxy + keepalived + Prometheus + Grafana监控 部署

PostgreSQL 11版本基于Pacemaker+Corosync+pcs的高可用搭建

PG高可用之主从流复制+keepalived 的高可用

常见分布式方案:

PG高可用之Citus分布式集群搭建及使用:https://www.dbaup.com/pggaokeyongzhicitusfenbushijiqundajianjishiyong.html

PG分布式之PGXL安装部署:https://www.dbaup.com/pgfenbushizhipgxlanzhuangbushu.html

PG分布式之Greenplum安装配置:https://www.dbaup.com/greenplumanzhuangpeizhi.html

双主方案:

1、使用使用Bucardo搭建PG的双主:参考:https://www.dbaup.com/shiyongbucardodajianpgdeshuangzhu.html

2、使用OGG for PG微服务快速双向同步RDS数据库(双主):https://www.dbaup.com/shiyongogg-for-pgweifuwukuaisushuangxiangtongburdsshujukushuangzhu.html

3、OGG用于PG数据库之间双主实时同步(RDS for PG亦可)–OGG远程捕获和投递

https://www.dbaup.com/oggyongyupgshujukuzhijianshuangzhushishitongburds-for-pgyikeoggyuanchengbuhuohetoudi.html

PG中的事务回卷

请参考:https://www.dbaup.com/pgzhongdemvccduobanbenbingfakongzhi.html#shi_wu_hui_juan


PostgreSQL简介

PostgreSQL是对象关系数据库管理系统最常用的语言之一。它主要用于大型 Web 应用程序。它是一个面向对象的关系型开源数据库系统。它非常强大,允许用户轻松扩展任何系统。它扩展了 SQL 语言并采用多种功能来安全地扩展和存储复杂的数据工作负载。

Postgres或在 SQL 世界中简称为Postgresql是广泛和流行的对象关系数据库管理系统之一,主要用于大型 Web 应用程序。它是功能强大的开源对象关系数据库系统之一。它通过结合四个基本概念来提供额外的强大功能,以便用户可以毫无问题地扩展系统。它扩展并使用结合各种功能的 SQL 语言来安全地扩展和存储复杂的数据工作负载。

PostgreSQL 的特点

  • 语言支持:PostgreSQL 支持四种标准的过程语言,包括 PL/pgSQL、PL/Tcl、PL/Perl 和 PL/Python。
  • 索引:PostgreSQL 索引支持 B+ 树、哈希、广义搜索树和广义倒排索引。个人还可以设计自己的个性化索引。
  • 视图:PostgreSQL 支持生成虚拟表的视图。
  • 规则:PostgreSQL 支持规则,允许重写查询的层次结构。
  • 继承:在 PostgreSQL 中,可以将表配置为通过继承从“父”表继承属性。
  • 用户定义的函数:它有助于构建几乎所有新的数据库对象,包括转换、转换、数据类型、域、函数、聚合函数和索引,包括自定义种类运算符的自定义索引。

以下是 PostgreSQL 的一些优点:

  • 稳定的
  • 可靠的
  • 可扩展
  • 简单易学
  • 开源
  • 专为高容量环境而设计
  • 跨平台
  • 更好的支持
  • 灵活的

    以下是 Postgresql 的一些主要功能:

  1. 对象关系数据库
  2. 支持主流操作系统
  3. 支持 SQL 和复杂 SQL 查询的可扩展性
  4. 嵌套事务
  5. 灵活的 API 和数据库验证
  6. 多版本并发控制 (MVCC) 和过程语言
  7. WAL 和客户端服务器
  8. 表继承和异步复制

PostgreSQL的核心优势是什么?

以下是 PostgreSQL 的一些特性:

  • 关系对象数据库。
  • SQL 支持和可扩展性
  • API 和数据库验证的灵活性。
  • MVCC 和过程语言,
  • WAL 和客户端-服务器。

PostgreSQL有什么缺点吗?

是的。有一些缺点。其中一些包括以下内容:

  • 它在性能方面比 MySQL 慢。
  • 与 MySQL 相比,它没有大量开源应用程序的支持。
  • 由于它更注重兼容性,因此为提高速度而进行的更改需要更多的工作。

PostgreSQL中表空间的用途是什么?

它是磁盘中的一个位置。在此,PostgreSQL 存储数据文件,其中包含索引和表等。

列出PostgreSQL支持的各种数据类型。

以下是添加到 PostgreSQL 的一些新数据类型:

  • UUID
  • 数值类型
  • 布尔值
  • 字符类型
  • 时间类型
  • 几何图元
  • 任意精度数值
  • XML
  • 数组等

如何在 PostgreSQL 中存储二进制数据?

我们可以使用字节或使用大对象功能将二进制数据存储在 PostgreSQL 中。

简要说明 Postgresql 中的功能

在任何地方,函数都是重要的部分,因为它们有助于在服务器上执行代码。编程函数的一些语言是 PL/pgSQL,一种 PostgreSQL 的本地语言,以及其他脚本语言,如 Perl、Python、PHP 等。也可以使用名为 PL/R 的统计语言来提高函数的效率。

PostgreSQL 中的字符串常量是什么?

PostgreSQL 中的字符串常量是由单引号 (') 限定的某个字符的序列。它在插入字符或将字符传递给数据库对象时使用。PostgreSQL 允许使用单引号,但由 C 样式的反斜杠集成。它用于数据解析。

PostgreSQL 的令牌是什么?

在 PostgreSQL 中,令牌充当源代码的构建元素。它们由各种特殊字符符号组成。标记是主要由预定义的 SQL 命令和含义组成的关键字。命令包含由分号 (';') 分隔的标记序列。这些可能包括常量、带引号的标识符、附加标识符、关键字或常量。通常,空格分隔标记。

PostgreSQL中的令牌是任何源代码的构建块。众所周知,它们包含许多特殊字符符号。这些可以被视为常量、引用标识符、其他标识符和关键字。作为关键字的标记由预定义的 SQL 命令和含义组成。标识符用于表示变量名称,如列、表等。

什么是 PostgreSQL 索引?

索引是一种特殊的 PostgreSQL 工具,用于改进从数据库中检索数据。数据库索引类似于书籍索引。索引提供对索引列中所有值的访问。PostgreSQL 索引允许数据库服务器定位和检索特定框架中包含的特定行。B-tree、hash、GiST、SP-GiST、GIN 和 BRIN 是其他示例。在 PostgreSQL 中,用户确实可以自由地创建自己的索引。然而,索引增加了数据处理操作的复杂性并且很少被使用。

PostgreSQL 的索引是内置的函数或方法,例如GIST 索引哈希表B-tree(二叉树),用户可以使用这些函数或方法以向后的方式扫描索引。用户还可以定义他们的 PostgreSQL 索引。

如何建立 PostgreSQL 数据库?

有两种方法可以生成数据库。CREATE DATABASE SQL 命令首先出现。

使用以下语法,我们可以构建数据库:

CREATE DATABASE ;

第二种方法使用 createdb 命令。

我们可以使用以下语法建立数据库:createdb [option…] [description]

根据使用场景,createDB 命令可能需要很多参数。

在PostgreSQL中定义删除数据库的过程。

我们可以使用以下命令删除数据库:

  • 我们可以使用 SQL 命令 - DROP DATABASE
  • 另外,我们可以使用“dropdb”,这是一个可行的命令行

如何在 PostgreSQL 中创建表?

您可以通过定义表的名称以及每列的名称和类型来创建新表:

对比“PostgreSQL”和“MongoDB”

PostgreSQL 是一个 SQL 数据库,其中数据存储在表的行和列中。它支持实体关系完整性和 JOINS 等概念。PostgreSQL 查询语言是 SQL。PostgreSQL 支持垂直缩放。这就需要使用大型服务器来存储数据。这导致需要停机时间来更新。如果您的应用程序需要关系数据库,或者您需要执行超出 SQL 功能的复杂查询,它的性能会更好。相比之下,MongoDB 是一个 NoSQL 数据库。不需要模式,因此可以存储非结构化数据。数据保存在 BSON 文档中,用户可以修改其结构。MongoDB 查询是用 JavaScript 编写的。由于其对水平扩展的适应性,可以根据需要添加额外的服务器,而停机时间很少甚至没有。

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复