postgresql 数据库 面试题整理

news2025/1/18 11:49:44

postgresql 数据库 面试题整理

在这里插入图片描述

文章目录

  • postgresql 数据库 面试题整理
  • 前言
    • pg数据库的特点:
    • pg的优点
    • pg的核心优势
    • pg数据库的一些缺点
    • PostgreSQL支持的各种数据类型
    • pg的模式
    • pg的多版本并发控制
    • pg多版本并发控制(MVCC)介绍
    • pg如何提供安全性
    • PostgreSQL 中使用什么选项来使事务看到在事务的先前部分中受影响的行
  • pg跟其他数据库的区别
    • pg跟Oracle、MySQL之间的区别
    • SQL 和 PostgreSQL 最显着的区别是什么
    • PostgreSQL和NoSQL之间的区别
    • PostgreSQL和MongoDB之间的区别

前言

本文整理一些在面试中,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 编写的。由于其对水平扩展的适应性,可以根据需要添加额外的服务器,而停机时间很少甚至没有。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/768932.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue3+vite配置 unplugin-vue-component 找不到 Vant 组件的问题

使用 vue3 vite Vant 搭建移动端项目,为了避免全量引入 vant 导致打包体积过大,又不想一个一个组件手动导入,所以就选择了 vant 官方推荐的方法,使用 unplugin-vue-components 插件自动引入组件,并按需引入组件的样式…

需求条目化与自动估算强强联合 助力软件估算自动化

痛点: 需求是产品的源头,是项目规模估算的基石。而传统的软件规模估算是由项目成员手工进行,对人员能力、经验、方法都有一定的要求,但是效果不好而且耗时费力,不能保持规模估算的一致性。 而导致这些问题的原因&#…

A plugin must either be a function or an object with an “install“ function

前言: 最近一个项目使用了vue3tsvite模型框架,在框架的基础之上进行的开发,开发过程中遇到一个问题,控制台有提示信息,如下图: 小小一行黄字,恶心人呀。。。 这话的意思大概是:插件…

中国人民大学与加拿大女王大学金融硕士--中外合作办学硕士领域的宝藏项目

大多数读研人都知道,从办学方式来看,中外合作办学硕士可以分为两种: 一是双学位教育项目,颁发的是外方高校硕士学位证书,同时还可以申请国内高校的硕士学位证书,同时教育部中留服还可以做学历学位认证。 二…

有哪些屏幕录制软件?这几种录屏工具了解一下

有哪些好用的屏幕录制软件呢?如果我们需要教别人如何使用某个软件或者如何完成某个任务,录屏也是非常有用的。可以通过录屏记录下整个过程,然后用于制作教程视频。也有小伙伴在打游戏时,遇到精彩操作有录屏的习惯,那么…

一文解惑mybatis中的#{}和${}

目录 基本概述 #{}的基本使用 ${}的基本使用 ${}使用情况 sql排序asc|desc 拼接表名 批量删除 模糊查询 基本概述 #{}:先编译sql语句,再给占位符传值,底层是PreparedStatement实现。可以防止sql注入,比较常用。 ${}&…

在Windows下安装Anaconda平台

Anaconda介绍 安装Python的方法有很多,其中利用Anaconda来安装,是最为安全和便捷的方法之一。在Python中安装类库,各个类库之间可能存在相互依赖、版本冲突等问题。为了解决这个问题,Python社区提供了方便的软件包管理工具&#…

css背景毛玻璃效果

一、结论:通过 css 的 backdrop-filter 属性设置滤镜函数 blur 一般会是有 背景色、透明度 的容器,如: /* 宽高等其他设置这里省略没写 */ background:rgba(3, 87, 255, 0.3); backdrop-filter: blur(10px);二、backdrop-filter 的其他用法…

ffmpeg学习之音频解码数据

音频数据经过解码后会被保存为,pcm数据格式。而对应的处理流程如下所示。 avcodec_find_encoder() /*** 查找具有匹配编解码器ID的已注册编码器.** param id AVCodecID of the requested encoder* return An encoder if one was found, NULL otherwise.*/ const A…

