PostgreSQL15——管理表空間

管理表空間

  • 一、基本概念
  • 二、創建表空間
  • 三、修改表空間
  • 四、刪除表空間

一、基本概念

在 PostgreSQL 中,它是通過表空間(Tablespaces)來實現邏輯對象(表、索引等)與物理文件之間的映射。創建數據庫或者數據表(包括索引)的時候,可以為其指定一個表空間
(tablespace)。表空間決定了這些對象在文件系統中的存儲路徑。

在PostgreSQL 中,表空間(tablespace)表示數據文件的存放目錄,這些數據文件代表了數據庫的對象,例如表或索引。當我們訪問表時,系統通過它所在的表空間定位到對應數據文件所在的位置。

在這里插入圖片描述

表空間的引入為 PostgreSQL 的管理帶來了以下好處:

  • 如果數據庫集群所在的初始磁盤分區或磁盤卷的空間不足,又無法進行擴展,可以在其他分區上創建一個新的表空間以供使用。
  • 管理員可以根據數據庫對象的使用統計優化系統的性能。例如,可以將訪問頻繁的索引存放到一個快速且可靠的磁盤上,比如昂貴的固態硬盤。與此同時,將很少使用或者對性能要求不高的歸檔數據表存儲到廉價的低速磁盤上。

PostgreSQL 在集群初始化時將所有的數據文件和配置文件存儲到它的數據目錄中,通常是環境變量PGDATA 的值。默認創建了兩個表空間:

  • pg_defaulttemplate1template0 默認的表空間,也是創建其他數據庫時的默認表空間;對應的目錄為PGDATA/base
  • pg_global,用于存儲一些集群級別的共享系統表(system catalogs),例如 pg_databasepg_control;對應的目錄為PGDATA/global

初始安裝后,使用 psql 查詢默認創建的表空間:
在這里插入圖片描述

同時也可以通過操作系統命令查看相應的目錄:
在這里插入圖片描述

其中的 base 和 global 目錄分別對應表空間 pg_default 和 pg_global。

二、創建表空間

創建新的表空間使用CREATE TABLESPACE 語句:

CREATE TABLESPACE tablespace_name
OWNER user_name
LOCATION 'directory';

表空間的名稱不能以 pg_開頭,它們是系統表空間的保留名稱;LOCATION 參數必須指定絕對路徑名,指定的目錄必須是一個已經存在的空目錄,PostgreSQL 操作系統用戶(postgres)必須是該目錄的擁有者,以便能夠進行文件的讀寫。

接下來,我們使用目錄/var/lib/pgsql/創建一個新的表空間 app_tbs。先創建所需的目錄:
在這里插入圖片描述

注意目錄的所有者和權限。然后使用具有 CREATEDB 權限的用戶創建表空間,此處我們使用 postgres 執行以下操作:

create tablespace app_tbs location '/var/lib/pgsql/app_tbs';

在這里插入圖片描述

我們查看一下操作系統中的變化:

在這里插入圖片描述

在表空間對應的目錄中,創建一個特定版本的子目錄。與此同時,在數據目錄下的 pg_tblspc 子目錄中,創建了一個指向表空間目錄的符號鏈接,名稱為表空間的 OID(16743):

在這里插入圖片描述

默認情況下,執行 CREATE TABLESPACE 語句的用戶為該表空間的擁有者,也可以使用OWNER 選項指定擁有者。

對于普通用戶,需要授予表空間上的對象創建權限才能使用該表空間。我們為用戶 admin01 授予表空間 app_tbs 上的使用權限:
在這里插入圖片描述

使用admin01 用戶連接到數據庫 testdb,然后在表空間app_tbs 中創建一個新的數據表t:
在這里插入圖片描述

PostgreSQL 支持在 CREATE DATABASE、 CREATE TABLE、 CREATE INDEX 以及 ADD CONSTRAINT 語句中指定 tablespace_name 選項,覆蓋默認的表空間(pg_default)。也可以使用相應的 ALTER …語句將對象從一個表空間移到另一個表空間。

如果不想每次創建對象時手動指定表空間,可以使用配置參數 default_tablespace:

set default_tablespace = app_tbs;

三、修改表空間

如果需要修改表空間的定義,可以使用 ALTER TABLESPACE 語句:

