PostgreSQL DBA 面试宝典 面试题 52道(含10大常见题)
PostgreSQL 是众多可用数据库中最顶级、最强大和开源的数据库之一。它扩展了 SQL 语言,主要用作许多移动、Web 和分析应用程序的主要数据仓库。对 PostgreSQL 认证专家的需求增长良好。因此,在这里我们上传了一些常见的PostgreSQL 面试问题和答案,以帮助您破解面试。
通过这些 PostgreSQL 面试问题,您将了解面试的技术性。此外,您将能够轻松获得这份工作。所以,让我们从一些有趣的 PostgreSQL 面试问题开始。
最常见的 PostgreSQL 面试题52道
- 什么是 PostgreSQL?
- pgadmin 在 PostgreSQL 中是如何使用的?
- 什么是 Ctid?
- 什么是并行查询?
- 我们可以创建一个共享存储 PostgreSQL 服务器集群吗?
- PL/Python 是什么意思?
- 我们可以在 Schema 中找到什么?
- 定义集群索引的使用
- 区分 SQL 和 PostgreSQL?
- 解释PostgreSQL数据库中原子性属性的作用
1) 什么是 PostgreSQL?
回答: PostgreSQL 是一个流行的对象关系数据库管理系统。它是一个用于创建高级应用程序的开源平台。在运行 PostgreSQL 时,熟悉 Linux 和 UNIX 可能是一个额外的好处。
2) 列出一些 PostgreSQL 特性。
回答: PostgreSQL 提供了许多有用的特性。其中一些如下:
- 数据完整性保护帮助用户创建容错环境。
- 轻松兼容重要平台、中间件和语言。
- 它支持多版本并发控制。
- 它支持客户-服务器网络架构。
- 基于日志和基于触发器的复制 SSL。
- 高可用和备用服务器
3)列出PostgreSQL中的各种数据类型。
回答: PostgreSQL 支持多种数据类型。他们之中有一些是:
- UUID
- 数值类型
- 时间类型
- 几何图元
- 任意精度数值
- XML
- 布尔值
- 字符类型
- 大批
- JSON
4)列出PostgreSQL的一些优点和缺点。
回答: PostgreSQL 的优点:
- 可靠的
- 灵活的
- 稳定的
- 简单易学
- 可扩展
- 跨平台
- 开源
- 更好的支持
- 专为高容量环境而设计
PostgreSQL的缺点:
- 它在性能方面比 MySQL 慢。
- 与 MySQL 相比,它不支持许多开源应用程序。
- 由于更加注重兼容性,为提高速度而进行的修改需要额外的工作。
5) 什么是字符串常量?
回答: 字符串常量由单引号 (‘) 绑定的一系列字符组成。它在插入字符或将字符传递给数据库对象时使用。PostgreSQL 允许使用单引号,但由 C 样式的反斜杠集成。它用于数据解析。
示例: “这是字符串常量的示例”。
6) 什么是多版本控制?
回答: PostgreSQL 中的多版本并发控制用于防止不必要的数据库锁定。它消除了用户登录其数据库的延迟时间。它发生在其他人访问内容时。所有这些交易都被捕获。
7) 什么是指数?
回答: PostgreSQL 提供了多种索引类型:Hash、B-tree、GiST、SP-GiST、BRIN 和 GIN。每种类型的索引将使用最适合不同类型查询的不同算法。CREATE INDEX 将默认创建匹配最流行情况的 B-tree 索引。用户也可以设置他们的 PostgreSQL 索引。
8) 什么是代币?
回答:
9) 什么是表分区?
回答: 在 PostgreSQL 中,表分区是一个将大表划分为称为分区的小块的过程。PostgreSQL 通过表继承支持范围和列表分区。用户必须像主表中的子表一样创建每个分区。
10) 我们如何在 PostgreSQL 上启动和停止数据库服务器?我们如何检查 PostgreSQL 是否启动并运行?
回答: 在访问数据库之前,您应该能够启动数据库服务器。数据库服务器程序称为 Postgres。Postgres 程序需要知道在哪里寻找它应该使用的数据。这是使用 -D 选项完成的。所以启动服务器最简单的方法是:
- usr/local/etc/rc.d/010.pgsql.sh 启动
- /usr/local/etc/rc.d/postgresql 启动
我们使用以下方式停止服务器:
- /usr/local/etc/rc.d/010.pgsql.sh 停止
- /usr/local/etc/rc.d/postgresql 停止
我们可以通过以下方式验证 postgresql 服务器是否已启动并正在运行:
- /usr/local/etc/rc.d/010.pgsql.sh 状态
- /usr/local/etc/rc.d/postgresql 状态?
11) pgadmin 在 PostgreSQL 中是如何使用的?
回答: Pgadmin 是一个众所周知的功能,用于形成前端图形管理工具。此功能可作为具有艺术许可的免费软件提供。具有艺术许可的最新数据库管理工具是 Pgadmin iii。它用于检索信息、开发、测试和持续维护数据库。
12) 比较 PostgreSQL 和 MySQL。
回答: MySQL 是“用户友好的、Web 开发人员”数据库,而 PostgreSQL 是“功能丰富且符合标准”的数据库。PostgreSQL 是免费许可的,并且是其社区的一部分;MySQL 是 GPL 许可的,属于 Oracle。除此之外,数据库的每个用户都应该做出自己的评估;免费软件便于比较。
13) 我们如何更改 PostgreSQL 中的列数据类型?
回答: 使用 ALTER TABLE 命令,我们可以更改列类型。
例如:
ALTER TABLE name_of_the_table
ALTER COLUMN name_of_the_column [SET DATA] TYPE new_data_type;
14) Postgresql 中的统计信息如何更新?
回答: 在 PostgreSQL 中,为了更新你的统计数据,一个被称为显式“vacuum”调用的特殊函数已经完成。这样做的方法是创建一个 Vacuum,其中分析选项用于更新 Postgresql 中的统计信息,如下所示:
VACUUM ANALYZE;
15) PostgreSQL 中的 enable-debug 命令是什么?
回答: enable-debug 命令允许您编译所有应用程序和库。执行此过程通常会阻止系统,但也会增加二进制文件的大小。出现的调试符号通常可以帮助开发人员识别可能与他们的脚本相关的错误和其他问题。
16) PostgreSQL 中可以使用哪个选项来查看事务早期部分中受影响的行?
回答: SQL 标准由四个级别的隔离事务定义,主要涉及三种现象。并发事务之间应该避免这三种现象。不良现象包括:
不可重复读取:一个事务将读取已经读取的数据,然后发现该数据已被另一个事务更改。
幻读:一个事务将通过返回一组满足搜索条件的行并找到满足由于另一个最近启动的事务而更改的要求的行来再次执行查询。
脏读:读取由同时未提交的事务写入的数据的事务称为脏读。
17)简述Postgresql的功能。
回答: 函数是在服务器上到处运行代码的重要组成部分。用于编程函数的一些语言是 PL/pgSQL,一种原生 PostgreSQL 语言,以及其他脚本语言,如 Perl、PHP、Python 等。称为 PL/R 的统计语言也可用于使函数更高效。
18) 通过 PostgreSQL 对关系数据模型有哪些不同的改进?
Ans: 通过 PostgreSQL 对简单的关系数据模型进行了许多改进。它们支持包含各种值、函数、继承和可扩展性的数组。行话的不同之处在于其面向对象的性质,其中表被称为类。
19) 你在 Postgresql 中使用什么样的数据库管理工具?
回答: 我们有多种数据管理工具。它们是 Pgadmin、Psql、Phppgadmin。Phppgadmin 是其中最受欢迎的。这些工具中的大多数都是基于 Web 的界面和前端管理工具。
20) 什么是 Ctid?
回答: CTIDs 是一个存在于所有 PostgreSQL 表中的字段,并且已知它可以根据它们的块以及特定表中的偏移位置来识别特定的物理行。它们用于指定物理行的索引条目。它对于表中的每条记录都是唯一的,并且很容易指示元组的位置。逻辑行的 CTID 在更新时会发生变化,因此 CTID 不会用作长期行标识符。但是,识别事务中预期不会发生并发更新的行可能会有所帮助。
21) 解释预写日志。
回答: 预写日志记录是确保数据完整性的标准方法。它是用于在事务日志中写入操作和修改的正确规则或协议。此功能通过在对数据库进行任何修改或更新之前保存修改来增强数据库的可靠性。如果数据库崩溃,它会提供数据库日志。它允许工作从中断的那一刻开始。
22) 什么时候应该避免使用 PostgreSQL?
回答: 以速度为代价,PostgreSQL 被构建为可扩展和兼容的。如果您的项目需要尽可能快的读取操作,PostgreSQL 可能不适合您。
由于其广泛的功能和对 SQL 标准的高度遵守,Postgres 可能对于简单的数据库配置来说太过分了。MySQL 是我们需要速度的重读操作的实际选择。
虽然 PostgreSQL 为复制提供了可靠的支持,但它始终是一个相对较新的功能,并且某些配置(如主架构)只能通过扩展实现。复制是 MySQL 的一项高级功能。大多数用户认为复制 MySQL 更容易实现,尤其是对于那些没有管理数据库和系统所需经验的用户。
23) PostgreSQL 中的全文搜索是什么意思?
回答: 这是指在全文数据库中搜索存储在计算机上的单个或一组文档的技术或方法。它可以简单地与根据元数据或数据库中描述的原始文本的部分进行的搜索区分开来。虽然 PostgreSQL 不如 SOLR 和 Elasticsearch 先进,但这两个工具专门用于全文搜索。而在 PostgreSQL 中,全文搜索只是一个特性,而且相当不错。
24) 什么是 BRIN 指数?
回答: 一旦安装了 BRIN 索引,PostgreSQL 将能够通过读取保存的每 8k 页数据的选定列来选择最小值和最大值。之后,PostgreSQL 会将页码、所选列的最大值和最小值存储在 BRIN 索引中。
25)什么是并行查询?
回答: 并行查询是 PostgreSQL 的一项功能,它可以设计查询计划,利用多个 CPU 更快地响应查询。
26) PostgreSQL 中的 GiST 索引是什么?
回答: giST 是一种可扩展的数据结构,它使用户能够开发所有数据类型的索引。它还负责对此数据的所有查找。giST 能够通过将 API 插入 Postgres 索引系统来做到这一点。
27) PostgreSQL 中原子性属性的作用是什么?
Ans: Atomicity 属性保证了一个工作单元内所有操作的成功。
28) Postgresql 是否在云端执行?
回答: 是的。与其他开源数据库一样,PostgreSQL 可以在虚拟容器中轻松执行,并且非常便携。GoGrid、Heroku 和 Joyent 等许多公司在云托管环境中都支持 PostgreSQL。
29) 我们如何通过多个数据库执行查询?
回答:除了目前的数据库之外,没有更好的方法来查询数据库。由于 PostgreSQL 加载特定于数据库的系统目录,我们不知道跨数据库查询应该如何表现。contrib/dblink 通过函数调用启用跨数据库查询。当然,客户也可以建立与各种数据库的并发连接并合并客户端结果。
30)我们可以创建一个共享存储PostgreSQL服务器集群吗?
回答:PostgreSQL 不支持通过在 SCSI、SAN、iSCSI 卷或其他共享媒体上使用共享存储来进行集群。不支持这种“RAC 风格”的集群。目前只支持复制集群。
31. 描述 PostgreSQL 的各种优点。
回答:PostgreSQL 数据库的主要优点包括开源数据库管理系统、多样化的索引技术、全文搜索的灵活性、社区支持、不同类型的复制方法、高度可扩展的功能等等。
32. PostgreSQL中的分区表是什么意思?
回答:在 PostgreSQL 中,分区表是一个逻辑结构和一个特殊的表,它被分成多个部分。它允许将大型表拆分为较小的表,称为分区。
33. 在 PostgreSQL 服务器中定义 pgAdmin 的用途。
回答:在 PostgreSQL 中,pgAdmin 是一个数据管理工具,有助于管理和观察许多 PostgreSQL 和 EDB 高级服务器数据库服务器。它对于恢复、测试、管理和开发数据库很有用。
34. 命名在 PostgreSQL 中将大表划分为较小大小的过程。
回答:该过程称为“表分区”。
35. 如何避免PostgreSQL中不必要的数据库锁定?
回答:为了避免数据库不必要或不必要的锁定,我们可以使用 MVCC(多版本并发控制)。
36. PL/Python是什么意思?
回答:它是 PostgreSQL 提供支持的一种过程语言,它允许我们用 Python 语言编写 PostgreSQL 函数。
37.在PostgreSQL中定义删除数据库的过程。
回答:我们可以使用以下命令删除数据库:-
- 我们可以使用 SQL 命令 – DROP DATABASE
- 另外,我们可以使用“dropdb”,这是一个可行的命令行
38. 我们可以在 Schema 中找到什么?
回答:PostgreSQL 中的模式包括以下视图、索引、运算符、序列、数据类型、表和函数。
39. 定义 PostgreSQL 提供的构建新数据库的方法。
回答:为了建立一个新的数据库,PostgreSQL 提供了以下方法:-
- 使用 SQL 命令 – CREATE DATABASE 创建数据库
- 此外,我们可以使用“created”,它是一个可执行的命令行
40. 命名 PostgreSQL 中不同类型的运算符。
回答:算术运算符、逻辑运算符、比较运算符、位运算符
41、数据库回调函数的别称是什么?他们在 PostgreSQL 中的目的是什么?
回答:PostgreSQL 触发器也称为数据库回调函数。当定义的数据库事件发生时,PostgreSQL 触发器会自动执行或引用。
42. 我们在 PostgreSQL 中使用索引是为了什么?
回答:为了加快 PostgreSQL 中的数据恢复,搜索引擎使用索引。
43. 定义集群索引的使用。
回答:集群索引根据它们的键值对表数据行进行分类。这里,数据页中数据行的顺序与索引中数据行的顺序通信。
44. 定义在创建表时在列中指定数据类型的好处。
回答:在列中指定数据类型的优点包括一致性、简洁性、验证/确认和性能。
45. 解释如何在 PostgreSQL 中更新统计数据。
回答:我们必须使用特殊功能“vacuum”来更新 PostgreSQL 数据库中的统计信息。
46. 定义从现有表中删除完整数据的方法。
回答:我们可以通过 PostgreSQL TRUNCATE TABLE 命令从当前表中完全删除数据。
47. 命名 PostgreSQL 中事务的各种属性及其首字母缩写词。
回答:PostgreSQL 中的事务属性包括原子性、一致性、隔离性和持久性,它们统称为 ACID 属性。
48. CTIDs 字段有什么用?
回答:CTIDs 字段有助于根据其块定位表中的某些物理行,并平衡该表中的位置。
49. 命名在 PostgreSQL 中控制事务的命令。
回答:PostgreSQL 中的事务控制命令包括:BEGIN、COMMIT、TRANSACTION 和 ROLLBACK。
50.区分SQL和PostgreSQL?
回答:PostgreSQL 是 SQL(结构化查询语言)的扩展或高级版本。您可以在这两者之间看到以下差异:-
- 我们不能像在 SQL 中那样更新 PostgreSQL 数据库中的视图。
- 在 PostgreSQL 中,不需要像在 SQL 数据库中那样创建 DLL(动态链接库)来查看代码的活动。
- 此外,SQL 提供计算列,但 PostgreSQL 不提供。
- SQL 不支持动态操作,但 PostgreSQL 支持它们。
51.定义Postgre中的安全措施
回答:PostgreSQL 数据库使用 SSL 连接来帮助加密客户端或服务器报告以确保安全服务。
52.解释PostgreSQL数据库中原子性属性的作用。
回答:PostgreSQL 中的这个属性确保一个工作单元中的所有操作都成功完成。