postgresql 数据库 面试题整理

postgresql 数据库 面试题整理-LMLPHP

前言

本文整理一些在面试中,pg数据库可能会被问到的一下问题,希望对大家有用。

pg数据库的特点:

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

pg的优点

  1. 稳定的
  2. 可靠的
  3. 可扩展
  4. 简单易学
  5. 开源
  6. 专为高容量环境而设计
  7. 跨平台
  8. 更好的支持
  9. 灵活的

pg的核心优势

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

pg数据库的一些缺点

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

PostgreSQL支持的各种数据类型

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

pg的模式

模式是数据库的元素,包括表。它们包括数据类型、函数和运算符,以及其他命名对象类型。对象名称跨模式兼容;与数据库不同,模式划分更自由。这表明用户可以访问他们链接到的数据库中任何模式中的对象,直到他们被授予适当的权限。当多个用户必须访问单个数据库而不相互干扰时,模式非常有用。它有助于将数据库项目组织成逻辑类别,以便更好地管理。为了防止基于名称的冲突,第三方应用程序可以放置在不同的模式中。

pg的多版本并发控制

PostgreSQL 使用 MVCC(也称为多版本并发控制)来实现事务。它用于防止系统中意外的数据库锁定。每个查询数据库的事务都会看到不同版本的数据库。这可以防止显示不一致的数据并为每个数据库会话提供事务隔离。用于读取数据的 MVCC 锁不会干扰为写入数据而获取的锁。

pg多版本并发控制(MVCC)介绍

MVCC 或更广为人知的多版本并发控制用于避免不必要的数据库锁定。消除了用户的时间延迟,以便人们可以轻松地登录到他的数据库。所有的交易都保存完好作为记录。当其他人在内容上时会发生时间延迟。 PostgreSQL 中的多版本并发控制或 MVCC 用于避免数据库不必要的锁定。这消除了用户登录其数据库的时间延迟。当其他人访问内容时,会出现此功能或时间延迟。所有的交易都被保存为记录。

pg如何提供安全性

PostgreSQL 采用两层安全性。

  1. 网络级安全——利用 Unix 域套接字、TCP/IP 套接字和防火墙实现网络级安全。
  2. 传输级安全性- 传输级安全性采用 SSL/TLS 来确保安全的数据库通信
  3. 数据库级安全性——角色和权限、行级安全性 (RLS) 和审计都是数据库级安全性的特征。

PostgreSQL 中使用什么选项来使事务看到在事务的先前部分中受影响的行

QL标准主要针对三种现象定义了四个级别的事务隔离。并发事务之间必须防止这三种现象。不希望出现的现象是:

  1. 幻读:重新执行查询的事务,返回一组满足搜索条件的行,然后发现已经满足条件的行集由于另一个最近提交的事务而发生了变化。
  2. 不可重复读取:一个事务重新读取它之前读取的数据,然后发现该数据已经被另一个事务(自初始读取后提交)修改。
  3. 脏读:读取由并发未提交事务写入的数据时的事务是脏读。

pg跟其他数据库的区别

pg跟Oracle、MySQL之间的区别

  1. Oracle 、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

SQL 和 PostgreSQL 最显着的区别是什么

PostgreSQL 是一个复杂的 SQL 变体。无法更新 PostgreSQL 视图。PostgreSQL 不支持计算列。但是,它确实提供了功能索引。在 PostgreSQL 中,复制采用报告的形式。PostgreSQL 提供动态的操作。
PostgreSQL 服务器提供多个级别的加密和灵活性,以提高数据安全性,防止在不安全的网络场景中泄露。同时,SQL server 旨在提供一个安全的数据库平台。为此,它包含多种功能,可以加密数据、减少授权和保护数据免受不道德行为的影响。
PostgreSQL 是 SQL(结构化查询语言)的扩展或高级版本。您可以在这两者之间看到以下差异:

  1. 我们不能像在 SQL 中那样更新 PostgreSQL 数据库中的视图。
  2. 在 PostgreSQL 中,不需要像在 SQL 数据库中那样创建 DLL(动态链接库)来查看代码的活动。
  3. 此外,SQL 提供计算列,但 PostgreSQL 不提供。
  4. SQL 不支持动态操作,但 PostgreSQL 支持它们。

PostgreSQL和NoSQL之间的区别

表达“NoSQL”包含了作为非关系数据库一部分的广泛的实现集合。这包括诸如 TokyoCabinet 之类的微型嵌入式数据库、诸如 Hadoop 之类的大规模数据处理平台以及介于两者之间的一切。简而言之,几乎不可能评论 NoSQL 作为典型类所包含的范围。
在非关系数据库和关系数据库之间进行选择也很普遍,因为两者已经并存了四十多年。事实上,用户应该根据他们当前的应用需求来选择数据库的特性、社区支持和实现。此外,在大型项目中使用多种不同的数据库正变得越来越普遍,而不是趋势。此外,PostgreSQL 的用户也不例外

PostgreSQL和MongoDB之间的区别

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

07-19 08:45