C# 移除链表元素

203 移除链表元素 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 示例 1: 输入:head [1,2,6,3,4,5,6], val 6 输出:[1,2,3,4,5] 示例 2&#x…

机器学习(14)--XGBoost

目录 一、概述 二、CART、GB、GBDT 1、CART 2、BT(Boosting Tree提升树) 3、GBDT(梯度提升树) 4、GBDT在sklearn中的损失函数 三、Sklearn中的GBDT 1、加载模块 2、划分数据集 3、建模 4、与随机森林和线性回归对比 5…

Redis可视化工具 - Another Redis Desktop Manager 安装与使用详细步骤

一、下载安装 Another Redis Desktop Manager AnotherRedisDesktopManager 发行版 - Gitee.com(gitee) 2. 安装 以管理员身份运行下载的安装包 选择是为所有用户还是当前用户安装,按需选择 选择安装位置,点击安装进行安装 安装…

uni-app实现emoj表情包发送(nvue版)

uni-app实现表情包发送&#xff0c; vue实现思路直接使用grideview网格布局加载emoj表情包即可实现&#xff0c;很简单&#xff0c;但是nvue稍微复杂&#xff0c;这里采用的方案是nvue提供的组件list 看效果 代码 <template><view style"margin-right: 10rpx;m…

跨项目实时通信——Broadcast Channel

一、背景 在日常开发中&#xff0c;肯定会遇到一些需要跨项目实时通信的场景。比如在浏览器中新开两个tab页面&#xff0c;A页面发送消息后&#xff0c;B页面实时监听并触发某些动作。类似的需求有很多&#xff0c;比如实时共享状态等等。那么跨项目/页面/浏览器tab的情况下如…

7.17~7.18

当端口冲突&#xff0c;可以查看&#xff1a;cmd然后输入以下命令 URL包括协议&#xff0c;域名&#xff0c;端口号&#xff0c;文件名&#xff1a; public class netProgramme {//定位一个节点public static void main(String[]args) throws UnknownHostException, Malformed…

flutter开发实战-svga播放svgaplayer_flutter直播礼物特效等效果使用

flutter开发实战-svga播放svgaplayer_flutter直播礼物特效等效果使用 最近开发过程中用到了SVGA进行播放动画&#xff0c;这里记录一下svgaplayer_flutter使用过程。svga可以做一些非常精美的动画&#xff0c;包括直播的刷礼物(火箭、跑车特效动画)等等。 效果图如下 一、SVG…

ACL2023论文-系列1

文章目录 Prompt——1.Generated Knowledge Prompting for Commonsense Reasoning核心论文贡献方法效果的影响因素方法实现 Contrastive learning——A Contrastive Framework for Learning Sentence Representations from Pairwise and Triple-wise Perspective in Angular Sp…

【深度学习笔记】梯度消失与梯度爆炸

本专栏是网易云课堂人工智能课程《神经网络与深度学习》的学习笔记&#xff0c;视频由网易云课堂与 deeplearning.ai 联合出品&#xff0c;主讲人是吴恩达 Andrew Ng 教授。感兴趣的网友可以观看网易云课堂的视频进行深入学习&#xff0c;视频的链接如下&#xff1a; 神经网络和…

labview 子画面插入面板

1.前言 在前面一篇文章中描述了弹框式显示子画面&#xff0c; labview 弹窗(子vi)_weixin_39926429的博客-CSDN博客 本文介绍插入式显示子画面。 本文的主题在以前的文章中介绍过&#xff0c; labview 插入子面板_labview插入子面板_weixin_39926429的博客-CSDN博客 借用…

JVM学习笔记总结

目录 JVM内存区域划分 1、堆&#xff08;线程共享&#xff09; 2、方法区&#xff08;线程共享&#xff09; 3、栈&#xff08;线程私有&#xff09; 4、程序计数器&#xff08;线程私有&#xff09; JVM类加载机制 加载 验证 准备 解析 初始化 双亲委派模型 JVM垃…