PostgreSQL10基礎(4)插件安裝

安裝環境

數據庫:PostgreSQL10.4(已安裝)
操作系統:Centos7
安裝步驟

  1. 安裝

1.1 有網安裝

#安裝源
yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm
#安裝PG插件
yum install postgresql10-contrib
1.2 無網安裝

在有網絡的服務器下運行

#安裝源
yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm
#下載PG 插件RPM到tmp文件夾下
yum install --downloadonly --downloaddir=/tmp/ postgresql10-contrib

將tmp下rpm文件的內容拷貝到待安裝服務器下並安裝

rpm -i *.rpm
插件

常用插件列表

插件 用途
auth_delay 服務器在身份驗證失敗之前暫停,以使對數據庫密碼的暴力攻擊更加困難
auto_explain 自動記錄慢語句執行計劃的方法,無需手工運行EXPLAIN
chkpass 專爲存儲加密密碼而設計的數據類型,每次輸入密碼都會自動轉換爲加密形式,並且始終以加密方式存儲
DBLINK 建立和遠程數據庫的連接
file_fdw 可用於訪問服務器文件系統中的數據文件,或者在服務器上執行程序並讀取其輸出。數據文件或程序輸出必須採用可讀取的格式 COPY FROM
passwordcheck 檢查用戶的密碼,如果密碼被認爲太弱,它將被拒絕並且命令將以錯誤終止
pgcrypto 提供加密函數
pgrowlocks 顯示指定表的行鎖定信息
pg_stat_statements 提供了跟蹤服務器執行的所有SQL語句的執行統計信息的方法
UUID-OSSP 提供使用幾種標準算法之一生成通用唯一標識符(UUID)的功能
UUID-OSSP

安裝

#切換到postgres用戶
su postgres
#進入psql
psql
#安裝插件
CREATE EXTENSION “uuid-ossp”;
使用

https://www.postgresql.org/docs/10/static/uuid-ossp.html

常用函數 說明
uuid_generate_v1() 使用計算機的MAC地址和時間戳生成,不適用於某些對安全敏感的應用程序
uuid_generate_v1mc() 使用隨機多播MAC地址而不是計算機的真實MAC地址生成
uuid_generate_v4() UUID完全來自隨機數
pg_stat_statements

安裝

#切換到postgres用戶
su postgres
#進入psql
psql
#安裝插件
CREATE EXTENSION “pg_stat_statements”;
修改postgresql.conf,添加pg_stat_statements

#如果有其他預加載模塊,以逗號間隔
shared_preload_libraries = ‘pg_stat_statements’
重新啓動數據庫

權限

當pg_stat_statements被加載,它跟蹤整個服務器的所有數據庫的統計數據,爲了訪問和操作這些統計數據,該模塊提供了一個視圖 pg_stat_statements,以及實用功能pg_stat_statements_reset 和pg_stat_statements

視圖

pg_stat_statements

名稱 類型 參考 描述
userid oid pg_authid.oid 執行語句的用戶的OID
dbid oid pg_database.oid 執行語句的數據庫的OID
queryid bigint 內部散列碼,根據語句的分析樹計算得出
query text 有代表性的SQL文本
calls bigint 執行的次數
total_time double precision 總時間,以毫秒爲單位
min_time double precision 最短時間,以毫秒爲單位
max_time double precision 最長時間,以毫秒爲單位
mean_time double precision 平均時間,以毫秒爲單位
stddev_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 已啓用,否則爲零)
blk_write_time double precision 語句寫入塊的總時間(以毫秒爲單位)(如果 已啓用track_io_timing,否則爲零)
出於安全原因,只有超級用戶和pg_read_all_stats角色成員 才能看到SQL文本和queryid其他用戶執行的查詢。但是,其他用戶可以查看統計信息,如果視圖已經安裝在他們的數據庫中。

常用查詢

–總耗時Top100(平均時間大於0.5秒)
select u.rolname,d.datname,s.* from pg_stat_statements s left join pg_database d on s.dbid=d.oid
left join pg_roles u on s.userid = u.oid
where rolname!=‘postgres’ and mean_time>500 order by total_time desc limit 100

–最大Top100(平均時間大於0.5秒)
select u.rolname,d.datname,s.* from pg_stat_statements s left join pg_database d on s.dbid=d.oid
left join pg_roles u on s.userid = u.oid
where rolname!=‘postgres’ and mean_time>500 order by max_time desc limit 100

–平均耗時Top100(平均時間大於0.5秒)
select u.rolname,d.datname,s.* from pg_stat_statements s left join pg_database d on s.dbid=d.oid
left join pg_roles u on s.userid = u.oid
where rolname!=‘postgres’ and mean_time>500 order by mean_time desc limit 100

–清除統計記錄
select pg_stat_statements_reset()
函數

函數 說明
pg_stat_statements_reset() returns void 丟棄到目前爲止收集的所有統計數據pg_stat_statements。默認情況下,該功能只能由超級用戶執行
pg_stat_statements(showtext boolean) returns setof record 該pg_stat_statements視圖是根據一個也被命名的函數定義的pg_stat_statements。客戶端可以pg_stat_statements直接調用該函數,並通過指定showtext := false查詢文本被忽略(也就是說OUT,與視圖query列相對應的參數 將返回空值)。此功能旨在支持可能希望避免重複檢索長度不確定的查詢文本的開銷的外部工具。這些工具可以替代地緩存爲每個條目本身觀察到的第一個查詢文本,因爲這 pg_stat_statements本身就是自己做的,然後只根據需要檢索查詢文本。由於服務器將查詢文本存儲在文件中,因此此方法可能會減少重複檢查pg_stat_statements數據的物理I / O。
配置參數

postgresql.conf中配置

參數 說明
pg_stat_statements.max(integer) 跟蹤的語句的最大數量(即pg_stat_statements視圖中的最大行數)。如果觀察到比這更明顯的語句,則丟棄關於最少執行的語句的信息。默認值爲5000.此參數只能在服務器啓動時設置。
pg_stat_statements.track(enum) 控制哪些語句由模塊計數。指定top跟蹤頂級語句(由客戶端直接發佈的語句),all還可以跟蹤嵌套語句(例如在函數中調用的語句),或者none禁用語句統計信息收集。默認值是top。只有超級用戶可以更改此設置。
pg_stat_statements.track_utility(boolean) 是否跟蹤SELECT,INSERT, UPDATE和DELETE外的其他命令。默認值是on。只有超級用戶可以更改此設置。
pg_stat_statements.save(boolean) 指定是否跨服務器關閉保存語句統計信息。如果是,off那麼統計數據不會在關機時保存,也不會在服務器啓動時重新加載。默認值是 on

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章