-- 用于表空間的重命名
ALTER TABLESPACE name RENAME TO new_name;-- 用于修改表空間的擁有者
ALTER TABLESPACE name OWNER TO { new_owner | CURRENT_USER | SESSION_USER };-- 后兩個語句用于設置表空間的參數
ALTER TABLESPACE name SET ( tablespace_option = value [, ... ] );ALTER TABLESPACE name RESET ( tablespace_option [, ... ] );

將表空間 app_tbs 重命名為 admin01_tbs:
在這里插入圖片描述

只有表空間的擁有者或超級用戶才能修改表空間的定義。接下來將表空間 admin01_tbs 的擁有者修改為 admin01:

在這里插入圖片描述

PostgreSQL 支 持設 置的 表空 間參 數包 括 seq_page_cost、 random_page_cost 以 及
effective_io_concurrency。它們用于查詢計劃器選擇執行計劃時的代價評估。

目前,PostgreSQL 還不支持使用語句修改表空間的存儲路徑。但是,可以通過手動的方式移動表空間的位置:

  1. 停止 PostgreSQL 服務器進程;
  2. 移動文件系統中的數據文件位置;
  3. 修改 PGDATA/pg_tblspc 目錄中的符號鏈接文件(需要提前獲取文件名),指向新的目錄;
  4. 啟動 PostgreSQL 服務器進程。

四、刪除表空間

對于不再需要的表空間,可以使用 DROP TABLESPACE 語句進行刪除:

DROP TABLESPACE [ IF EXISTS ] name;
-- IF EXISTS 可以避免刪除不存在的表空間時產生錯誤信息。

只有表空間的擁有者或超級用戶能夠刪除表空間。刪除表空間之前需要確保其中不存在任何數據庫對象,否則無法刪除。刪除表空間時,同時會刪除文件系統中對應的表空間子目錄。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/94153.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/94153.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/94153.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

趣打印高級版--手機打印軟件!軟件支持多種不同的連接方式,打印神器有這一個就夠了!

軟件介紹(文末獲取)趣打印高級版是一款手機打印軟件。軟件支持五種不同的連接方式,每種都有穩定且快速的反應,用戶均可通過手機進行打印機的遠程使用和設置。軟件還支持上傳不同格式的文檔類型進行打印,方便快捷&#…

【開源框架】7 款流行的 Vue 3 后臺管理框架對比

以下是 7 個流行的 Vue 3 后臺管理框架在 Star 數(截至 2025 年 8 月21日的 GitHub 最新數據)、框架特點、基于的技術棧及開源協議四個方面的詳細對比: 1. Vue-Vben-Admin GitHub 地址:https://github.com/vbenjs/vue-vben-admin…

Datawhale工作流自動化平臺n8n入門教程(一):n8n簡介與平臺部署

前言 在數字化時代,重復性的工作任務正在消耗著我們大量的時間和精力。從數據同步到營銷自動化,從客戶服務到內容管理,這些瑣碎但必要的任務往往讓我們疲于應對。而工作流自動化工具的出現,為我們提供了一個優雅的解決方案。 今天…

SRE - 定位與能力

僅為個人知識總結與記錄 Site Reliability Engineer:站點可靠性工程(SRE 軟件工程師 運維專家 可靠性專家) 相對傳統的運維工程師,SER 注重開發,效率,追求自動化。對于 SRE 工程師,追究的就是…

StarRocks學習4-查詢優化與性能調優

? 1. 執行計劃分析(EXPLAIN) 🌟 作用: 用于查看 SQL 的執行路徑,判斷是否命中索引、物化視圖、Join 策略、并行度等。 📌 常用命令: EXPLAIN SELECT ...; EXPLAIN VERBOSE SELECT ...;&#x1…

CentOS系統安裝Git全攻略

文章目錄? 方法一:使用 yum 或 dnf 包管理器安裝(推薦)1. 更新系統軟件包(非必須)[^1]2. 安裝 Git3. 驗證安裝? 方法二:從源碼編譯安裝(適用于需要自定義版本或配置)1. 安裝依賴包2. 下載 Git 源碼3. 編譯…

VR交通安全學習機-VR交通普法體驗館方案

VR交通安全學習機是一種基于虛擬現實技術的互動式教育設備,旨在通過虛擬環境模擬真實的交通場景,幫助用戶深入了解交通規則、交通信號、道路安全等知識,并通過沉浸式的體驗讓他們親身感受到不遵守交通規則的后果。無論是駕駛員、行人還是騎行…

算法題(188):團伙

