<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 27.2\. 統計收集器 PostgreSQL的統計收集器是一個支持收集和匯報服務器活躍性信息的子系統。 目前,這個收集器可以給出對表和索引的訪問計數, 包括磁盤塊的數量和獨立行的項。它還跟蹤每個表中的行的總數, 每個表的過去的清理和分析時間。它也可以計算用戶定義的函數的調用, 以及每個人的總花費的時間。 PostgreSQL還可以判斷當前其它服務器進程正在執行的命令是什么。 這是一個收集過程中的獨立設施。 ## 27.2.1\. 統計收集器配置 因為統計收集給查詢處理增加了一些開銷,所以該系統可以配置為啟用或禁用統計收集。 這是由配置參數控制的,通常在`postgresql.conf`里設置 (參閱[Chapter 18](#calibre_link-500)獲取有關設置配置參數的細節)。 參數[track_activities](#calibre_link-1703)啟動監測任何服務器進程執行的當前命令。 參數[track_counts](#calibre_link-1454)控制關于表和索引是否被統計。 參數[track_functions](#calibre_link-1704)實現了對用戶定義的函數用法的追蹤。 參數[track_io_timing](#calibre_link-1369)啟動監控塊讀寫次數。 通常這些參數在`postgresql.conf`中設置,因此它們作用于所有服務器進程, 但是我們也可以在獨立的會話里用[SET](#calibre_link-675)命令把它們打開或者關閉。 為避免普通用戶把它們的活躍性隱藏不給管理員看, 只有超級用戶允許用`SET`命令修改這些參數。 統計收集器通過臨時文件將采集到的信息傳遞給其他的PostgreSQL進程。 這些文件存放在[stats_temp_directory](#calibre_link-1705)參數命名的目錄中。 缺省是`pg_stat_tmp`。 為了提高性能,`stats_temp_directory`參數可以指向一個基于RAM的文件系統, 降低物理I/O需求。當服務器關閉時, 統計數據的永久復本存儲在`global`子目錄中, 所以統計數據可以在服務器重新啟動時保留。 ## 27.2.2\. 查看收集到的統計信息 有一些預定義的視圖可以用于顯示統計收集的結果, 在[Table 27-1](#calibre_link-1440)里列出。 另外,我們可以使用底層的統計函數制作自定義的視圖。 正如[Section 27.2.3](#calibre_link-1696)中討論的。 在使用統計觀察當前活躍性的時候,你必須意識到這些信息并不是實時更新的。 每個獨立的服務器進程只是在準備進入空閑狀態的時候才向收集器傳送新的塊和行訪問計數; 因此正在處理的查詢或者事務并不影響顯示出來的總數。同樣, 收集器本身也最多每`PGSTAT_STAT_INTERVAL`毫秒 (缺省500,除非在編譯服務器的時候修改過) 發送一次新的報告。因此顯示總是落后于實際活動。 但是由`track_activities`收集的當前查詢信息總是實時更新的。 另外一個需要著重指出的是,在請求服務器進程顯示任何這些統計信息的時候, 它首先抓取收集器進程發出的最新報告,然后就拿這些數據作為所有統計視圖和函數的快照, 直到它當前的事務結束。因此統計信息在當前事務的持續期間內顯示靜態信息。類似的, 每個進程的當前查詢信息在該查詢首次出現在事務中的時候就被收集了, 并且在整個事務過程中都顯示相同的信息。這是一個特性,而不是一個臭蟲, 因為這樣就允許你在統計上執行幾個查詢并且對結果進行相關性檢查而又不用擔心這些數字會悄悄的變化。 但是如果你想看每個查詢的最新結果,那么就要記住在事務塊外面處理這些查詢。 另外,你可以調用`pg_stat_clear_snapshot`(), 這將丟棄目前事務的統計數據快照(如有)。 下次使用統計信息將導致獲取一個新的快照。 在視圖`pg_stat_xact_all_tables`, `pg_stat_xact_sys_tables`, `pg_stat_xact_user_tables`和 `pg_stat_xact_user_functions`上事務也可以看到自己的統計(未傳送到收集器)。 這些數字不能作為上面所說的;相反他們在整個事務中不斷更新。 **Table 27-1\. 標準統計視圖** | 視圖名稱 | 描述 | | --- | --- | | `pg_stat_activity` | 每個服務器進程一行,顯示進程當前活動相關的信息,比如狀態和當前查詢。 參閱[pg_stat_activity](#calibre_link-1706)獲取更多詳情。 | | `pg_stat_bgwriter` | 只有一行,顯示關于后端寫進程活動的統計信息。參閱[pg_stat_bgwriter](#calibre_link-1707) 獲取更多詳細信息。 | | `pg_stat_database` | 每個數據庫一行,顯示數據庫廣泛的統計。參閱[pg_stat_database](#calibre_link-1453)獲取更多詳情。 | | `pg_stat_all_tables` | 當前數據庫每個表一行,顯示關于訪問特定表的統計。參閱[pg_stat_all_tables](#calibre_link-1708) 獲取更多詳細信息。 | | `pg_stat_sys_tables` | 和`pg_stat_all_tables`一樣,除了只顯示系統表之外。 | | `pg_stat_user_tables` | 和`pg_stat_all_tables`一樣,除了只顯示用戶表。 | | `pg_stat_xact_all_tables` | 類似`pg_stat_all_tables`, 但是到目前為止當前事務中計算采取的行動 (這_不_包含在`pg_stat_all_tables`中以及相關視圖中。) 活的列數以及死行和清理以及分析操作不在此視圖中出現。 | | `pg_stat_xact_sys_tables` | 和`pg_stat_xact_all_tables`相同,除了只顯示系統表。 | | `pg_stat_xact_user_tables` | 和`pg_stat_xact_all_tables`相同,除了只顯示用戶表。 | | `pg_stat_all_indexes` | 當前數據庫中的每個索引的每一行,顯示關于訪問特定索引的統計。 參見[pg_stat_all_indexes](#calibre_link-1709)獲取更多詳情。 | | `pg_stat_sys_indexes` | 和`pg_stat_all_indexes`一樣,但只顯示系統表上的索引。 | | `pg_stat_user_indexes` | 和`pg_stat_all_indexes`一樣,但只顯示用戶表上的索引。 | | `pg_statio_all_tables` | 當前數據庫每個表一行,顯示特定表關于I/O的統計, 參閱[pg_statio_all_tables](#calibre_link-1710) 獲取更多細節。 | | `pg_statio_sys_tables` | 和`pg_statio_all_tables`一樣,但只顯示系統表 | | `pg_statio_user_tables` | 和`pg_statio_all_tables`一樣,但只顯示用戶表。 | | `pg_statio_all_indexes` | 當前數據庫每個索引一行,顯示特定索引關于I/O的統計。 參閱[pg_statio_all_indexes](#calibre_link-1711)獲取更多細節。 | | `pg_statio_sys_indexes` | 和`pg_statio_all_indexes`一樣的,但是只顯示系統表上的索引。 | | `pg_statio_user_indexes` | 和`pg_statio_all_indexes`一樣,但只顯示用戶表上的索引。 | | `pg_statio_all_sequences` | 當前數據庫每個序列一行,顯示特定序列關于I/O的統計。參閱 [pg_statio_all_sequences](#calibre_link-1712)獲取更多細節。 | | `pg_statio_sys_sequences` | 和`pg_statio_all_sequences`一樣, 但只顯示系統序列。因為目前沒有定義系統序列,所以這個視圖總是空的。 | | `pg_statio_user_sequences` | 和`pg_statio_all_sequences`一樣,但只顯示用戶序列。 | | `pg_stat_user_functions` | 每一個跟蹤函數一行,顯示關于執行這個函數的統計。 參閱[pg_stat_user_functions](#calibre_link-1713) 獲取更多詳情。 | | `pg_stat_xact_user_functions` | 類似于`pg_stat_user_functions`,但是在當前事務中只調用計數 (這不包含在`pg_stat_user_functions`中)。 | | `pg_stat_replication` | 每WAL發送進程一行,顯示關于復制到發送端的鏈接備用服務器的統計信息。 參閱[pg_stat_replication](#calibre_link-1714)獲取更多細節。 | | `pg_stat_database_conflicts` | 每個數據庫一行,顯示關于備用服務器恢復沖突取消查詢的統計信息。 參閱[pg_stat_database_conflicts](#calibre_link-1715)獲取更多信息。 | 針對每個索引的統計有利于判斷哪個索引得到使用以及它們的效果。 `pg_statio_`視圖有利于決定緩沖區高速緩存的有效性。 當實際的磁盤數讀取比緩沖區的數目小得多的時候, 然后緩存滿足大多數讀請求而沒有調用內核調用。 然而,這些統計數據不提供整個過程:由于PostgreSQL 處理磁盤I/O的方式,不在PostgreSQL緩沖區緩存中的數據可能仍然位于 內核I/O緩存中,因此可能仍然被取出而不需要物理讀。 對獲得更多PostgreSQL的I/O行為的詳細信息感興趣的用戶 建議使用與操作系統工具結合的PostgreSQL統計收集, 允許洞察I/O的內核處理。 **Table 27-2\. `pg_stat_activity`視圖** | 列 | 類型 | 描述 | | --- | --- | --- | | `datid` | `oid` | 連接后端的數據庫OID | | `datname` | `name` | 連接后端的數據庫名稱 | | `pid` | `integer` | 后端進程ID | | `usesysid` | `oid` | 登陸后端的用戶OID | | `usename` | `name` | 登陸到該后端的用戶名 | | `application_name` | `text` | 連接到后端的應用名 | | `client_addr` | `inet` | 連接到后端的客戶端的IP地址。 如果此字段是null, 它表明通過服務器機器上UNIX套接字連接客戶端或者這是內部進程如autovacuum | | `client_hostname` | `text` | 連接客戶端的主機名,通過`client_addr`的反向DNS查找報告。 這個字段將只是非空的IP連接,并且僅僅當啟動[log_hostname](#calibre_link-1716)的時候。 | | `client_port` | `integer` | 客戶端用于與后端通訊的TCP端口號,或者如果使用Unix套接字,則為`-1`。 | | `backend_start` | `timestamp with time zone` | 該過程開始的時間,比如當客戶端連接服務器時。 | | `xact_start` | `timestamp with time zone` | 啟動當前事務的時間,如果沒有事務是活的,則為null。如果當前查詢是 首個事務,則這列等同于`query_start`列。 | | `query_start` | `timestamp with time zone` | 開始當前活躍查詢的時間, 或者如果`state`是非`活躍的`, 當開始最后查詢時。 | | `state_change` | `timestamp with time zone` | 上次`狀態`改變的時間 | | `waiting` | `boolean` | 如果后端當前正等待鎖則為真 | | `state` | `text` | 該后端當前總體狀態。可能值是: `活躍的`:后端正在執行一個查詢。 `空閑的`:后端正在等待一個新的客戶端命令。 `空閑事務`:后端在事務中,但是目前無法執行查詢。 `空閑事務(被終止)`:這個情況類似于`空閑事務`,除了事務導致錯誤的一個語句之一。 `快速路徑函數調用`:后端正在執行一個快速路徑函數。 `禁用`:如果后端禁用[track_activities](#calibre_link-1703),則報告這個狀態。 | | `query` | `text` | 該后端的最新查詢文本。如果`狀態`是`活躍的`, 此字段顯示當前正在執行的查詢。在所有其他情況中,這表明執行過去的查詢。 | `pg_stat_activity`每個服務器進程有一行,顯示進程當前活動的相關信息。 > **Note:** `waiting`和`state`列是獨立的。 如果一個后端處于`活躍`狀態,它可能會或可能不會`waiting`。 如果這種情況是`活躍的`并且`waiting`是真, 它意味著正在執行一個查詢,但在該系統中的某個地方被鎖阻塞。 **Table 27-3\. `pg_stat_bgwriter`視圖** | 列 | 類型 | 描述 | | --- | --- | --- | | `checkpoints_timed` | `bigint` | 執行的定期檢查點數 | | `checkpoints_req` | `bigint` | 執行的需求檢查點數 | | `checkpoint_write_time` | `double precision` | 花費在檢查點處理部分的時間總量,其中文件被寫入到磁盤,以毫秒為單位。 | | `checkpoint_sync_time` | `double precision` | 花費在檢查點處理部分的時間總量,其中文件被同步到磁盤,以毫秒為單位。 | | `buffers_checkpoint` | `bigint` | 檢查點寫緩沖區數量 | | `buffers_clean` | `bigint` | 后端寫進程寫緩沖區數量 | | `maxwritten_clean` | `bigint` | 后端寫進程停止清理掃描時間數,因為它寫了太多緩沖區 | | `buffers_backend` | `bigint` | 通過后端直接寫緩沖區數 | | `buffers_backend_fsync` | `bigint` | 后端不得不執行自己的`fsync`調用的時間數 (通常后端寫進程處理這些即使后端確實自己寫) | | `buffers_alloc` | `bigint` | 分配的緩沖區數量 | | `stats_reset` | `timestamp with time zone` | 這些統計被重置的時間 | `pg_stat_bgwriter`視圖總是有獨立行,包含集群的全局數據。 **Table 27-4\. `pg_stat_database`視圖** | 列 | 類型 | 描述 | | --- | --- | --- | | `datid` | `oid` | 數據庫的OID | | `datname` | `name` | 這個數據庫的名字 | | `numbackends` | `integer` | 當前連接到該數據庫的后端數。 這是在返回一個反映目前狀態值的視圖中唯一的列;自 上次重置所有其他列返回累積值。 | | `xact_commit` | `bigint` | 此數據庫中已經提交的事務數 | | `xact_rollback` | `bigint` | 此數據庫中已經回滾的事務數 | | `blks_read` | `bigint` | 在這個數據庫中讀取的磁盤塊的數量 | | `blks_hit` | `bigint` | 高速緩存中已經發現的磁盤塊的次數, 這樣讀取是不必要的(這只包括PostgreSQL緩沖區高速緩存,沒有操作系統的文件系統緩存。 | | `tup_returned` | `bigint` | 通過數據庫查詢返回的行數 | | `tup_fetched` | `bigint` | 通過數據庫查詢抓取的行數 | | `tup_inserted` | `bigint` | 通過數據庫查詢插入的行數 | | `tup_updated` | `bigint` | 通過數據庫查詢更新的行數 | | `tup_deleted` | `bigint` | 通過數據庫查詢刪除的行數 | | `conflicts` | `bigint` | 由于數據庫恢復沖突取消的查詢數量。(只在備用服務器發生的沖突);參閱 [pg_stat_database_conflicts](#calibre_link-1715)獲取更多信息。 | | `temp_files` | `bigint` | 通過數據庫查詢創建的臨時文件數量。計算所有臨時文件, 不論為什么創建臨時文件(比如排序或者哈希), 而且不管[log_temp_files](#calibre_link-1040)設置。 | | `temp_bytes` | `bigint` | 通過數據庫查詢寫入臨時文件的數據總量。計算所有臨時文件, 不論為什么創建臨時文件, 而且不管[log_temp_files](#calibre_link-1040)設置 | | `deadlocks` | `bigint` | 在該數據庫中檢索的死鎖數 | | `blk_read_time` | `double precision` | 通過數據庫后端讀取數據文件塊花費的時間,以毫秒計算。 | | `blk_write_time` | `double precision` | 通過數據庫后端寫入數據文件塊花費的時間,以毫秒計算。 | | `stats_reset` | `timestamp with time zone` | 這些統計最后被重置的時間 | `pg_stat_database`視圖將包含集群中每個數據庫的每一行, 顯示數據庫統計。 **Table 27-5\. `pg_stat_all_tables`視圖** | 列 | 類型 | 描述 | | --- | --- | --- | | `relid` | `oid` | 表的OID | | `schemaname` | `name` | 此表的模式名 | | `relname` | `name` | 表名 | | `seq_scan` | `bigint` | 此表發起的順序掃描數 | | `seq_tup_read` | `bigint` | 順序掃描抓取的活躍行數 | | `idx_scan` | `bigint` | 此表發起的索引掃描數 | | `idx_tup_fetch` | `bigint` | 索引掃描抓取的活躍行數 | | `n_tup_ins` | `bigint` | 插入行數 | | `n_tup_upd` | `bigint` | 更新行數 | | `n_tup_del` | `bigint` | 刪除行數 | | `n_tup_hot_upd` | `bigint` | HOT更新行數(比如沒有更新所需的單獨索引) | | `n_live_tup` | `bigint` | 估計活躍行數 | | `n_dead_tup` | `bigint` | 估計死行數 | | `last_vacuum` | `timestamp with time zone` | 最后一次此表是手動清理的(不計算`VACUUM FULL`) | | `last_autovacuum` | `timestamp with time zone` | 上次被autovacuum守護進程清理的表 | | `last_analyze` | `timestamp with time zone` | 上次手動分析這個表 | | `last_autoanalyze` | `timestamp with time zone` | 上次被autovacuum守護進程分析的表 | | `vacuum_count` | `bigint` | 這個表被手動清理的次數(不計算`VACUUM FULL`) | | `autovacuum_count` | `bigint` | 這個表被autovacuum清理的次數 | | `analyze_count` | `bigint` | 這個表被手動分析的次數 | | `autoanalyze_count` | `bigint` | 這個表被autovacuum守護進程分析的次數 | `pg_stat_all_tables`視圖將包含 當前數據庫中每個表的一行(包括TOAST表),顯示訪問特定表的統計信息。 `pg_stat_user_tables`和 `pg_stat_sys_tables`視圖 包含相同的信息,但是過濾只分別顯示用戶和系統表。 **Table 27-6\. `pg_stat_all_indexes`視圖** | 列 | 類型 | 描述 | | --- | --- | --- | | `relid` | `oid` | 這個索引的表的OID | | `indexrelid` | `oid` | 索引的OID | | `schemaname` | `name` | 索引中模式名 | | `relname` | `name` | 索引的表名 | | `indexrelname` | `name` | 索引名 | | `idx_scan` | `bigint` | 索引上開始的索引掃描數 | | `idx_tup_read` | `bigint` | 通過索引上掃描返回的索引項數 | | `idx_tup_fetch` | `bigint` | 通過使用索引的簡單索引掃描抓取的活表行數 | `pg_stat_all_indexes`視圖將包含 當前數據庫中的每個索引行,顯示訪問特定索引的統計。 `pg_stat_user_indexes`和 `pg_stat_sys_indexes`視圖包含相同的信息, 但是過濾只是分別顯示用戶和系統索引。 索引可以通過簡單的索引掃描或"位圖"索引掃描進行使用。位圖掃描中 幾個索引的輸出可以通過AND或者OR規則進行組合, 因此當使用位圖掃描的時候,很難將獨立堆行抓取與特定索引進行組合, 因此,一個位圖掃描增加`pg_stat_all_indexes`.`idx_tup_read` 使用索引計數,并且增加`pg_stat_all_tables`.`idx_tup_fetch` 表計數,但不影響`pg_stat_all_indexes`.`idx_tup_fetch`。 > **Note:** `idx_tup_read`和`idx_tup_fetch`計算不同甚至沒有任何可使用的位圖掃描。 因為`idx_tup_read`計算從索引檢索的索引項而`idx_tup_fetch` 計算從表抓取的活的行。如果任何死的或尚未提交的行使用索引進行抓取, 或通過唯一索引掃描避免任何堆抓取,則后者較小。 **Table 27-7\. `pg_statio_all_tables`視圖** | 列 | 類型 | 描述 | | --- | --- | --- | | `relid` | `oid` | 表OID | | `schemaname` | `name` | 該表模式名 | | `relname` | `name` | 表名 | | `heap_blks_read` | `bigint` | 從該表中讀取的磁盤塊數 | | `heap_blks_hit` | `bigint` | 此表緩存命中數 | | `idx_blks_read` | `bigint` | 從表中所有索引讀取的磁盤塊數 | | `idx_blks_hit` | `bigint` | 表中所有索引命中緩存數 | | `toast_blks_read` | `bigint` | 此表的TOAST表讀取的磁盤塊數(如果存在) | | `toast_blks_hit` | `bigint` | 此表的TOAST表命中緩沖區數(如果存在) | | `tidx_blks_read` | `bigint` | 此表的TOAST表索引讀取的磁盤塊數(如果存在) | | `tidx_blks_hit` | `bigint` | 此表的TOAST表索引命中緩沖區數(如果存在) | `pg_statio_all_tables`視圖將包含 當前數據庫中每個表的一行(包括TOAST表), 顯示出特定表I/O的統計。`pg_statio_user_tables`和 `pg_statio_sys_tables`視圖包含相同的信息, 但是過濾分別只顯示用戶和系統表。 **Table 27-8\. `pg_statio_all_indexes`視圖** | 列 | 類型 | 描述 | | --- | --- | --- | | `relid` | `oid` | 索引的表的OID | | `indexrelid` | `oid` | 該索引的OID | | `schemaname` | `name` | 該索引的模式名 | | `relname` | `name` | 該索引的表名 | | `indexrelname` | `name` | 索引名稱 | | `idx_blks_read` | `bigint` | 從索引中讀取的磁盤塊數 | | `idx_blks_hit` | `bigint` | 索引命中緩存數 | `pg_statio_all_indexes`視圖將包含當前數據庫中的每個索引行, 顯示特定索引的I/O的統計。`pg_statio_user_indexes`和 `pg_statio_sys_indexes`視圖包含相同的信息, 但是過濾分別只顯示用戶和系統索引。 **Table 27-9\. `pg_statio_all_sequences`視圖** | 列 | 類型 | 描述 | | --- | --- | --- | | `relid` | `oid` | 序列OID | | `schemaname` | `name` | 序列中模式名 | | `relname` | `name` | 序列名 | | `blks_read` | `bigint` | 從序列中讀取的磁盤塊數 | | `blks_hit` | `bigint` | 序列中緩存命中數 | `pg_statio_all_sequences`視圖包含當前數據庫中每個序列的每一行, 顯示特定序列關于I/O的統計。 **Table 27-10\. `pg_stat_user_functions`視圖** | 列 | 類型 | 描述 | | --- | --- | --- | | `funcid` | `oid` | 函數OID | | `schemaname` | `name` | 此函數中的模式名 | | `funcname` | `name` | 函數名 | | `calls` | `bigint` | 被調用的函數次數 | | `total_time` | `double precision` | 在這個函數以及調用的其他函數的總時間,以毫秒為單位。 | | `self_time` | `double precision` | 在這個函數本身上用的總時間,不包含調用其他函數的,以毫秒為單位 | `pg_stat_user_functions`視圖包含每個跟蹤函數的行,顯示關于函數執行的統計。 [track_functions](#calibre_link-1704)參數控制真正跟蹤的函數。 **Table 27-11\. `pg_stat_replication`視圖** | 列 | 類型 | 描述 | | --- | --- | --- | | `pid` | `integer` | WAL發送進程的ID | | `usesysid` | `oid` | 登陸到這個WAL發送進程的用戶OID | | `usename` | `name` | 登陸到WAL發送進程的用戶名 | | `application_name` | `text` | 連接到這個WAL發送端的應用名 | | `client_addr` | `inet` | 客戶端連接到這個WAL發送端的IP地址,如果這個字段為null,它表明通過 服務器上Unix套接字連接客戶端。 | | `client_hostname` | `text` | 連接客戶端的主機名,通過`client_addr`的反向DNS查找報告。 并且當啟用[log_hostname](#calibre_link-1716)時,這個字段對于IP連接是非空的。 | | `client_port` | `integer` | 客戶端正在使用與WAL發送端連接的TCP端口號,或者如果使用Unix套接字則為`-1`。 | | `backend_start` | `timestamp with time zone` | 這個進程開始時的時間,比如當客戶端連接到這個WAL發送端時。 | | `state` | `text` | 當前WAL發送端狀態 | | `sent_location` | `text` | 在這次連接上發送的上次事務日志位置 | | `write_location` | `text` | 通過備用服務器寫入到磁盤的上次事務日志位置。 | | `flush_location` | `text` | 通過備用服務器刷新到磁盤的上次事務日志位置。 | | `replay_location` | `text` | 備用服務器上重播到數據庫的上次事務日志位置。 | | `sync_priority` | `integer` | 這個備用服務器被選為同步備用的優先級。 | | `sync_state` | `text` | 該備用服務器的同步狀態 | `pg_stat_replication`視圖包含每個WAL發送進程的每一行, 顯示發送端連接備用服務器有關復制的統計。列出只直接連接的備用; 沒有可用的下游備用服務器的信息。 **Table 27-12\. `pg_stat_database_conflicts`視圖** | 列 | 類型 | 描述 | | --- | --- | --- | | `datid` | `oid` | 數據庫的OID | | `datname` | `name` | 數據庫名稱 | | `confl_tablespace` | `bigint` | 由于刪除的表空間,已經取消的數據庫中的查詢數量 | | `confl_lock` | `bigint` | 由于鎖超時,已經取消的數據庫中的查詢數 | | `confl_snapshot` | `bigint` | 由于舊快照,已經取消的數據庫查詢數 | | `confl_bufferpin` | `bigint` | 由于保留區而取消的數據庫查詢數 | | `confl_deadlock` | `bigint` | 由于死鎖已經被取消的數據庫中的查詢數 | `pg_stat_database_conflicts`視圖將包含 每個數據庫的一行,顯示由于備用服務器恢復發生的沖突而取消查詢的數據庫范圍統計信息。 這種視圖將只包含備用服務器的信息,因為在主服務器上不會發生沖突。 ## 27.2.3\. 統計函數 查看統計的其他方式可以通過寫查詢設置,它使用相同的底層統計訪問功能用于 上面顯示的標準視圖。函數名稱的詳細信息,請參考標準的視圖定義。(例如, 在psql中你可以發出`\d+ pg_stat_activity`。) 每個數據庫統計的訪問函數以數據庫OID作為參數識別報告給數據庫。 每個表和索引函數看成表或索引的OID。每個函數統計采取一個函數OID。 請注意,只有當前數據庫中的表,索引,和函數可以看出這些功能。 統計收集相關的附加函數列在[Table 27-13](#calibre_link-1055)中。 **Table 27-13\. 附加統計函數** | 函數 | 返回類型 | 描述 | | --- | --- | --- | | ``pg_backend_pid()`` | `integer` | 服務器進程處理當前會話的進程ID | | ``pg_stat_get_activity`(``integer`) | `setof record` | 如果聲明為`NULL`,則返回特定PID后端信息記錄,或者系統中每個活動后端的記錄。 返回的字段是`pg_stat_activity`視圖中的子集。 | | ``pg_stat_clear_snapshot()`` | `void` | 丟棄當前數據庫快照 | | ``pg_stat_reset()`` | `void` | 所有當前數據庫統計計數器重置為零(需要超級用戶權限) | | ``pg_stat_reset_shared`(text)` | `void` | 重置一些集群范圍統計計數為零,依賴于參數(需要超級用戶權限)。 所有顯示在`pg_stat_bgwriter`視圖中的計數器調用`pg_stat_reset_shared('bgwriter')`將歸零。 | | ``pg_stat_reset_single_table_counters`(oid)` | `void` | 為當前數據庫中單一表或者索引重置統計為零(需要超級用戶權限) | | ``pg_stat_reset_single_function_counters`(oid)` | `void` | 當前數據庫中單一功能重置統計為零(需要超級用戶權限) | `pg_stat_get_activity`,`pg_stat_activity`視圖的基本功能返回 包含每個后端進程的所有可用信息的記錄集。有時獲取這些信息的子集更方便。 在這種情況下,可以使用每個后端統計訪問函數的舊設置。這些都顯示在 [Table 27-14](#calibre_link-1717)中。這些訪問函數使用后端ID號, 其范圍從一到當前活動后端數。 函數`pg_stat_get_backend_idset`提供便利方式產生調用這些函數的每個活動后端的每一行。 比如,顯示PID以及所有后端的當前查詢: ``` SELECT pg_stat_get_backend_pid(s.backendid) AS pid, pg_stat_get_backend_activity(s.backendid) AS query FROM (SELECT pg_stat_get_backend_idset() AS backendid) AS s; ``` **Table 27-14\. 每個后端統計函數** | 函數 | 返回類型 | 描述 | | --- | --- | --- | | ``pg_stat_get_backend_idset()`` | `setof integer` | 設置當前活動的后端ID號(從1到活動后端數) | | ``pg_stat_get_backend_activity(integer)`` | `text` | 后端最近查詢文本 | | ``pg_stat_get_backend_activity_start(integer)`` | `timestamp with time zone` | 最近查詢開始時間 | | ``pg_stat_get_backend_client_addr(integer)`` | `inet` | 連接后端的客戶端IP地址 | | ``pg_stat_get_backend_client_port(integer)`` | `integer` | 客戶端用于通訊的TCP端口號 | | ``pg_stat_get_backend_dbid(integer)`` | `oid` | 連接后端的數據庫OID | | ``pg_stat_get_backend_pid(integer)`` | `integer` | 后端進程ID | | ``pg_stat_get_backend_start(integer)`` | `timestamp with time zone` | 進程開始時間 | | ``pg_stat_get_backend_userid(integer)`` | `oid` | 登陸到后端的用戶OID | | ``pg_stat_get_backend_waiting(integer)`` | `boolean` | 如果后端正等待鎖則為真 | | ``pg_stat_get_backend_xact_start(integer)`` | `timestamp with time zone` | 當前事務的開始時間 |
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看