PostgreSQL 系統管理函數詳解

PostgreSQL 系統管理函數詳解

PostgreSQL 提供了一系列強大的系統管理函數,用于數據庫維護、監控和配置。這些函數可分為多個類別,以下是主要功能的詳細說明:

一、數據庫配置函數

1. 參數管理函數

-- 查看所有配置參數
SELECT name, setting, unit, context FROM pg_settings;-- 動態修改參數(無需重啟)
SELECT set_config('log_min_duration_statement', '1000', false);-- 重置參數為默認值
SELECT reset_config('work_mem');

2. 配置文件操作

-- 重載配置文件(等效于pg_ctl reload)
SELECT pg_reload_conf();-- 查看配置文件位置
SELECT pg_current_logfile(), pg_conf_load_time();

二、維護與清理函數

1. VACUUM 相關函數

-- 執行VACUUM(非FULL模式)
SELECT pg_stat_reset();
VACUUM (VERBOSE, ANALYZE) customers;-- 僅收集統計信息(不清理死元組)
VACUUM (ANALYZE, SKIP_LOCKED) orders;-- 查看需要VACUUM的表
SELECT schemaname, relname, n_dead_tup 
FROM pg_stat_user_tables 
WHERE n_dead_tup > 0
ORDER BY n_dead_tup DESC;

2. 凍結事務ID管理

-- 檢查事務ID年齡
SELECT datname, age(datfrozenxid) FROM pg_database;-- 手動推進凍結事務ID
VACUUM FREEZE customers;-- 緊急凍結(避免事務ID回卷)
SELECT pg_emergency_freeze('my_table');

三、備份與恢復函數

1. 基礎備份控制

-- 開始備份模式
SELECT pg_start_backup('nightly_backup', true, false);-- 結束備份模式
SELECT pg_stop_backup(false, true);-- 檢查備份進度
SELECT * FROM pg_stat_progress_basebackup;

2. 時間點恢復(PITR)

-- 創建還原點
SELECT pg_create_restore_point('before_major_update');-- 查看WAL信息
SELECT pg_current_wal_lsn(), pg_walfile_name_offset(pg_current_wal_lsn());-- 強制切換WAL文件
SELECT pg_switch_wal();

四、監控與統計函數

1. 統計信息收集

-- 重置統計計數器
SELECT pg_stat_reset();
SELECT pg_stat_reset_shared('bgwriter');-- 獲取后臺寫入器統計
SELECT * FROM pg_stat_get_bgwriter_stats();-- 用戶自定義統計
SELECT pg_stat_get_activity(pg_backend_pid());

2. 會話管理

-- 查看活動會話
SELECT pid, usename, application_name, state 
FROM pg_stat_activity;-- 終止會話
SELECT pg_terminate_backend(pid) 
FROM pg_stat_activity 
WHERE application_name = 'problem_app';-- 取消長時間運行的查詢
SELECT pg_cancel_backend(pid)
FROM pg_stat_activity
WHERE state = 'active' AND now() - query_start > interval '5 minutes';

五、擴展與插件管理

1. 擴展操作函數

-- 創建擴展
SELECT pg_available_extensions();
CREATE EXTENSION pg_stat_statements;-- 更新擴展
ALTER EXTENSION pg_partman UPDATE;-- 查看擴展依賴
SELECT * FROM pg_extension_dependencies();

2. 插件控制

-- 加載共享庫(需超級用戶)
LOAD 'auto_explain';-- 查看已加載庫
SELECT * FROM pg_loaded_libraries();

六、存儲與文件管理

1. 表空間操作

-- 創建表空間
SELECT pg_tablespace_location(oid), * FROM pg_tablespace;-- 檢查表空間使用情況
SELECT pg_tablespace_size('fast_ssd');

2. 大對象管理

-- 創建大對象
SELECT lo_create(0);-- 導入文件為大對象
SELECT lo_import('/path/to/file.pdf');-- 導出大對象到文件
SELECT lo_export(oid, '/path/to/output.pdf') FROM pg_largeobject_metadata;

七、復制與高可用

1. 流復制控制

-- 查看復制狀態
SELECT * FROM pg_stat_replication;-- 提升備庫為主庫
SELECT pg_promote(true, 60);-- 創建物理復制槽
SELECT * FROM pg_create_physical_replication_slot('standby1_slot');

2. 邏輯復制

-- 創建邏輯復制槽
SELECT * FROM pg_create_logical_replication_slot('inventory_slot', 'pgoutput'
);-- 解碼WAL變更
SELECT * FROM pg_logical_slot_get_changes('inventory_slot',NULL,NULL
);

八、安全相關函數

1. 加密函數

-- 密碼哈希
SELECT crypt('mypassword', gen_salt('bf', 8));-- 數據加密
SELECT pgp_sym_encrypt('secret data', 'aes_key');-- 查看密碼哈希算法
SELECT * FROM pg_password_hash_algorithms();

2. 權限檢查

-- 檢查表權限
SELECT has_table_privilege('user1', 'customers', 'INSERT');-- 查看角色權限
SELECT * FROM pg_roles WHERE rolname = 'admin';-- 授予默認權限
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT SELECT ON TABLES TO readonly_role;