審題: 本題需要我們通過解析所有人之間的關系,從而判斷出朋友團體的總個數并輸出 思路: 方法一:擴展域并查集 由于這里涉及對朋友/敵人等關系集合的頻繁操作,所以我們需要使用并查集來操作,但是普通的并查集…

C++開發/Qt開發:單例模式介紹與應用

單例模式是軟件設計模式中最簡單也是最常用的一種創建型設計模式。它的核心目標是確保一個類在整個應用程序生命周期中只有一個實例,并提供一個全局訪問點。筆者白話版理解:你創建了一個類,如果你希望這個類對象在工程中應用時只創建一次&…

Linux筆記---策略模式與日志

1. 設計模式設計模式是軟件開發中反復出現的問題的通用解決方案,它是一套套被反復使用、多數人知曉、經過分類編目的代碼設計經驗總結。設計模式并非具體的代碼實現,而是針對特定問題的抽象設計思路和方法論。它描述了在特定場景下,如何組織類…

關于多個el-input的自動聚焦,每輸入完一個el-input,自動聚焦到下一個

講解原理或者思路:如果你有多個el-input,想要實現每輸入完一個輸入框,然后自動聚焦到下一個輸入框,同理,如果每刪除一個輸入框的值,自動聚焦到上一個輸入框。條件那么首先要做的就是,設置條件,在…

AI 賦能教育變革:機遇、實踐與展望

引言說明教育在社會發展中的重要地位,以及傳統教育面臨的困境。引出 AI 技術為教育變革帶來新機遇,闡述研究其在教育中應用的價值。AI 為教育帶來的機遇個性化學習支持:講解 AI 通過分析學生學習數據,如答題情況、學習時間等&…

(一)八股(數據庫/MQ/緩存)

文章目錄 項目地址 一、數據庫 1.1 事務隔離級別 1. 事務的四大特性 2. Read Uncommited臟讀(未提交讀) 3. Read Commited幻讀(sql默認已提交讀) 4. Repeatable Read 5. Serializable 6. Snapshot(快照隔離) 7. 代碼開啟 8. For update和Repeatable Read的區別 1.2 各種鎖 …

STM32H750 CoreMark跑分測試

STM32H750 CoreMark跑分測試🔎CoreMark跑分測試查詢網站:https://www.eembc.org/coremark/scores.php📜 CoreMark源碼:https://www.github.com/eembc/coremarkCoreMark移植和配置參考:https://community.st.com/t5/stm…

RabbitMQ如何確保消息發送和消息接收

消息發送確認 1 ConfirmCallback方法 ConfirmCallback 是一個回調接口,消息發送到 Broker 后觸發回調,確認消息是否到達 Broker 服務器,也就是只 確認是否正確到達 Exchange 中。 2 ReturnCallback方法 通過實現 ReturnCallback 接口&#xf…

Linux:進程間通信-管道

Linux:進程間通信-管道 前言:為什么需要進程間通信? 你有沒有想過,當你在電腦上同時打開瀏覽器、音樂播放器和文檔時,這些程序是如何協同工作的?比如,瀏覽器下載的文件,為什么能被文…

Jmeter + FFmpeg 直播壓測遇到的問題及解決方案

1、壓測機安裝FFmpeg,下載安裝步驟可見:https://zhuanlan.zhihu.com/p/692019886 2、Jmeter與FFmpeg位數要一致,不允許在32位的進程中運行一個64位的程序,反之亦然 3、OS進程取樣器(Thread Group -> Add -> Sa…

安卓app、微信小程序等訪問多個api時等待提示調用與關閉問題

安卓app、微信小程序訪問webapi,將需要一時間,我們稱之為耗時操作,其它諸如密集型計算、訪問文件與設備等亦是如此。在這個期間我們應該跳出提示,告知用戶正在等待,并且很多時候,在等待時不允許用戶再對UI進…

一個狀態機如何啟動/停止另一個狀態機

一個狀態機如何啟動/停止另一個狀態機 這個過程主要依賴于動作列表(Action List) 中的特定動作項和狀態管理服務(ARA::SM)提供的API。 1. 通過動作列表(Action List)進行預配置控制 這是最常見的方式&#…

基于IPO智能粒子優化的IIR濾波器參數識別算法matlab仿真

目錄 1.程序功能描述 2.測試軟件版本以及運行結果展示 3.部分程序 4.算法理論概述 5.完整程序 1.程序功能描述 IIR(Infinite Impulse Response)濾波器即無限沖激響應濾波器,其輸出不僅與當前和過去的輸入有關,還與過去的輸出…