<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # F.28\. pg_stat_statements `pg_stat_statements`模塊提供一種跟蹤執行統計服務器執行的所有SQL語句的手段。 該模塊必須通過在`postgresql.conf`中添加`pg_stat_statements` 到[shared_preload_libraries](#calibre_link-576)來加載,因為它需要額外的共享內存。 這意味著添加或刪除這個模塊都需要重啟服務器。 ## F.28.1\. `pg_stat_statements` 視圖 該模塊聚集的統計通過一個名為`pg_stat_statements`的系統視圖使其可用。 這個模塊為每個不同的查詢、數據庫ID和用戶ID(取決于該模塊可以追蹤的不同語句的最大值) 包含一行。視圖的字段顯示在[Table F-20](#calibre_link-1367)中。 **Table F-20\. `pg_stat_statements` 字段** | 名字 | 類型 | 參考 | 描述 | | --- | --- | --- | --- | | `userid` | `oid` | `pg_authid`.oid | 執行該語句的用戶的OID | | `dbid` | `oid` | `pg_database`.oid | 執行該語句的數據庫的OID | | `query` | `text` | 有代表性的語句的文本 (多達 [track_activity_query_size](#calibre_link-1368) 字節) | | `calls` | `bigint` | 執行的次數 | | `total_time` | `double precision` | 該語句花費的總時間,以毫秒計 | | `rows` | `bigint` | 該語句恢復或影響的行的總數 | | `shared_blks_hit` | `bigint` | 該語句命中的共享塊緩存的總數 | | `shared_blks_read` | `bigint` | 該語句讀取的共享塊的總數 | | `shared_blks_dirtied` | `bigint` | 該語句弄臟的共享塊的總數 | | `shared_blks_written` | `bigint` | 該語句寫入的共享塊的總數 | | `local_blks_hit` | `bigint` | 該語句命中的本地塊緩存的總數 | | `local_blks_read` | `bigint` | 該語句讀取的本地塊的總數 | | `local_blks_dirtied` | `bigint` | 該語句弄臟的本地塊的總數 | | `local_blks_written` | `bigint` | 該語句寫入的本地塊的總數 | | `temp_blks_read` | `bigint` | 該語句讀取的臨時塊的總數 | | `temp_blks_written` | `bigint` | 該語句寫入的臨時塊的總數 | | `blk_read_time` | `double precision` | 該語句讀取塊花費的總時間,以毫秒計 (如果啟用了[track_io_timing](#calibre_link-1369),否則為0) | | `blk_write_time` | `double precision` | 該語句寫入塊花費的總時間,以毫秒計 (如果啟用了[track_io_timing](#calibre_link-1369),否則為0) | 這個視圖和函數`pg_stat_statements_reset`,只有在通過安裝 `pg_stat_statements`擴展特別安裝到的數據庫中可用。 不過,當`pg_stat_statements`模塊加載到服務器中時, 統計跟蹤該服務器中的所有數據庫,不管該視圖是否存在。 為了安全起見,不允許非超級用戶查看其它用戶執行的查詢的文本。不過, 如果視圖已經安裝到他們的數據庫中,那么他們可以看到統計。 可計劃的查詢(也就是,`SELECT`, `INSERT`, `UPDATE`, 和 `DELETE`)組合成為一個`pg_stat_statements`, 當它們根據一個內部哈希計算有相同的查詢結構時。典型的,如果兩個查詢語義上相等, 除了查詢中字面常量的值之外,我們認為這兩個查詢相同。工具命令(也就是,所有其他命令) 是直接基于它們的文本查詢字符串比較的。 當一個常量的值為了匹配其他查詢而忽略時,該常量在`pg_stat_statements` 的顯示中被`?`替代。查詢文本的剩余部分是第一個查詢特定散列值與 `pg_stat_statements`相關條目。 在一些情況下,帶有明顯不同文本的查詢可能合并到一個`pg_stat_statements`。 通常這只在語義相等的查詢上發生,但是有很小的可能哈希沖突導致不相關的查詢被合并到一個條目。 (不過,這對于屬于不同用戶或數據庫的查詢來說是不會發生的。) 因為哈希值是基于分析查詢的表示法之后來計算的,相反的也是可能的: 帶有相同文本的查詢可能表現為單獨的條目,如果它們因為一個因素的結果有不同的含義, 比如不同的`search_path`設置。 ## F.28.2\. 函數 `pg_stat_statements_reset() returns void` `pg_stat_statements_reset`拋棄所有`pg_stat_statements` 到目前為止收集的統計。缺省的,這個函數只能被超級用戶執行。 ## F.28.3\. 配置參數 `pg_stat_statements.max` (`integer`) `pg_stat_statements.max`是該模塊追蹤語句的最大值 (也就是,`pg_stat_statements`視圖中的最大行數)。 如果觀察了比這更多的不同的語句,則會拋棄執行最少的語句的信息。 缺省值是1000。這個參數只能在服務器啟動時設置。 `pg_stat_statements.track` (`enum`) `pg_stat_statements.track`控制哪個語句可以被該模塊計數。 聲明`top`來跟蹤頂級的語句(直接通過客戶端發出的語句)。`all` 也跟蹤嵌套的語句(比如包含在函數中的語句),或`none`禁用語句狀態收集。 缺省值是`top`。只有超級用戶可以更改這個設置。 `pg_stat_statements.track_utility` (`boolean`) `pg_stat_statements.track_utility`控制該模塊是否追蹤工具命令。 工具命令是除了`SELECT`, `INSERT`, `UPDATE` 和 `DELETE`的所有命令。缺省值是`on`。只有超級用戶可以更改這個設置。 `pg_stat_statements.save` (`boolean`) `pg_stat_statements.save`指定在服務器關閉時是否保存語句狀態。 如果是`off`,那么在服務器關閉時不保存狀態,在服務器啟動時也不重新加載。 缺省值是`on`。這個參數只可以在`postgresql.conf` 文件中或者服務器命令行中設置。 該模塊需要額外的共享內存總計大約為 `pg_stat_statements.max` `*` [track_activity_query_size](#calibre_link-1368)字節。請注意, 這個內存在該模塊加載時被消耗,即使`pg_stat_statements.track` 設置為`none`。 這些參數必須在`postgresql.conf`中設置。典型的用法是: ``` # postgresql.conf shared_preload_libraries = 'pg_stat_statements' pg_stat_statements.max = 10000 pg_stat_statements.track = all ``` ## F.28.4\. 示例輸出 ``` bench=# SELECT pg_stat_statements_reset(); $ pgbench -i bench $ pgbench -c10 -t300 bench bench=# \x bench=# SELECT query, calls, total_time, rows, 100.0 * shared_blks_hit / nullif(shared_blks_hit + shared_blks_read, 0) AS hit_percent FROM pg_stat_statements ORDER BY total_time DESC LIMIT 5; -[ RECORD 1 ]--------------------------------------------------------------------- query | UPDATE pgbench_branches SET bbalance = bbalance + ? WHERE bid = ?; calls | 3000 total_time | 9609.00100000002 rows | 2836 hit_percent | 99.9778970000200936 -[ RECORD 2 ]--------------------------------------------------------------------- query | UPDATE pgbench_tellers SET tbalance = tbalance + ? WHERE tid = ?; calls | 3000 total_time | 8015.156 rows | 2990 hit_percent | 99.9731126579631345 -[ RECORD 3 ]--------------------------------------------------------------------- query | copy pgbench_accounts from stdin calls | 1 total_time | 310.624 rows | 100000 hit_percent | 0.30395136778115501520 -[ RECORD 4 ]--------------------------------------------------------------------- query | UPDATE pgbench_accounts SET abalance = abalance + ? WHERE aid = ?; calls | 3000 total_time | 271.741999999997 rows | 3000 hit_percent | 93.7968855088209426 -[ RECORD 5 ]--------------------------------------------------------------------- query | alter table pgbench_accounts add primary key (aid) calls | 1 total_time | 81.42 rows | 0 hit_percent | 34.4947735191637631 ``` ## F.28.5\. 作者 Takahiro Itagaki `&lt;[itagaki.takahiro@oss.ntt.co.jp](mailto:itagaki.takahiro@oss.ntt.co.jp)&gt;`。 Peter Geoghegan `&lt;[peter@2ndquadrant.com](mailto:peter@2ndquadrant.com)&gt;`添加了查詢正常化。
                  <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>

                              哎呀哎呀视频在线观看