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

