日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

資源密集活動統計(pg_profile)

RDS PostgreSQL支持使用pg_profile插件來統計數據庫中資源密集型活動,用于分析優化數據庫。

您可以加入RDS PostgreSQL插件交流釘釘群(103525002795),進行咨詢、交流和反饋,獲取更多關于插件的信息。

插件簡介

此擴展基于PostgreSQL的統計視圖(pg_stat_statements)和社區插件(pg_stat_kcache), 完全使用PL/pgSQL編寫,無需任何外部庫或軟件,配合pg_cron插件即可實現資源密集活動的統計。

前提條件

RDS PostgreSQL實例需滿足以下要求:

  • 實例大版本為RDS PostgreSQL 10或以上版本。

    說明

    暫不支持RDS PostgreSQL 17。

  • 實例內核小版本為20230830或以上。

    重要

    20230830內核小版本之前已支持此插件,但為了規范插件管理,提升RDS PostgreSQL在插件側的安全防護,RDS計劃在內核版本迭代中陸續對部分存在安全風險的插件進行優化,部分插件在低內核小版本無法創建,更多信息,請參見【產品/功能變更】RDS PostgreSQL限制創建插件說明

    • 如果您的實例內核小版本低于20230830,且已經使用了此插件,則不影響使用。

    • 如果您首次創建或重新創建此插件,請升級內核小版本到最新。

  • 創建高權限賬號。

注意事項

  • 該插件必須先啟用pg_stat_statements插件,同時可以啟用pg_stat_kcache插件來提供更多信息收集功能。

  • 存儲采樣信息將會占用磁盤空間,該插件有自動清理機制,請注意數據保存。

  • 一次采樣較為耗時,無需頻繁采樣,推薦頻率為每小時1~2次。

創建和刪除插件

說明

推薦使用高權限賬號可以執行如下命令。

  • 創建插件

    CREATE EXTENSION pg_profile;
  • 刪除插件

    DROP EXTENSION pg_profile;

使用示例

本示例需要分別創建server數據庫和profile數據庫。

在采樣時,profile數據庫會向server數據庫發出一個請求,server數據庫收到請求后采樣自己的信息,再將采樣結果返回給profile,profile將收到的結果存儲在表中。這樣就可以從profile數據獲取其他數據庫的統計信息。

說明

profile數據庫和server數據庫可以創建在不同RDS PostgreSQL實例中,也可創建在同一實例中。

server數據庫

  1. 創建server數據庫。

    CREATE DATABASE server;
  2. 連接server數據庫并創建插件。

    \c server
    CREATE EXTENSION pg_stat_statements;
    CREATE EXTENSION pg_stat_kcache;
    說明

    系統讀寫信息統計(pg_stat_kcache)插件依賴pg_stat_statements插件,這兩個插件均需要在數據庫啟動時加載,請確保pg_stat_statementspg_stat_kcache已加入到shared_preload_libraries參數中。修改shared_preload_libraries參數方法請參見設置實例參數。

  3. 執行\dx查看插件創建詳情。

            Name        | Version |   Schema   |                              Description
    --------------------+---------+------------+------------------------------------------------------------------------
     pg_stat_kcache     | 2.2.1   | public     | Kernel statistics gathering
     pg_stat_statements | 1.9     | public     | track planning and execution statistics of all SQL statements executed
     ...