九、實用工具函數

1. 系統信息

-- 獲取PostgreSQL版本
SELECT version();-- 查看編譯選項
SELECT pg_config();-- 服務器啟動時間
SELECT pg_postmaster_start_time();

2. 性能診斷

-- 查看鎖等待
SELECT * FROM pg_lock_waits();-- 獲取當前執行的查詢計劃
SELECT pg_stat_get_backend_activity(pid) 
FROM pg_stat_activity 
WHERE state = 'active';-- 生成隨機數據
SELECT generate_series(1,100), md5(random()::text);

十、最佳實踐示例

1. 自動化維護腳本

-- 每周維護腳本
DO $$
BEGIN-- 分析所有用戶表EXECUTE format('ANALYZE %I', string_agg(table_schema||'.'||table_name, ', '))FROM information_schema.tablesWHERE table_schema NOT IN ('pg_catalog', 'information_schema');-- 清理碎片嚴重的表PERFORM vacuum_full_ratio(schemaname, relname, 0.3  -- 碎片率閾值) FROM pg_stat_user_tablesWHERE n_dead_tup > 1000;-- 記錄維護日志INSERT INTO maintenance_log VALUES (now(), 'Weekly maintenance completed');
END $$;

2. 緊急情況處理

-- 事務ID回卷緊急處理
DO $$
DECLAREdb record;
BEGINFOR db IN SELECT datname FROM pg_database WHERE datname NOT IN ('template0', 'template1')LOOPEXECUTE format('VACUUM FREEZE %I', db.datname);RAISE NOTICE 'Frozen database: %', db.datname;END LOOP;
END $$;

PostgreSQL 的系統管理函數提供了對數據庫各個方面的精細控制,合理使用這些函數可以顯著簡化管理工作。對于生產環境,建議:

  1. 將常用管理操作封裝為PL/pgSQL函數
  2. 通過pgAgent或cron設置定期維護任務
  3. 在執行破壞性操作前創建還原點
  4. 結合監控系統使用統計函數進行性能分析

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

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

相關文章

【2025軟考高級架構師】——計算機網絡(9)

摘要 全文主要圍繞計算機網絡相關知識展開,包括域名服務器查詢方式、網絡規劃與設計的關鍵技術、雙協議棧與隧道技術、層次化網絡設計、網絡冗余設計以及高可靠和高可用性等方面,旨在為軟考高級架構師的備考提供知識參考。 1. 通信網絡架構圖 2. 通信架…

yolov8n-obb訓練rknn模型

必備: 準備一臺ubuntu22的服務器或者虛擬機(x86_64) 1、數據集標注: 1)推薦使用X-AnyLabeling標注工具 2)標注選【旋轉框】 3)可選AI標注,再手動補充,提高標注速度 …

前端-HTML+CSS+JavaScript+Vue+Ajax概述

HTML&#xff08;超文本標記語言&#xff09;常見標簽 <html><head> <title>這是標題的內容&#xff0c;顯示在瀏覽器的頭部</title></head><body><!-- 這里面的內容在瀏覽器顯示給用戶看 --><!-- h1 -> h6 : 標題從大到小 …

嵌入式軟件--stm32 DAY 5 USART串口通訊(上)

前邊我們學的都是通用的功能&#xff0c;例如GPIO、中斷&#xff0c;現在我們要學習的是某一個特定的功能。典型的就是通訊功能。其中&#xff0c;最簡單的通訊協議就是串口了。 一、串口_通訊基礎知識 1.1 串行與并行 按數據傳送的方式分類的。 串行通信一位一位傳輸&…

c++混淆工具Hikari-LLVM15-llvm-18.1.8rel編譯安裝

目錄 1. windows 編譯1. 2 編譯工具安裝1.2.1 下載w64devkit1.2.2 添加環境變量1.2.3 驗證一下 1.3 下載llvm-18.1.8rel1.4 編譯 2. Android studio增加混淆編譯2.1 替換NDK中clang2.2 配置混淆編譯項 3. Linux編譯安裝4. Linux下增加混淆編譯4.1 在CMakeLists.txt中設置clang編…

【EasyPan】loadDataList方法及checkRootFilePid方法解析

【EasyPan】項目常見問題解答&#xff08;自用&持續更新中…&#xff09;匯總版 一、loadDataList方法概覽 /*** 文件列表加載接口* param session HTTP會話對象* param shareId 必須參數&#xff0c;分享ID&#xff08;使用VerifyParam進行非空校驗&#xff09;* param …

Vue3渲染引擎:虛擬DOM與響應式原理

Vue3渲染引擎&#xff1a;虛擬DOM與響應式原理 在當今的前端開發中&#xff0c;Vue.js作為一種流行的JavaScript框架&#xff0c;經常被用來構建用戶界面。而Vue.js 3作為其最新版本&#xff0c;在性能和功能上進行了許多優化和改進。其中&#xff0c;Vue3渲染引擎的核心原理—…

【論文閱讀】Attentive Collaborative Filtering:

Attentive Collaborative Filtering: Multimedia Recommendation with Item- and Component-Level Attention Attentive Collaborative Filtering (ACF)、隱式反饋推薦、注意力機制、貝葉斯個性化排序 標題翻譯&#xff1a;注意力協同過濾&#xff1a;基于項目和組件級注意力的…

【PostgreSQL數據分析實戰:從數據清洗到可視化全流程】2.1 數據查詢基礎(SELECT/WHERE/GROUP BY/HAVING)

?? 點擊關注不迷路 ?? 點擊關注不迷路 ?? 點擊關注不迷路 文章大綱 第2章 SQL語法進階:數據查詢基礎(SELECT/WHERE/GROUP BY/HAVING)2.1 數據查詢基礎2.1.1 SELECT 語句:從表中提取數據2.1.1.1 基礎語法與列選擇2.1.1.2 列別名與表達式2.1.1.3 去重與排序2.1.2 WHERE…

深度解析:基于Python的微信小程序自動化操作實現

引言 在當今數字化時代&#xff0c;自動化技術正在改變我們與軟件交互的方式。本文將深入解析一個使用Python實現的微信小程序自動化操作腳本&#xff0c;該腳本能夠自動識別屏幕上的特定圖像并執行點擊操作。這種技術在自動化測試、批量操作和效率工具開發中有著廣泛的應用前…

layui下拉框輸入關鍵字才出數據

html里這樣放 <div class"layui-form-item"><label class"layui-form-label">合同方&#xff1a;</label><div class"layui-input-block rightinline"><input type"text" name"select_text" ids…

bash和zsh的區別

Bash&#xff08;Bourne-Again SHell&#xff09;和 Zsh&#xff08;Z Shell&#xff09;都是 Unix/Linux 系統中的主流 Shell&#xff0c;但它們在功能、配置和用戶體驗上有顯著區別。以下是兩者的詳細對比&#xff1a; 1. 歷史與兼容性 特性BashZsh誕生時間1989 年&#xff…

組件通信-v-model

概述&#xff1a;實現 父?子 之間相互通信。 前序知識 —— v-model的本質 <!-- 使用v-model指令 --> <input type"text" v-model"userName"><!-- v-model的本質是下面這行代碼 --> <input type"text" :value"use…

虛擬機(Virtual Machine, VM)的簡單介紹

目錄 一、虛擬機的基本概念 二、虛擬化技術的分類 三、虛擬機的核心架構 四、虛擬機的核心應用場景 五、虛擬機的優缺點分析 六、虛擬機與容器技術的對比 七、虛擬機的未來趨勢 八、總結 一、虛擬機的基本概念 虛擬機&#xff08;VM&#xff09;是一種通過軟件模擬的完…

Xcode16提交App Store審核時提示bitcode報錯

提交AppStore時出現bitcode報錯&#xff0c;內容如下&#xff1a; Upload was cancelled. 2025-04-30 02:15:48.349 [ContentDelivery.Uploader.600000DB4380] Show Progress: Upload failed. Validation failed Invalid Executable. The executable Blockolot.app/Frameworks/…

Flutter TabBar / TabBarView 詳解

目錄 一、引言 二、基本用法 代碼解析 三、主要屬性 3.1 TabBar 3.2 TabBarView 四、進階定制&#xff1a;突破默認樣式 4.1 視覺樣式深度定制 4.2 自定義指示器與標簽 4.3 動態標簽管理 五、工程實踐關鍵技巧 5.1 性能優化方案 5.2 復雜手勢處理 5.3 響應式布局…

mathtype轉化

mathtype轉latex 點擊預置 選擇剪切和復制預置 點擊MathML 或 TeX&#xff0c;選擇 LaTeX 2.09 and later mathtype轉word自帶編碼器 與前面都相同&#xff0c;選擇 MathML2.0&#xff08;m namespace&#xff09;

AI檢測的荒謬性:當規則淪為一場概率游戲

當今高校對AI檢測工具的依賴&#xff0c;已經演變成一場標準混亂的鬧劇。有的學校指定格子達&#xff0c;有的迷信維普&#xff0c;而同一篇論文在不同的系統里竟能得出天差地別的結果——在格子達AI檢測率僅12%的文章&#xff0c;放到維普卻可能飆升到60%。這意味著&#xff0…

react-14defaultValue(僅在首次渲染時生效)和value(受 React 狀態控制)

在 React 中&#xff0c;defaultChecked/checked 和 defaultValue/value 是用于處理表單元素初始值和受控值的屬性對。區別在于表單元素是否受 React 組件狀態控制。 1. defaultValue 作用&#xff1a;設置表單元素的初始值&#xff08;僅在首次渲染時生效&#xff09;。特點…

Go語言基礎學習詳細筆記

文章目錄 初步了解Go語言Go語言誕生的主要問題和目標Go語言應用典型代表Go語言開發環境搭建經典HelloWorld 基本程序結構編寫學習變量常量數據類型運算符 條件語句if語句switch 語句 跳轉語句常用集合和字符串數組切片Map實現Set**字符串** 函數**基本使用用例驗證** 面向對象編…