15道 PostgreSQL 常見面試題(附答案)
PostgreSQL簡介
PostgreSQL是對象關(guān)系數(shù)據(jù)庫管理系統(tǒng)最常用的語言之一。它主要用于大型 Web 應(yīng)用程序。它是一個面向?qū)ο蟮年P(guān)系型開源數(shù)據(jù)庫系統(tǒng)。它非常強(qiáng)大,允許用戶輕松擴(kuò)展任何系統(tǒng)。它擴(kuò)展了 SQL 語言并采用多種功能來安全地擴(kuò)展和存儲復(fù)雜的數(shù)據(jù)工作負(fù)載。
PostgreSQL 的特點(diǎn)
語言支持:PostgreSQL 支持四種標(biāo)準(zhǔn)的過程語言,包括 PL/pgSQL、PL/Tcl、PL/Perl 和 PL/Python。
索引:PostgreSQL 索引支持 B+ 樹、哈希、廣義搜索樹和廣義倒排索引。個人還可以設(shè)計自己的個性化索引。
視圖:PostgreSQL 支持生成虛擬表的視圖。
規(guī)則:PostgreSQL 支持規(guī)則,允許重寫查詢的層次結(jié)構(gòu)。
繼承:在 PostgreSQL 中,可以將表配置為通過繼承從“父”表繼承屬性。
用戶定義的函數(shù):它有助于構(gòu)建幾乎所有新的數(shù)據(jù)庫對象,包括轉(zhuǎn)換、轉(zhuǎn)換、數(shù)據(jù)類型、域、函數(shù)、聚合函數(shù)和索引,包括自定義種類運(yùn)算符的自定義索引。
PostgreSQL 面試問題
1、PostgreSQL的核心優(yōu)勢是什么?
以下是 PostgreSQL 的一些特性:
關(guān)系對象數(shù)據(jù)庫。
SQL 支持和可擴(kuò)展性
API 和數(shù)據(jù)庫驗證的靈活性。
MVCC 和過程語言,
WAL 和客戶端-服務(wù)器。
2.列出PostgreSQL支持的各種數(shù)據(jù)類型。
以下是添加到 PostgreSQL 的一些新數(shù)據(jù)類型:
UUID
數(shù)值類型
布爾值
字符類型
時間類型
幾何圖元
任意精度數(shù)值
XML
數(shù)組等
3. PostgreSQL 的令牌是什么?
在 PostgreSQL 中,令牌充當(dāng)源代碼的構(gòu)建元素。它們由各種特殊字符符號組成。標(biāo)記是主要由預(yù)定義的 SQL 命令和含義組成的關(guān)鍵字。命令包含由分號 (';') 分隔的標(biāo)記序列。這些可能包括常量、帶引號的標(biāo)識符、附加標(biāo)識符、關(guān)鍵字或常量。通常,空格分隔標(biāo)記。
4. 什么是 PostgreSQL 索引?
索引是一種特殊的 PostgreSQL 工具,用于改進(jìn)從數(shù)據(jù)庫中檢索數(shù)據(jù)。數(shù)據(jù)庫索引類似于書籍索引。索引提供對索引列中所有值的訪問。PostgreSQL 索引允許數(shù)據(jù)庫服務(wù)器定位和檢索特定框架中包含的特定行。B-tree、hash、GiST、SP-GiST、GIN 和 BRIN 是其他示例。在 PostgreSQL 中,用戶確實可以自由地創(chuàng)建自己的索引。然而,索引增加了數(shù)據(jù)處理操作的復(fù)雜性并且很少被使用。
5. 如何建立 PostgreSQL 數(shù)據(jù)庫?
有兩種方法可以生成數(shù)據(jù)庫。CREATE DATABASE SQL 命令首先出現(xiàn)。
使用以下語法,我們可以構(gòu)建數(shù)據(jù)庫:-CREATE DATABASE ;
第二種方法使用 createdb 命令。
我們可以使用以下語法建立數(shù)據(jù)庫:- createdb [option…] [description]。
根據(jù)使用場景,createDB 命令可能需要很多參數(shù)。
6. 如何在 PostgreSQL 中創(chuàng)建表?
您可以通過定義表的名稱以及每列的名稱和類型來創(chuàng)建新表:
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 數(shù)據(jù)庫,其中數(shù)據(jù)存儲在表的行和列中。它支持實體關(guān)系完整性和 JOINS 等概念。PostgreSQL 查詢語言是 SQL。PostgreSQL 支持垂直縮放。這就需要使用大型服務(wù)器來存儲數(shù)據(jù)。這導(dǎo)致需要停機(jī)時間來更新。如果您的應(yīng)用程序需要關(guān)系數(shù)據(jù)庫,或者您需要執(zhí)行超出 SQL 功能的復(fù)雜查詢,它的性能會更好。相比之下,MongoDB 是一個 NoSQL 數(shù)據(jù)庫。不需要模式,因此可以存儲非結(jié)構(gòu)化數(shù)據(jù)。數(shù)據(jù)保存在 BSON 文檔中,用戶可以修改其結(jié)構(gòu)。MongoDB 查詢是用 javaScript 編寫的。由于其對水平擴(kuò)展的適應(yīng)性,可以根據(jù)需要添加額外的服務(wù)器,而停機(jī)時間很少甚至沒有。
8.什么是PostgreSQL的多版本并發(fā)控制?
PostgreSQL 使用 MVCC(也稱為多版本并發(fā)控制)來實現(xiàn)事務(wù)。它用于防止系統(tǒng)中意外的數(shù)據(jù)庫鎖定。每個查詢數(shù)據(jù)庫的事務(wù)都會看到不同版本的數(shù)據(jù)庫。這可以防止顯示不一致的數(shù)據(jù)并為每個數(shù)據(jù)庫會話提供事務(wù)隔離。用于讀取數(shù)據(jù)的 MVCC 鎖不會干擾為寫入數(shù)據(jù)而獲取的鎖。
9. pgAdmin 到底是什么?
pgAdmin 是一個基于 Web 的 GUI 實用程序,用于與 Postgres 數(shù)據(jù)庫會話進(jìn)行交互。它適用于本地和遠(yuǎn)程服務(wù)器。它的最新版本 pgAdmin4 是在 PostgreSQL 許可證下分發(fā)的。創(chuàng)建 pgAdmin4 需要完全重建原始 pgAdmin 程序。這個版本是由 JavaScript/jQuery 和 Python 混合而成的。pgAdmin 現(xiàn)在可以用作桌面運(yùn)行時或 Web 應(yīng)用程序服務(wù)器,具體取決于您的需要。
10、PostgreSQL中的數(shù)據(jù)庫是如何刪除的?
使用該語法,可以在 PostgreSQL.DROP DATABASE [IF EXISTS] 中刪除數(shù)據(jù)庫;
請注意,只能丟棄不活動的數(shù)據(jù)庫。
11. 模式由什么組成?
模式是數(shù)據(jù)庫的元素,包括表。它們包括數(shù)據(jù)類型、函數(shù)和運(yùn)算符,以及其他命名對象類型。對象名稱跨模式兼容;與數(shù)據(jù)庫不同,模式劃分更自由。這表明用戶可以訪問他們鏈接到的數(shù)據(jù)庫中任何模式中的對象,直到他們被授予適當(dāng)?shù)臋?quán)限。當(dāng)多個用戶必須訪問單個數(shù)據(jù)庫而不相互干擾時,模式非常有用。它有助于將數(shù)據(jù)庫項目組織成邏輯類別,以便更好地管理。為了防止基于名稱的沖突,第三方應(yīng)用程序可以放置在不同的模式中。
12. SQL 和 PostgreSQL 最顯著的區(qū)別是什么?
PostgreSQL 是一個復(fù)雜的 SQL 變體。無法更新 PostgreSQL 視圖。PostgreSQL 不支持計算列。但是,它確實提供了功能索引。在 PostgreSQL 中,復(fù)制采用報告的形式。PostgreSQL 提供動態(tài)的操作。
PostgreSQL 服務(wù)器提供多個級別的加密和靈活性,以提高數(shù)據(jù)安全性,防止在不安全的網(wǎng)絡(luò)場景中泄露。同時,SQL server 旨在提供一個安全的數(shù)據(jù)庫平臺。為此,它包含多種功能,可以加密數(shù)據(jù)、減少授權(quán)和保護(hù)數(shù)據(jù)免受不道德行為的影響。
13. 詳細(xì)解釋預(yù)寫日志。
預(yù)寫日志 (WAL) 對于 Postgres 的持久性和數(shù)據(jù)一致性至關(guān)重要。所有修改最初都被捕獲到這個僅附加的日志中,然后被捕獲到磁盤上的數(shù)據(jù)文件中。使用預(yù)寫日志記錄,您可以保護(hù)您的數(shù)據(jù)免受損壞。由于這種方法,所有操作和更改的完整記錄得以保存。眾所周知,在實施或更新數(shù)據(jù)庫更改之前備份它們可以提高某些數(shù)據(jù)庫的穩(wěn)定性。備份日志保存在這里,以防數(shù)據(jù)庫出現(xiàn)故障。當(dāng) Postgres 強(qiáng)制執(zhí)行寫操作時,它會創(chuàng)建 WAL(例如,INSERT、UPDATE 等)。在 WAL 創(chuàng)建超出磁盤外 WAL 歸檔的能力或高數(shù)據(jù)庫負(fù)載降低歸檔器性能的情況下,WAL 容量是有限的。
14. 非聚集索引的定義是什么?
PostgreSQL 中的非聚集索引是一種簡單的索引,用于快速檢索數(shù)據(jù),不保證唯一性。它包括對保存數(shù)據(jù)的其他地方的引用。這也稱為二級索引。您可以根據(jù)需要在給定表上擁有該類別的多個索引。非聚集索引類似于文檔的“目錄”。我們先檢查頁碼,然后再檢查頁碼以查看整個內(nèi)容。它保留一個指向相應(yīng)堆數(shù)據(jù)的指針,以根據(jù)索引獲取整個數(shù)據(jù)。這與知道頁碼然后轉(zhuǎn)到該頁面以檢索頁面的實際內(nèi)容完全相同。
15. PostgreSQL如何提供安全性?
PostgreSQL 采用兩層安全性。
網(wǎng)絡(luò)級安全——利用 Unix 域套接字、TCP/IP 套接字和防火墻實現(xiàn)網(wǎng)絡(luò)級安全。
傳輸級安全性- 傳輸級安全性采用 SSL/TLS 來確保安全的數(shù)據(jù)庫通信
數(shù)據(jù)庫級安全性——角色和權(quán)限、行級安全性 (RLS) 和審計都是數(shù)據(jù)庫級安全性的特征。
結(jié)論
在本文中,我們看到了重要的 PostgreSQL 問題。我們對不同的 PostgreSQL 術(shù)語有了很好的理解。以下是上述文章的一些主要內(nèi)容:
1、我們已經(jīng)看到了PostgreSQL的token以及使用PostgreSQL的好處。
2.我們學(xué)習(xí)了如何建立一個PostgreSQL數(shù)據(jù)庫。
3. 我們了解了如何在 PostgreSQL 中創(chuàng)建表,
版權(quán)聲明:
本站所有文章和圖片均來自用戶分享和網(wǎng)絡(luò)收集,文章和圖片版權(quán)歸原作者及原出處所有,僅供學(xué)習(xí)與參考,請勿用于商業(yè)用途,如果損害了您的權(quán)利,請聯(lián)系網(wǎng)站客服處理。