数据库面试题(6)PostgreSQL基础

数据库面试题(6)PostgreSQL基础

1. PostgreSQL 有什么特点?

  • 语言:PostgreSQL 支持四种标准的过程语言,包括 PL/pgSQL、PL/Tcl、PL/Perl 和 PL/Python。
  • 索引:PostgreSQL 索引支持 B+ 树、哈希、广义搜索树和广义倒排索引。个人还可以设计自己的个性化索引。
  • 视图:PostgreSQL 支持生成虚拟表的视图。
  • 规则:PostgreSQL 支持规则,允许重写查询的层次结构。
  • 继承:在 PostgreSQL 中,可以将表配置为通过继承从“父”表继承属性。

2. PostgreSQL 的使用场景有哪些?

  • 复杂查询和事务处理:PostgreSQL在处理复杂查询和大量事务时表现出色,适用于需要高度数据完整性和一致性的应用程序,如金融系统或企业级应用。
  • 地理信息系统(GIS):PostGIS是一个用于地理空间对象的开源空间数据库扩展,使得PostgreSQL成为处理地理信息的首选。
  • 大数据和数据仓库:PostgreSQL的分区表、并行查询和流复制等功能,使其成为处理大数据和数据仓库方面的强力工具。

3. PostgreSQL 的令牌是什么?

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

4. PostgreSQL 索引是什么?

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

5. 如何创建 PostgreSQL 数据库?

  • 使用CREATE DATABASE SQL语句。例如,创建一个名为TEST的数据库,可以使用命令CREATE DATABASE TEST;
  • 使用createdb命令。打开命令行,定位到PostgreSQL的安装目录,然后执行命令createdb -U postgres TEST;,其中-U postgres指定使用超级用户postgres来创建数据库,TEST是数据库的名称。
  • 在pgAdmin中,选择“创建”->“数据库”,输入数据库的名称,并选择字符编码,然后点击“保存”等待系统自动创建。

6. 如何在 PostgreSQL 中创建表?

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

CREATE TABLE [IF NOT EXISTS] table_name (
column1 datatype(length) column_contraint,
column2 datatype(length) column_contraint,
columnn datatype(length) column_contraint,
table_constraints
);

7. PostgreSQL 和 MongoDB 有什么区别?

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

**8.什么是PostgreSQL的多版本并发控制?

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

9. pgAdmin 到底是什么?

pgAdmin 是一个基于 Web 的 GUI 实用程序,用于与 Postgres 数据库会话进行交互。它适用于本地和远程服务器。它的最新版本 pgAdmin4 是在 PostgreSQL 许可证下分发的。创建 pgAdmin4 需要完全重建原始 pgAdmin 程序。这个版本是由 Javascript/jQuery 和 Python 混合而成的。pgAdmin 现在可以用作桌面运行时或 Web 应用程序服务器,具体取决于您的需要。

10、PostgreSQL中如何删除数据库?

使用 DROP DATABASE 命令:

DROP DATABASE database_name;

11. PostgreSQL中模式由什么组成?

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

12. SQL 和 PostgreSQL 最显著的区别是什么?

PostgreSQL 是一个复杂的 SQL 变体,无法更新 PostgreSQL 视图。PostgreSQL 不支持计算列。但是,它确实提供了功能索引。在 PostgreSQL 中,复制采用报告的形式。PostgreSQL 提供动态的操作。

PostgreSQL 服务器提供多个级别的加密和灵活性,以提高数据安全性,防止在不安全的网络场景中泄露。同时,SQL server 旨在提供一个安全的数据库平台。为此,它包含多种功能,可以加密数据、减少授权和保护数据免受不道德行为的影响。

13. 解释一下预写日志的流程?

预写日志 (WAL) 对于 PostgresSQL 的持久性和数据一致性至关重要。所有修改最初都被捕获到这个仅附加的日志中,然后被捕获到磁盘上的数据文件中。使用预写日志记录,您可以保护您的数据免受损坏。由于这种方法,所有操作和更改的完整记录得以保存。众所周知,在实施或更新数据库更改之前备份它们可以提高某些数据库的稳定性。备份日志保存在这里,以防数据库出现故障。当 PostgresSQL 强制执行写操作时,它会创建 WAL(例如,INSERT、UPDATE 等)。在 WAL 创建超出磁盘外 WAL 归档的能力或高数据库负载降低归档器性能的情况下,WAL 容量是有限的。

14. 非聚集索引的定义是什么?

PostgreSQL 中的非聚集索引是一种简单的索引,用于快速检索数据,不保证唯一性。它包括对保存数据的其他地方的引用。这也称为二级索引。您可以根据需要在给定表上拥有该类别的多个索引。非聚集索引类似于文档的“目录”。我们先检查页码,然后再检查页码以查看整个内容。它保留一个指向相应堆数据的指针,以根据索引获取整个数据。这与知道页码然后转到该页面以检索页面的实际内容完全相同。

15. PostgreSQL如何实现安全性?

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

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注