PostgreSQL 中 pg_stat_database 視圖的 tup_returned 字段的含義詳解
此篇詳細解釋一下 PostgreSQL 中 pg_stat_database 視圖里的 tup_returned 字段的含義。
核心定義
tup_returned 字面意思是 “返回的元組數(shù)”。
這里的“元組”可以通俗地理解為 數(shù)據(jù)表中的一行。
因此,tup_returned 統(tǒng)計的是 從數(shù)據(jù)庫中讀取到的行數(shù)。
詳細解釋
- 統(tǒng)計的是什么?
- 它統(tǒng)計的是由 所有類型的查詢(SELECT, UPDATE, DELETE 等) 所訪問到的行數(shù)。
- 例如:
- 一個
SELECT * FROM table_name查詢,返回了 100 行,那么這 100 就會被累加到tup_returned中。 - 一個
UPDATE table_name SET column = value語句,它需要先找到所有要更新的行(類似于一個 SELECT),假設(shè)它匹配了 50 行,那么這 50 行也會被累加到tup_returned中,即使它最終更新了這些行(更新操作本身由tup_updated統(tǒng)計)。 - 同樣,
DELETE語句在刪除前也需要先找到這些行,所以找到的行數(shù)也會計入tup_returned。
- 一個
- 統(tǒng)計范圍:
- 這個統(tǒng)計是 數(shù)據(jù)庫級別 的。
pg_stat_database視圖中的這個值,是該 PostgreSQL 集群中 單個數(shù)據(jù)庫 的累計值。它包含了該數(shù)據(jù)庫內(nèi)所有表、所有查詢所返回的行數(shù)總和。
- 這個統(tǒng)計是 數(shù)據(jù)庫級別 的。
- 與
tup_fetched的區(qū)別:- 在
pg_stat_database中,還有一個容易混淆的字段叫tup_fetched。 tup_returned: 主要由 順序掃描 返回的行數(shù)。當數(shù)據(jù)庫沒有使用索引,需要全表掃描來查找數(shù)據(jù)時,讀取的每一行都計入此項。tup_fetched: 主要由 索引掃描 返回的行數(shù)。當數(shù)據(jù)庫通過索引查找到數(shù)據(jù)行時,通過索引“獲取”到的每一行都計入此項。
- 在
- 簡單總結(jié):
tup_returned≈ 順序掃描讀到的行數(shù)tup_fetched≈ 索引掃描讀到的行數(shù)
實踐意義與使用場景
tup_returned 是一個非常重要的宏觀性能指標:
- 衡量數(shù)據(jù)庫負載: 這個值在持續(xù)、快速地增長,說明數(shù)據(jù)庫正在處理大量的數(shù)據(jù)讀取請求。通過觀察其增長速度,可以直觀了解數(shù)據(jù)庫的繁忙程度。
- 分析讀取模式: 結(jié)合
tup_returned和tup_fetched,可以判斷數(shù)據(jù)庫的查詢效率。- 如果
tup_returned的值遠高于tup_fetched,說明有大量的查詢正在進行全表掃描,這可能意味著 缺少合適的索引。 - 一個健康的、以O(shè)LTP(在線事務(wù)處理)為主的數(shù)據(jù)庫,通常
tup_fetched會遠大于tup_returned,因為大部分查詢都應(yīng)該通過索引來快速定位數(shù)據(jù)。
- 如果
- 監(jiān)控長期趨勢: 通過定期記錄這個值,可以了解數(shù)據(jù)訪問量的變化趨勢,為容量規(guī)劃提供依據(jù)。
示例查詢
可以通過以下 SQL 語句查看所有數(shù)據(jù)庫的統(tǒng)計信息:
SELECT
datname AS database_name,
tup_returned,
tup_fetched,
tup_inserted,
tup_updated,
tup_deleted
FROM
pg_stat_database;
結(jié)果解讀:
假設(shè)看到某個數(shù)據(jù)庫的 tup_returned 是 10,000,000,而 tup_fetched 是 500,000。這強烈暗示該數(shù)據(jù)庫中存在效率低下的全表掃描查詢,應(yīng)該去檢查一下慢查詢?nèi)罩?,并為頻繁查詢的字段添加索引。
總結(jié)
| 特性 | 說明 |
|---|---|
| 中文名 | 返回的元組數(shù) |
| 本質(zhì) | 從數(shù)據(jù)庫中讀取到的行數(shù)(累計值) |
| 主要來源 | 順序掃描(全表掃描) |
| 對比指標 | tup_fetched(主要來自索引掃描) |
| 主要用途 | 評估數(shù)據(jù)庫負載、分析查詢效率(判斷是否缺少索引) |
簡單來說,tup_returned 就是一個說明“數(shù)據(jù)庫自從啟動以來,總共讀取了多少行數(shù)據(jù)”的計數(shù)器。它是一個非常重要的、用于宏觀性能分析和診斷的指標。
到此這篇關(guān)于PostgreSQL 中 pg_stat_database 視圖的 tup_returned 字段的含義詳解的文章就介紹到這了,更多相關(guān)PostgreSQL pg_stat_database tup_returned 字段內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
常用?PostgreSQL?數(shù)據(jù)恢復方案及使用示例
這篇文章主要介紹了常用?PostgreSQL?數(shù)據(jù)恢復方案概覽,數(shù)據(jù)丟失通常是由?DDL?與?DML?兩種操作引起,由于在操作系統(tǒng)中表文件已經(jīng)不存在,所以只能采用恢復磁盤的方法進行數(shù)據(jù)恢復,需要的朋友可以參考下2022-01-01
PostgreSQL數(shù)據(jù)庫授權(quán)與自增序列操作實例代碼
在PostgreSQL中,自增序列是一種特殊的數(shù)據(jù)庫對象,用于生成唯一的數(shù)字序列,通常用于主鍵值的自動生成,這篇文章主要介紹了PostgreSQL數(shù)據(jù)庫授權(quán)與自增序列操作的相關(guān)資料,需要的朋友可以參考下2025-08-08
解決postgresql 數(shù)字轉(zhuǎn)換成字符串前面會多出一個空格的問題
這篇文章主要介紹了解決postgresql 數(shù)字轉(zhuǎn)換成字符串前面會多出一個空格的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12
Postgresql根據(jù)響應(yīng)數(shù)據(jù)反向?qū)崿F(xiàn)建表語句與insert語句的過程
根據(jù)已有數(shù)據(jù),可構(gòu)建名為products的表,包含id(自增主鍵)、title(非空字符串)、progress(非空整數(shù))三個字段,建表后,可通過insert語句插入數(shù)據(jù),這種反向操作有助于從現(xiàn)有數(shù)據(jù)結(jié)構(gòu)出發(fā),快速構(gòu)建數(shù)據(jù)庫表,并進行數(shù)據(jù)填充,感興趣的朋友跟隨小編一起看看吧2022-02-02
在PostgreSQL中優(yōu)雅高效地進行全文檢索的完整過程
在現(xiàn)代應(yīng)用中,用戶期望通過自然語言快速找到所需內(nèi)容,無論是電商商品搜索、文章檢索還是日志分析,全文檢索已成為核心功能,本文將從 基礎(chǔ)原理、配置優(yōu)化、高級技巧、性能調(diào)優(yōu)、實戰(zhàn)案例 五個維度,系統(tǒng)講解如何在 PostgreSQL 中優(yōu)雅高效地實現(xiàn)全文檢索2026-01-01
PostgreSQL表操作之表的創(chuàng)建及表基礎(chǔ)語法總結(jié)
在PostgreSQL中創(chuàng)建表命令用于在任何給定的數(shù)據(jù)庫中創(chuàng)建新表,下面這篇文章主要給大家介紹了關(guān)于PostgreSQL表操作之表的創(chuàng)建及表基礎(chǔ)語法的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2024-05-05
Linux下創(chuàng)建Postgresql數(shù)據(jù)庫的方法步驟
PostgreSQL 是一種非常復雜的對象-關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(ORDBMS),也是目前功能最強大,特性最豐富和最復雜的自由軟件數(shù)據(jù)庫系統(tǒng)。下面這篇文章主要給大家介紹了關(guān)于在Linux下創(chuàng)建Postgresql數(shù)據(jù)庫的方法步驟,需要的朋友可以參考,下面來一起看看吧。2017-07-07
關(guān)于PostgreSQL截取某個字段中的部分內(nèi)容進行排序的問題
這篇文章主要介紹了PostgreSQL截取某個字段中的部分內(nèi)容進行排序,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-06-06

