MathJax

MathJax-2

MathJax-3

Google Code Prettify

置頂入手筆記

EnterproseDB Quickstart — 快速入門筆記

由於考慮採用 EnterpriseDB 或是直接用 PostgreSQL 的人,通常需要一些入手的資料。這邊紀錄便提供相關快速上手的簡單筆記 ~ 這篇筆記以 資料庫安裝完畢後的快速使用 為目標,基本紀錄登入使用的範例:

2022年3月8日 星期二

PGSQL 的 queryid 跟 planid 功能的外掛—pg_store_plans 筆記

 EDB/PGSQL 預設僅能透過 auto_explain 紀錄執行 SQL 的執行計畫到 DB Log 檔案內。

PGSQL 查看當前/歷史執行計畫的社群擴充外掛,可以直接以表查詢運行 SQL 的執行計畫,有以下兩個(截至 2022 年三月中為止):


1) 即時執行計畫:
https://www.cybertec-postgresql.com/en/products/pg-show-plans/
https://github.com/cybertec-postgresql/pg_show_plans
本外掛需要自行編譯,postgres 社群套件庫未提供,僅原廠 Cybertec 公司提供企業版支援。
不易自行打包成 RPM。

2) 歷史執行計畫:
https://ossc-db.github.io/pg_store_plans/
https://github.com/ossc-db/pg_store_plans
本外掛在 postgres 社群套件庫有提供(於 RHEL 7/8 系列都有提供),可以直接安裝到 Postgres 9.6~12(目前 PGSQL 13 尚未提供)。
https://download.postgresql.org/pub/repos/yum/srpms/9.6/redhat/rhel-8-x86_64/pg_store_plans96-1.3-1.rhel8.src.rpm
https://download.postgresql.org/pub/repos/yum/srpms/10/redhat/rhel-8-x86_64/pg_store_plans10-1.3-1.rhel8.src.rpm
https://download.postgresql.org/pub/repos/yum/srpms/12/redhat/rhel-7-x86_64/pg_store_plans_12-1.5-1.rhel7.src.rpm
https://download.postgresql.org/pub/repos/yum/srpms/12/redhat/rhel-8-x86_64/pg_store_plans12-1.3-1.rhel8.1.src.rpm


本處執行兩個測試:
1) 直接在 PGSQL10 測試本外掛
2) 使用 PGSQL 10 對應的 SRPM 打包 CentOS7 版本。
NOTE:筆記冰的有點久,從冰箱挖出來。。不過以下內容仍適用 PGSQL 13/14~
此外,在 PGSQL 14 開始,pg_stat_statements 的 queryid 變成全資料庫內通用標記了(透過 compute_query_id 啟用)~表示日後開始可以有更多可以解析 SQL 的套件出生~~(例如,現在已經有 EDB Wait States 惹~)



1) 在 PGSQL10 測試 pg_store_plans 外掛
安裝 PGSQL 10
lab@lxdlab:~$ lxc launch images:centos/8-Stream/amd64 pg10test
Creating pg10test
Starting pg10test
lab@lxdlab:~$ lxc shell pg10test 
[root@pg10test ~]# 
[root@pg10test ~]# yum install -y https://download.postgresql.org/pub/repos/yum/common/redhat/rhel-8-x86_64/pgdg-redhat-repo-42.0-15.noarch.rpm
[root@pg10test ~]# yum group install -y "PostgreSQL Database Server 10 PGDG"
[root@pg10test ~]# yum install -y pg_store_plans10
[root@pg10test ~]# /usr/pgsql-10/bin/postgresql-10-setup initdb

啟動資料庫
[root@pg10test ~]# cat << EOF >> /var/lib/pgsql/10/data/postgresql.auto.conf
listen_addresses = '*'
shared_preload_libraries = 'pg_stat_statements, pg_store_plans'
## pg_stat_statements parameters ##
track_io_timing = 'on'
track_activity_query_size = 2048
pg_stat_statements.max = '5000'
pg_stat_statements.track = 'all'
pg_stat_statements.track_utility = 'off'
pg_stat_statements.save = 'on'
# for PGSQL v13+
#pg_stat_statements.track_planning = 'on'
## pg_store_plans parameters ##
pg_store_plans.max = 5000
pg_store_plans.track = 'all'
#pg_store_plans.log_analyze = 'on'
pg_store_plans.plan_format = 'text'
pg_store_plans.save = 'on'
EOF
[root@pg10test ~]# echo "host    all             all             10.0.0.1/8            trust" >> /var/lib/pgsql/10/data/pg_hba.conf
[root@pg10test ~]# service postgresql-10 start

操作方式與 pg_stat_statements 相仿,兩個模組的紀錄可以透過 JOIN 搭配查看,但可能部份會對不到(因為兩模組都個別依照執行頻度踢掉紀錄)。
[postgres@pg10test ~]$ psql
psql (10.16)
Type "help" for help.

postgres=# create extension pg_store_plans ;
CREATE EXTENSION
postgres=# create extension pg_stat_statements ;
CREATE EXTENSION
postgres=# 

用 pgAdmin4 或 PEM 進入資料庫,就會一直有 SQL 在查詢,也就可以看到收集的執行計畫。

以下可見相同 SQL 但有出現不同執行計畫,就會呈現
postgres=# select queryid,count(*),array_agg(planid) from pg_store_plans group by queryid;
  queryid   | count |             array_agg             
------------+-------+-----------------------------------
  870497241 |     1 | {326764836}
 3056514800 |     1 | {366744036}
 2223656114 |     1 | {369124207}
 1366497725 |     1 | {2256220295}
 3362048751 |     1 | {1591066493}
   17924312 |     1 | {3889083815}
 2807979931 |     3 | {3212201675,2675583821,578668368}
 1392073256 |     1 | {2077619429}
 3188590383 |     1 | {1519639343}
  566170830 |     1 | {2540219339}
  977832272 |     1 | {2319805041}
 2264508040 |     1 | {2879024282}
  813094406 |     1 | {2346985086}
 3893981790 |     1 | {789787292}
  492750220 |     1 | {2881624998}
 1860639615 |     1 | {2351976881}
 2775272848 |     1 | {1013543676}
 3665923672 |     1 | {823136125}
 3789275969 |     1 | {3783548220}
 1968399307 |     1 | {3234485444}
  522778601 |     1 | {3285725950}
  251869620 |     1 | {880290592}
 3528998757 |     1 | {1349057335}
 2762998146 |     1 | {326764836}
 2876496726 |     1 | {1349057335}
 2200155994 |     1 | {3686786925}
 1854754214 |     1 | {940279134}
 1978911208 |     1 | {2928039650}
  485698078 |     1 | {2936965379}
 3893699259 |     1 | {2256220295}
(30 rows)

postgres=# 
postgres=# select queryid_stat_statements,count(*),array_agg(planid) from pg_store_plans group by queryid_stat_statements;
 queryid_stat_statements | count |             array_agg             
-------------------------+-------+-----------------------------------
              3904495550 |     1 | {2540219339}
              2477317934 |     1 | {2077619429}
              3010473354 |     1 | {3783548220}
              4209409695 |     1 | {2346985086}
              3026878440 |     1 | {789787292}
              2628992747 |     1 | {2936965379}
               233119972 |     1 | {326764836}
              3672445964 |     1 | {2879024282}
              1419723350 |     1 | {940279134}
               222437654 |     1 | {2928039650}
              2748804465 |     1 | {2351976881}
              3684979658 |     1 | {3889083815}
               747822837 |     1 | {880290592}
              1272991303 |     1 | {2256220295}
              3285735059 |     1 | {366744036}
              4115798515 |     1 | {2881624998}
               197681292 |     1 | {1349057335}
              3669709269 |     1 | {369124207}
               618259047 |     1 | {1349057335}
              3528871234 |     1 | {3285725950}
               503747558 |     1 | {326764836}
              1020996122 |     1 | {823136125}
               839159024 |     1 | {1591066493}
              2592892555 |     1 | {1013543676}
               115303691 |     1 | {2256220295}
              1149989536 |     1 | {2319805041}
              1725240158 |     1 | {3234485444}
              1742510132 |     1 | {3686786925}
              3271612687 |     1 | {1519639343}
               166385528 |     3 | {3212201675,2675583821,578668368}
(30 rows)

postgres=# 

2) 使用 PGSQL 10 對應的 SRPM 打包 CentOS7 版本。
準備編譯環境
lab@lxdlab:~$ lxc launch images:centos/7 pg10test
Creating pg10test
Starting pg10test
lab@lxdlab:~$ lxc shell pg10test
[root@pg10test ~]# yum install -y https://download.postgresql.org/pub/repos/yum/common/redhat/rhel-8-x86_64/pgdg-redhat-repo-42.0-15.noarch.rpm
[root@pg10test ~]# yum group install -y "PostgreSQL Database Server 10 PGDG"
[root@pg10test ~]# yum install -y postgresql10-devel
[root@pg10test ~]# export PATH=$PATH:/usr/pgsql-10/bin/
[root@pg10test ~]# pg_config --configure
'--enable-rpath' '--prefix=/usr/pgsql-10' '--includedir=/usr/pgsql-10/include' '--libdir=/usr/pgsql-10/lib' '--mandir=/usr/pgsql-10/share/man' '--datadir=/usr/pgsql-10/share' '--with-icu' '--with-perl' '--with-python' '--with-tcl' '--with-tclconfig=/usr/lib64' '--with-openssl' '--with-pam' '--with-gssapi' '--with-includes=/usr/include' '--with-libraries=/usr/lib64' '--enable-nls' '--enable-dtrace' '--with-uuid=e2fs' '--with-libxml' '--with-libxslt' '--with-ldap' '--with-selinux' '--with-systemd' '--with-system-tzdata=/usr/share/zoneinfo' '--sysconfdir=/etc/sysconfig/pgsql' '--docdir=/usr/pgsql-10/doc' '--htmldir=/usr/pgsql-10/doc/html' 'CFLAGS=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches   -m64 -mtune=generic' 'PKG_CONFIG_PATH=:/usr/lib64/pkgconfig:/usr/share/pkgconfig'
[root@pg10test ~]# 
[root@pg10test ~]# pg_config --version
PostgreSQL 10.16
[root@pg10test ~]# 
[root@pg10test ~]# yum group install -y "Development Tools"
[root@pg10test ~]# yum install -y epel-release centos-release-scl edb-as96-server-devel
[root@pg10test ~]# ##yum install -y llvm5.0-devel
[root@pg10test ~]# ##yum install -y llvm-toolset-7
[root@pg10test ~]# yum install -y rpm-build rpmdevtools
[root@pg10test ~]# 
[root@pg10test ~]# yum install -y https://download.postgresql.org/pub/repos/yum/common/redhat/rhel-7.0-x86_64/pgdg-srpm-macros-1.0.12-1.rhel7.x86_64.rpm
[root@pg10test ~]# rpm -ql pgdg-srpm-macros
/usr/lib/rpm/macros.d/macros.pgdg-postgresql
/usr/share/doc/pgdg-srpm-macros-1.0.12
/usr/share/doc/pgdg-srpm-macros-1.0.12/AUTHORS
/usr/share/licenses/pgdg-srpm-macros-1.0.12
/usr/share/licenses/pgdg-srpm-macros-1.0.12/COPYRIGHT
[root@pg10test ~]# 

以下開始編譯打包 RPM
[root@pg10test ~]# yum install -y wget tree
[root@pg10test ~]# wget https://download.postgresql.org/pub/repos/yum/srpms/10/redhat/rhel-8-x86_64/pg_store_plans10-1.3-1.rhel8.src.rpm
[root@pg10test ~]# rpm -ivh pg_store_plans10-1.3-1.rhel8.src.rpm
[root@pg10test ~]# tree ~/rpmbuild/
/root/rpmbuild/
|-- SOURCES
|   |-- 1.3.tar.gz
|   |-- README-pg_store_plans.txt
|   `-- pg_store_plans-pg10-makefile-pgxs.patch
`-- SPECS
    `-- pg_store_plans.spec

2 directories, 4 files
[root@pg10test ~]# 
[root@pg10test ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/pgsql-10/bin/
[root@pg10test ~]# rpmbuild --define='%pgmajorversion 10'  --define='pginstdir /usr/pgsql-%{pgmajorversion}'  -bb ~/rpmbuild/SPECS/pg_store_plans.spec 
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.gWpFgU
+ umask 022
+ cd /root/rpmbuild/BUILD
+ cd /root/rpmbuild/BUILD
+ rm -rf pg_store_plans-1.3
+ /usr/bin/gzip -dc /root/rpmbuild/SOURCES/1.3.tar.gz
+ /usr/bin/tar -xf -
+ STATUS=0
+ '[' 0 -ne 0 ']'
+ cd pg_store_plans-1.3
+ /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w .
+ echo 'Patch #0 (pg_store_plans-pg10-makefile-pgxs.patch):'
Patch #0 (pg_store_plans-pg10-makefile-pgxs.patch):
+ /usr/bin/cat /root/rpmbuild/SOURCES/pg_store_plans-pg10-makefile-pgxs.patch
+ /usr/bin/patch -p0 --fuzz=0
patching file Makefile
+ exit 0
Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.Tze5w3
+ umask 022
+ cd /root/rpmbuild/BUILD
+ cd pg_store_plans-1.3
+ /usr/bin/make USE_PGXS=1 -j4
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches   -m64 -mtune=generic -fPIC -fPIC -I. -I./ -I/usr/pgsql-10/include/server -I/usr/pgsql-10/include/internal  -D_GNU_SOURCE -I/usr/include/libxml2  -I/usr/include  -c -o pg_store_plans.o pg_store_plans.c
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches   -m64 -mtune=generic -fPIC -fPIC -I. -I./ -I/usr/pgsql-10/include/server -I/usr/pgsql-10/include/internal  -D_GNU_SOURCE -I/usr/include/libxml2  -I/usr/include  -c -o pgsp_json.o pgsp_json.c
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches   -m64 -mtune=generic -fPIC -fPIC -I. -I./ -I/usr/pgsql-10/include/server -I/usr/pgsql-10/include/internal  -D_GNU_SOURCE -I/usr/include/libxml2  -I/usr/include  -c -o pgsp_json_text.o pgsp_json_text.c
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches   -m64 -mtune=generic -fPIC -fPIC -I. -I./ -I/usr/pgsql-10/include/server -I/usr/pgsql-10/include/internal  -D_GNU_SOURCE -I/usr/include/libxml2  -I/usr/include  -c -o pgsp_explain.o pgsp_explain.c
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches   -m64 -mtune=generic -fPIC -fPIC -shared -o pg_store_plans.so pg_store_plans.o pgsp_json.o pgsp_json_text.o pgsp_explain.o -L/usr/pgsql-10/lib    -L/usr/lib64 -Wl,--as-needed -Wl,-rpath,'/usr/pgsql-10/lib',--enable-new-dtags -Wl,--build-id  
+ exit 0
Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.M3bjqf
+ umask 022
+ cd /root/rpmbuild/BUILD
+ '[' /root/rpmbuild/BUILDROOT/pg_store_plans10-1.3-1.el7.x86_64 '!=' / ']'
+ rm -rf /root/rpmbuild/BUILDROOT/pg_store_plans10-1.3-1.el7.x86_64
++ dirname /root/rpmbuild/BUILDROOT/pg_store_plans10-1.3-1.el7.x86_64
+ mkdir -p /root/rpmbuild/BUILDROOT
+ mkdir /root/rpmbuild/BUILDROOT/pg_store_plans10-1.3-1.el7.x86_64
+ cd pg_store_plans-1.3
+ /usr/bin/rm -rf /root/rpmbuild/BUILDROOT/pg_store_plans10-1.3-1.el7.x86_64
+ /usr/bin/make DESTDIR=/root/rpmbuild/BUILDROOT/pg_store_plans10-1.3-1.el7.x86_64 USE_PGXS=1 -j4 install
/usr/bin/mkdir -p '/root/rpmbuild/BUILDROOT/pg_store_plans10-1.3-1.el7.x86_64/usr/pgsql-10/lib'
/usr/bin/mkdir -p '/root/rpmbuild/BUILDROOT/pg_store_plans10-1.3-1.el7.x86_64/usr/pgsql-10/share/extension'
/usr/bin/install -c -m 755  pg_store_plans.so '/root/rpmbuild/BUILDROOT/pg_store_plans10-1.3-1.el7.x86_64/usr/pgsql-10/lib/pg_store_plans.so'
/usr/bin/mkdir -p '/root/rpmbuild/BUILDROOT/pg_store_plans10-1.3-1.el7.x86_64/usr/pgsql-10/share/extension'
/usr/bin/mkdir -p '/root/rpmbuild/BUILDROOT/pg_store_plans10-1.3-1.el7.x86_64/usr/pgsql-10/lib'
/usr/bin/install -c -m 644 .//pg_store_plans.control '/root/rpmbuild/BUILDROOT/pg_store_plans10-1.3-1.el7.x86_64/usr/pgsql-10/share/extension/'
/usr/bin/install -c -m 644 .//pg_store_plans--1.3.sql .//pg_store_plans--1.2--1.3.sql  '/root/rpmbuild/BUILDROOT/pg_store_plans10-1.3-1.el7.x86_64/usr/pgsql-10/share/extension/'
/usr/bin/install -c -m 755  pg_store_plans.so '/root/rpmbuild/BUILDROOT/pg_store_plans10-1.3-1.el7.x86_64/usr/pgsql-10/lib/'
+ /usr/bin/mkdir -p /root/rpmbuild/BUILDROOT/pg_store_plans10-1.3-1.el7.x86_64/usr/pgsql-10/doc/extension
+ /usr/bin/cp /root/rpmbuild/SOURCES/README-pg_store_plans.txt /root/rpmbuild/BUILDROOT/pg_store_plans10-1.3-1.el7.x86_64/usr/pgsql-10/doc/extension/README-pg_store_plans.md
+ /usr/lib/rpm/find-debuginfo.sh --strict-build-id -m --run-dwz --dwz-low-mem-die-limit 10000000 --dwz-max-die-limit 110000000 /root/rpmbuild/BUILD/pg_store_plans-1.3
extracting debug info from /root/rpmbuild/BUILDROOT/pg_store_plans10-1.3-1.el7.x86_64/usr/pgsql-10/lib/pg_store_plans.so
dwz: Too few files for multifile optimization
/usr/lib/rpm/sepdebugcrcfix: Updated 1 CRC32s, 0 CRC32s did match.
249 blocks
+ /usr/lib/rpm/check-buildroot
+ /usr/lib/rpm/redhat/brp-compress
+ /usr/lib/rpm/redhat/brp-strip-static-archive /usr/bin/strip
+ /usr/lib/rpm/brp-python-bytecompile /usr/bin/python 1
+ /usr/lib/rpm/redhat/brp-python-hardlink
+ /usr/lib/rpm/redhat/brp-java-repack-jars
Processing files: pg_store_plans10-1.3-1.el7.x86_64
Executing(%license): /bin/sh -e /var/tmp/rpm-tmp.JjFy4s
+ umask 022
+ cd /root/rpmbuild/BUILD
+ cd pg_store_plans-1.3
+ LICENSEDIR=/root/rpmbuild/BUILDROOT/pg_store_plans10-1.3-1.el7.x86_64/usr/share/licenses/pg_store_plans10-1.3
+ export LICENSEDIR
+ /usr/bin/mkdir -p /root/rpmbuild/BUILDROOT/pg_store_plans10-1.3-1.el7.x86_64/usr/share/licenses/pg_store_plans10-1.3
+ cp -pr LICENSE /root/rpmbuild/BUILDROOT/pg_store_plans10-1.3-1.el7.x86_64/usr/share/licenses/pg_store_plans10-1.3
+ exit 0
Provides: pg_store_plans10 = 1.3-1.el7 pg_store_plans10(x86-64) = 1.3-1.el7
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Requires: libc.so.6()(64bit) libc.so.6(GLIBC_2.14)(64bit) libc.so.6(GLIBC_2.2.5)(64bit) libc.so.6(GLIBC_2.3.4)(64bit) libc.so.6(GLIBC_2.4)(64bit) rtld(GNU_HASH)
Processing files: pg_store_plans10-debuginfo-1.3-1.el7.x86_64
Provides: pg_store_plans10-debuginfo = 1.3-1.el7 pg_store_plans10-debuginfo(x86-64) = 1.3-1.el7
Requires(rpmlib): rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(CompressedFileNames) <= 3.0.4-1
Checking for unpackaged file(s): /usr/lib/rpm/check-files /root/rpmbuild/BUILDROOT/pg_store_plans10-1.3-1.el7.x86_64
Wrote: /root/rpmbuild/RPMS/x86_64/pg_store_plans10-1.3-1.el7.x86_64.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/pg_store_plans10-debuginfo-1.3-1.el7.x86_64.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.QRVH58
+ umask 022
+ cd /root/rpmbuild/BUILD
+ cd pg_store_plans-1.3
+ /usr/bin/rm -rf /root/rpmbuild/BUILDROOT/pg_store_plans10-1.3-1.el7.x86_64
+ exit 0
[root@pg10test ~]# 

取出套件:
[root@pg10test ~]# ls ~/rpmbuild/RPMS/x86_64/                 
pg_store_plans10-1.3-1.el7.x86_64.rpm  pg_store_plans10-debuginfo-1.3-1.el7.x86_64.rpm
[root@pg10test ~]# 
lab@lxdlab:~$ lxc file pull pg10test/root/rpmbuild/RPMS/x86_64/pg_store_plans10-1.3-1.el7.x86_64.rpm  ~
lab@lxdlab:~$ lxc file pull pg10test/root/rpmbuild/RPMS/x86_64/pg_store_plans10-debuginfo-1.3-1.el7.x86_64.rpm  ~

安裝
[root@pg10test ~]# yum install -y ~/rpmbuild/RPMS/x86_64/pg_store_plans10-1.3-1.el7.x86_64.rpm


最後再講一次,在 PGSQL 14 開始,計算 queryid 的功能從 pg_stat_statements 移動到內部,因此之後的外掛都可以用一致的 queryid 去相互查照了。



這篇像是過年年糕一樣冰很久的筆記總算貼出來惹~


參考資料:

沒有留言:

張貼留言