profile數據庫

  1. 創建profile數據庫。

    CREATE DATABASE profile;
  2. 連接profile數據庫并創建插件。

    \c profile
    CREATE EXTENSION plpgsql;
    CREATE EXTENSION dblink;
    CREATE EXTENSION pg_profile;
  3. 執行\dx查看插件創建詳情。

        Name    | Version |   Schema   |                         Description
    ------------+---------+------------+--------------------------------------------------------------
     dblink     | 1.2     | public     | connect to other PostgreSQL databases from within a database
     pg_profile | 4.0     | public     | PostgreSQL load profile repository and report builder
     plpgsql    | 1.0     | pg_catalog | PL/pgSQL procedural language
     ...
  4. 創建server連接。

    SELECT create_server('server', 'host=<server數據庫所在實例的連接地址> dbname=server port=<端口號> user=<server數據庫的高權限賬號> password=<賬號對應的密碼>');

    參數

    示例值

    參數說明

    server

    server

    連接名,自定義。

    host

    127.0.0.1

    server數據庫所在實例的連接地址。

    • 如果profile數據庫與server數據庫在同一實例中,則此參數固定配置為127.0.0.1。

    • 如果profile數據庫與server數據庫在相同VPC下的不同實例中,則此參數配置為server數據庫所在實例的內網地址。

    • 如果profile數據庫與server數據庫在不同VPC下的不同實例中:

    說明

    如何獲取實例的內外網地址,請參見查看或修改連接地址和端口。

    dbname

    server

    數據庫名。

    port

    3002

    server數據庫所在實例的端口。

    • 如果profile數據庫與server數據庫在同一實例,此參數通過SQL命令SHOW PORT;查詢獲取。

    • 如果profile數據庫與server數據庫在相同VPC下的不同實例中,則此參數配置為server數據庫所在實例的內網端口。

    • 如果profile數據庫與server數據庫在不同VPC下的不同實例中,則此參數配置server數據庫所在實例的公網端口。

    user

    test_user

    server數據庫所在實例的高權限賬號。

    password

    T123456!

    賬號對應的密碼。

    結果示例:

                                         show_servers
    ---------------------------------------------------------------------------------------
     (local,"dbname=profile port=3002",t,)
     (server,"host=127.0.0.1 dbname=server port=3002 user=test_user password=****",t,)
    (2 rows)
    說明

    創建server連接后,會自動創建一個profile數據庫的連接,即上述結果示例中的名為local的連接。

  5. 修改profile數據庫連接信息,配置密碼。

    SELECT set_server_connstr('local','host=127.0.0.1 dbname=profile port=3002 user=<profile數據庫的高權限賬號> password=<賬號對應的密碼>');

    參數

    示例值

    參數說明

    server

    local

    連接名,無需修改。

    host

    127.0.0.1

    固定為127.0.0.1。

    dbname

    profile

    數據庫名。

    port

    3002

    此參數通過SQL命令SHOW PORT;查詢獲取。

    user

    test_user

    profile數據庫所在實例的高權限賬號。

    password

    T123456!

    賬號對應的密碼。

  6. 初次進行數據采集。

    SELECT take_sample();

    結果示例:

           take_sample
    -------------------------
     (server,OK,00:00:00.52)
     (local,OK,00:00:00.51)
    (2 rows)
  7. 對server數據庫進行壓測后,再次進行采集。

    1. 在命令行窗口執行如下命令,對server數據庫進行壓測。

      說明

      如下命令需要在命令行窗口執行,請確保已安裝PostgreSQL客戶端,pgbench是在PostgreSQL上運行基準測試的簡單程序。該命令的更多用法,請參見PostgreSQL官方文檔

      pgbench -s 100 -i server -U test_user -h pgm-****.pg.rds.aliyuncs.com -p 5432

      參數

      示例值

      參數說明

      -s

      100

      100表示在pgbench_accounts表中創建10,000,000行數據。

      -i dbname

      server

      待進行測試的數據庫。

      -U

      test_user

      server數據庫所在實例的高權限賬號。

      -h

      pgm-****.pg.rds.aliyuncs.com

      server數據庫所在實例的連接地址。

      -p

      5432

      實例端口。

    2. 連接profile數據庫所在實例,再次進行數據采集。

      SELECT take_sample();
    3. 查看采集數據。

      SELECT * FROM show_samples('server');

      結果示例如下:

       sample |      sample_time       | sizes_collected | dbstats_reset | bgwrstats_reset | archstats_reset
      --------+------------------------+-----------------+---------------+-----------------+-----------------
            1 | 2022-09-30 02:14:07+00 | t               |               |                 |
            2 | 2022-09-30 02:16:59+00 | t               |               |                 |
            3 | 2022-09-30 02:17:58+00 | t               |               |                 |
  8. 將采集結果生成報告。

    您可以通過如下兩種方式將采集結果導出到本地。

    • 通過psql在profile數據庫中執行如下命令:

      \o report_2_3.html
      SELECT get_report('server',2,3);
    • 在本地命令行中執行如下命令:

      psql -Aqtc "SELECT profile.get_report('server',2,3)" -o report_server_2_3.html -d profile -h <profile數據庫所在實例的連接地址> -p 5432 -U <profile數據庫所在實例的高權限賬號>