PostgreSQL之 使用擴展Extension


   目前開發中用到的都是PostgreSQL的一些基本的功能,無意間查到PostgreSQL還支持Extension,不僅源碼包中自帶有Extension,還有一些其他非官方的Extension。現在不用,記錄一下,以后碰到問題時希望自己能想起來,也是一個思路吧。

        pg_partman 是 PostgreSQL 的一個擴展插件,用於創建和管理基於時間或者基於序列的表分區。也支持多級子分區。

        PG-Strom 是 PostgreSQL 的一個擴展,作為 custom-scan provider。PG-Strom 的目的是利用其龐大的並行執行能力,解放 GPU 設備的一些 CPU 密集工作流。GPU 在處理器核心數量(通常是幾百 - 幾千)和更大的 RAM 帶寬(通常比 CPU 大幾倍容量)上有優勢。在同時處理大規模數值操作的時候最高效。

        查了一下,甚至有些支持中文分詞,和ES的功能一樣了,我覺得入庫速度上和查詢速度上和ES應該還達不到一個數量級。

 

        原文:https://blog.csdn.net/u012736152/article/details/81874884

        Postgresql官方的建議是單表大小超過了服務器內存大小可以考慮分區(大概的了解了下按照現代的服務器物理性能,單表大小不超過32GB,兩千萬記錄)。

        postgresql在9.6以前的版本就支持分區,但都是基於觸發器性能並不是很好,pg10目前內置了分區但根據pg社區里的一些測試看出pg10分區性能不如pg_pathman。這里主要測試pg_pathman的range分區

        

   原文鏈接: https://blog.csdn.net/pg_hgdb/article/details/79490509

  

  PostgreSQL被設計為易於擴展。因此,加載到數據庫中的擴展功能就可以像內置的特性一樣運行。
  與源代碼一起發布的contrib/ 目錄包含一些擴展。擴展是獨立開發的,比如PostGIS。甚至PostgreSQL復制解決方案也可以在外部開發。

  例如,Slony-I是一個受歡迎的主/備用復制解決方案,它是獨立於核心項目開發的。

  PG源代碼中包含的擴展列表參考:
  https://www.postgresql.org/docs/9.6/static/contrib.html

  PostgreSQL引入了一種方式來安裝contrib模塊,稱為擴展(extensions)。
  此方法適用於所有使用擴展規范構建的contrib模塊,包括如下:
  擴展SQL文件( extension_name.sql )
  擴展控制文件 ( extension_name.control )
  擴展庫文件(extension_name.so)

 

  找到系統中的contrib模塊
  檢查你是否安裝了contrib模塊的一個好方法是查看pgbench程序是否可用。pgbench是安裝了完整程序的少數contrib組件之一,而不僅僅只是你可以使用的一個腳本。以下是在UNIX系統中檢查pgbench的示例:
  $ pgbench -V

  pgbench (PostgreSQL) 9.6

  在大多數Linux系統中,如果用戶使用的是RPM或DEB打包版本的PostgreSQL,則可選的postgresql-contrib軟件包中包含所有contrib模塊及其關聯的安裝程序腳本。如果尚未安裝,你可能需要使用yum,apt-get或類似的機制添加此軟件包。在Solaris系統上,這個軟件包名為SUNWpostgr-contrib。

  我們來看下面的命令,請注意必須用超級用戶執行:
  CREATE EXTENSION extension_name: 此命令將安裝一個名為extension_name的新擴展
  ALTER EXTENSION extension name: 此命令將更改擴展名,大多用於升級擴展。
  DROP EXTENIONS extension_name: 在清理操作完成后,此命令用於刪除一個擴展。

  以上命令不能執行或執行報異常,一種可能是contrib模塊沒有執行編譯安裝,可以到contrib/目錄下執行

  make&make install完成編譯安裝后在嘗試執行以上命令。

  示例:
  cd /software/postgresql-9.5.7/contrib
  make
  make install

  testdb=# create extension pg_buffercache;
  CREATE EXTENSION

  testdb=# \dx
                        List of installed extensions
        Name      | Version |   Schema   |           Description           
  ----------------+---------+------------+---------------------------------
   pg_buffercache | 1.1     | public     | examine the shared buffer cache
   pgstattuple    | 1.3     | public     | show tuple-level statistics
   plpgsql        | 1.0     | pg_catalog | PL/pgSQL procedural language

  (3 rows)

  這里新添加的擴展屬於public模式,另外pg_catalog這個schema是PostgreSQL默認的元數據schema,所有的元數據都在這里。創建在pg_catalog里面的擴展優先級最高,所有用戶可見。


  可以運行如下指令指定或修改擴展的所屬模式:

  create extension extension_name with schema pg_catalog;
  alter extension extension_name set schema pg_catalog;  

  示例:
  testdb=# alter extension pg_buffercache set schema pg_catalog;
  ALTER EXTENSION

  testdb=# \dx
                        List of installed extensions
        Name      | Version |   Schema   |           Description           
  ----------------+---------+------------+---------------------------------

   pg_buffercache | 1.1     | pg_catalog | examine the shared buffer cache
   pgstattuple    | 1.3     | public     | show tuple-level statistics
   plpgsql        | 1.0     | pg_catalog | PL/pgSQL procedural language

  testdb=# drop extension pg_buffercache ;
  DROP EXTENSION

 

  testdb=# \dx
                     List of installed extensions
      Name     | Version |   Schema   |         Description          
  -------------+---------+------------+------------------------------
  pgstattuple | 1.3     | public     | show tuple-level statistics
  plpgsql     | 1.0     | pg_catalog | PL/pgSQL procedural language


  (2 rows)
  擴展被添加到每個登錄的數據庫上,如果讓每個數據庫都可調用擴展模塊,需要再每個庫上執行create extension,也可以在模板庫template1 上創建后,作為新建數據庫的拷貝。
  除了PostgreSQL核心自帶的程序、contrib模塊和pgFoundry上提供的軟件之外,還可以從互聯網上獲取許多其他程序,以使PostgreSQL更易用和更強大。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM