PostgreSQL 확장 관리

PostgreSQL에서 확장기능은 추가 기능, 연산자 또는 유형을 제공하는 모듈입니다. IBM Cloud® Databases for PostgreSQL에서 많은 확장기능을 사용할 수 있습니다. 이 기능을 사용하려면 서비스의 관리자 비밀번호를 설정한 다음, psql 을 통해 연결하십시오.

설치된 확장기능 나열

\dx 명령을 사용하여 데이터베이스에 설치된 모든 확장기능의 목록을 가져오십시오.

예를 들어, Databases for PostgreSQL 기본 데이터베이스에서 실행하는 경우 \dx의 출력에는 설치된 확장기능만 표시됩니다.

ibmclouddb=> \dx
                 List of installed extensions
  Name   | Version |   Schema   |         Description
---------+---------+------------+------------------------------
 plpgsql | 1.0     | pg_catalog | PL/pgSQL procedural language
(1 row)

확장기능 설치

데이터베이스에 확장 기능을 설치하려면 다음을 사용하십시오 CREATE EXTENSION. 예를 들어, ibmclouddb 데이터베이스에 pg_stat_statements 를 설치하려면 다음 명령을 사용하십시오:

ibmclouddb=> CREATE EXTENSION pg_stat_statements;
CREATE EXTENSION

확장 프로그램은 읽기 전용 ibm_extension 스키마에 설치됩니다. 스키마는 search_path 의 일부이므로 확장 개체는 스키마로 정규화할 필요가 없습니다. 데이터의 보안과 무결성을 보호하기 위해 public 스키마에서 ibm_extension 스키마로 변경하는 것이 필요합니다.

확장기능을 설치한 후 \dx 명령을 실행하면 확장기능이 테이블에 표시됩니다.

ibmclouddb=> \dx
                                             List of installed extensions
        Name        | Version |    Schema     |                              Description
--------------------+---------+---------------+------------------------------------------------------------------------
 pg_stat_statements | 1.10    | ibm_extension | track planning and execution statistics of all SQL statements executed
 plpgsql            | 1.0     | pg_catalog    | PL/pgSQL procedural language
(2 rows)

PostgreSQL의 데이터베이스 확장기능은 데이터베이스별로 관리됩니다. 확장 기능을 설치해야 할 데이터베이스가 여러 개인 경우, 각 데이터베이스에서 해당 CREATE 명령을 실행하십시오.

확장기능 업그레이드

현재 데이터베이스에서 더 새로운 버전이 사용 가능한 확장 프로그램을 나열하려면 다음 쿼리를 실행하십시오:

SELECT e.extname, e.extversion AS installed_version, a.default_version AS available_version
FROM pg_catalog.pg_extension AS e
JOIN pg_catalog.pg_available_extensions AS a ON a.name = e.extname
WHERE e.extversion <> a.default_version;

확장 기능을 업데이트하려면, 해당 확장 기능이 설치된 각 데이터베이스에서 다음 ALTER EXTENSION 명령을 실행하십시오:

ALTER EXTENSION <extension_name> UPDATE;

다음 확장자는 별도의 절차가 필요합니다:

  • pg_repack 확장 기능을 업그레이드하려면, 해당 확장 기능을 사용하는 각 데이터베이스에서 DROP EXTENSION pg_repack; 명령을 실행한 다음 CREATE EXTENSION pg_repack; 명령을 실행하십시오.
  • PostgreSQL 익명화 기능(anon)은 을 지원하지 않습니다 ALTER EXTENSION ... UPDATE. 업그레이드하려면 PostgreSQL 익명화 도구 업그레이드’를 참조하십시오.
  • 3.x 버전을 업데이트하면 4.0 버전으로 변경되며 pgRouting, 이 과정에서 몇 가지 기능이 제거됩니다. 업데이트하기 전에 다음을 참조하십시오 pgRouting.

확장기능 관련 참고사항

pg_repack

  • pg_repack 문서

  • pg_repack 명령을 실행할 때, 슈퍼유저 확인을 건너뛰려면 -k 플래그를 전달하십시오. 다음 예를 참조하십시오.

    pg_repack -k [OPTION]... [DBNAME]
    
  • 모든 사용자가 pg_repack을 실행할 수 있지만 이 명령은 권한이 있는 테이블만 다시 압축할 수 있습니다.

  • pg_repack은 재구성이 종료될 때 재구성 중인 오브젝트에 대해 배타적 잠금을 수행해야 합니다. 특정 기간 후에 이 잠금을 얻을 수 없으면 충돌하는 모든 조회를 취소합니다. 이를 수행할 수 없으면 재구성이 실패합니다. 기본적으로 관리자 사용자만 충돌하는 쿼리를 취소할 수 있습니다. 다른 데이터베이스 사용자가 쿼리를 취소할 수 있도록 하려면, 관리자 사용자 권한에서 해당 사용자에게 ‘ pg_signal_backend ’ 역할을 부여하십시오.

pgaudit

  • 이 서비스는 시작 시 pgaudit 라이브러리를 불러옵니다. pgaudit 확장자를 생성할 수 없으므로, 감사 로그의 DDL 항목에는 해당 개체의 유형과 이름이 포함되지 않습니다. pgaudit 로그를 활성화하려면 ‘ pgaudit 를 사용한 로깅’을 참조하십시오.

pgvector

  • 배포에 pgvector 확장자를 추가하려면 create extension vector 명령을 사용합니다.
  • PostgreSQL 중요: pgvector 버전 15 이상이 필요합니다.

사용 가능한 확장기능

사용 가능한 모든 확장 프로그램 목록을 보려면 다음을 참조하십시오. 배치에서 사용 가능한 확장기능의 목록을 보려면 SELECT name FROM pg_available_extensions;에서 psql를 사용하십시오.

ibmclouddb=> SELECT name FROM pg_available_extensions order by 1;
             name
------------------------------
 address_standardizer
 address_standardizer_data_us
 amcheck
 autoinc
 bloom
 btree_gin
 btree_gist
 citext
 cube
 dblink
 dict_int
 dict_xsyn
 earthdistance
 file_fdw
 fuzzystrmatch
 hstore
 insert_username
 intagg
 intarray
 isn
 lo
 ltree
 moddatetime
 old_snapshot
 pageinspect
 pg_buffercache
 pg_freespacemap
 pg_prewarm
 pg_repack
 pg_stat_statements
 pg_surgery
 pg_trgm
 pg_visibility
 pg_walinspect
 pgaudit
 pgcrypto
 pgrouting
 pgrowlocks
 pgstattuple
 plpgsql
 postgis
 postgis_raster
 postgis_tiger_geocoder
 postgis_topology
 postgres_fdw
 refint
 seg
 sslinfo
 tablefunc
 tcn
 tsm_system_rows
 tsm_system_time
 unaccent
 uuid-ossp
 xml2
(55 rows)
ibmclouddb=> select version();
                                                 version
----------------------------------------------------------------------------------------------------------
 PostgreSQL 16.6 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 11.5.0 20240719 (Red Hat 11.5.0-2), 64-bit
(1 row)