目前開發中用到的都是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更易用和更強大。