▼▼▼
[root@test-telepg-01 ~]# su - telepg
[telepg@test-telepg-01 ~]$ cd /tmp
[telepg@test-telepg-01 tmp]$ wget https://codeload.github.com/darold/pgtt/tar.gz/v2.1
[telepg@test-telepg-01 tmp]$ tar -zxvf pgtt-2.1.tar.gz
[telepg@test-telepg-01 tmp]$ cd pgtt-2.1
▼▼▼
export POSTGRES_HOME=/app/pg/pg_2_18803/postgresql
export ORACLE_HOME=/opt/oracle/product/18c/dbhome_1
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$POSTGRES_HOME/lib:$POSTGRES_HOME/lib/postgresql:$POSTGRES_HOME/plugin:$ORACLE_HOME/lib
export PROJ_LIB="$POSTGRES_HOME/share/proj"
export PATH=$PATH:$POSTGRES_HOME/bin
編譯安裝
▼▼▼
[telepg@test-telepg-01 pgtt-2.1]$ make
[telepg@test-telepg-01 pgtt-2.1]$ make install
查看三個(gè)pgtt相關(guān)文件(有證明編譯安裝好了,可以下一步,否則沒(méi)有編譯安裝好,需要重新編譯安裝)
▼▼▼
[telepg@test-telepg-01 pgtt-2.1]$ ll /app/pg/pg_2_18803/postgresql/share/postgresql/extension/pgtt*
-rw-r--r-- 1 telepg telepg 824 Apr 2 14:47 /app/pg/pg_2_18803/postgresql/share/postgresql/extension/pgtt--2.1.0.sql
-rw-r--r-- 1 telepg telepg 177 Apr 2 14:47 /app/pg/pg_2_18803/postgresql/share/postgresql/extension/pgtt.control
[telepg@test-telepg-01 pgtt-2.1]$ ll /app/pg/pg_2_18803/postgresql/lib/postgresql/pgtt.so
-rwxr-xr-x 1 telepg telepg 43520 Apr 2 14:47 /app/pg/pg_2_18803/postgresql/lib/postgresql/pgtt.so
非超級(jí)用戶使用臨時(shí)表需做如下設(shè)置
▼▼▼
[telepg@test-telepg-01 pgtt-2.1]$ export libdir=$(pg_config --pkglibdir)
[telepg@test-telepg-01 pgtt-2.1]$ sudo mkdir $libdir/plugins/
[telepg@test-telepg-01 pgtt-2.1]$ cd $libdir/plugins/
--進(jìn)不去就用root用戶進(jìn)/app/pg/pg_2_18803/postgresql/lib/postgresql/plugins/
▼▼▼
[telepg@test-telepg-01 pgtt-2.1]$ sudo ln -s ../pgtt.so/
[root@test-telepg-01 plugins]# ll pgtt.so
lrwxrwxrwx 1 root root 10 Apr 2 14:58 pgtt.so -> ../pgtt.so
運(yùn)行單元測(cè)試用例
▼▼▼
$ make installcheck
/opt/pg122/lib/postgresql/pgxs/src/makefiles/../../src/test/regress/pg_regr ess ‐‐inputdir=.
/ ‐‐bindir=/opt/pg122/bin ‐‐inputdir=test ‐‐dbname=cont rib_regression
00_init 01_oncommitdelete 02_oncommitpreserve 03_createont runcate 04_rename
05_useindex 06_createas 07_createlike 08_plplgsql 09_tr ansaction 10_foreignkey 11_partition
(using postmaster on Unix socket, port 6000)
============== dropping database "contrib_regression" ============== DROP DATABASE
============== creating database "contrib_regression" ============== CREATE DATABASE
ALTER DATABASE
============== running regression test queries test 00_init ... ok 44 ms
test 01_oncommitdelete test 02_oncommitpreserve test 03_createontruncate
ok 39 ms
ok 35 ms
ok 40 ms
test 04_rename test 05_useindex test 06_createas test 07_createlike test 08_plplgsql
ok 63 ms
ok 52 ms
ok 37 ms
ok 54 ms
ok 40 ms
test 09_transaction test 10_foreignkey test 11_partition
ok 40 ms
ok 15 ms
ok 8 ms
======================
All 12 tests passed.
======================
單個(gè)數(shù)據(jù)庫(kù)永久啟用(off為關(guān)閉)
▼▼▼
su - telepg
cd /app/telepg
. p3_18803env
c sscyy
alter database sscyy set pgtt.enabled to on;
Session級(jí)別的啟用(off為關(guān)閉)
▼▼▼
set pgtt.enabled to on;
創(chuàng)建擴(kuò)展插件
▼▼▼
c sscyy
create extension pgtt;
▼▼▼
postgres=# c ksl ksl
ksl=> show search_path;
search_path
‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
"$user", public
(1 row)
----加載動(dòng)態(tài)庫(kù)文件,數(shù)據(jù)庫(kù)重啟之后需要重新load
ksl=> load $libdir/plugins/pgtt;
LOAD
ksl=> show search_path;
search_path
‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
public,pgtt_schema
(1 row)
-----使用load加載之后自動(dòng)的修改了search_path
-----同時(shí)需要注意pgtt_schema要放在最后。
CREATE /*GLOBAL*/ TEMPORARY TABLE test(
id integer,
lbl text
) ON COMMIT PRESERVE ROWS;
ksl=> insert into test values(1,data1);
INSERT 0 1
ksl=> select * from test;
id | lbl
‐‐‐‐+‐‐‐‐‐‐‐
1 | data1
(1 row)
再打開(kāi)一個(gè)session連接查看
▼▼▼
postgres=# set search_path to public,pgtt_schema;
SET
postgres=# c ksl ksl
ksl=> select * from test;
id | lbl
‐‐‐‐+‐‐‐‐‐
(0 rows)
▼▼▼
ksl=> load$libdir/plugins/pgtt
LOAD
CREATE /*GLOBAL*/ TEMPORARY TABLE test2 (
id integer, lbl text
) ON COMMIT DELETE ROWS;
ksl=> begin;
BEGIN
ksl=> insert into test2 values(2,data2);
INSERT 0 1
ksl=> select * from test2;
id | lbl
‐‐‐‐+‐‐‐‐‐‐‐
2 | data2
(1 row)
ksl=> commit;
COMMIT
ksl=> select * from test2;
id | lbl
‐‐‐‐+‐‐‐‐‐
(0 rows)
與刪除普通表沒(méi)有任何區(qū)別,需要超級(jí)用戶權(quán)限
▼▼▼
ksl# load ’$libdir/plugins/pgtt
LOAD
ksl=# drop table test2 ;
DROP TABLE
同時(shí)需要檢查下pg_global_temp_tables表是否刪除成功
select * from pg_global_temp_tables where relname=test2;
需要超級(jí)用戶權(quán)限
▼▼▼
ksl=# CREATE INDEX ON test (id);
CREATE INDEX
ksl=# d test
Unlogged table "pgtt_schema.test"
Column | Type | Collation | Nullable | Default
‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐
id | integer | | |
lbl | text | | |
Indexes:
”test_id_idx”btree (id)
▼▼▼
ksl=> load$libdir/plugins/pgtt’
LOAD
CREATE /*GLOBAL*/ TEMPORARY TABLE test3 (
c1 serial PRIMARY KEY,
c2 VARCHAR (50) UNIQUE NOT NULL,
c3 boolean DEFAULT false
);
但不支持外鍵(也不支持分區(qū)表)
▼▼▼
CREATE /*GLOBAL*/ TEMPORARY TABLE test4 (
c1 int,
FOREIGN KEY (c1) REFERENCES tb1 (id)
);
ERROR: attempt to create referential integrity constraint on global tempora ry table
CONTEXT: SQL statement "CREATE UNLOGGED TABLE pgtt_schema.test4 ( c1 int,
FOREIGN KEY (c1) REFERENCES tb1 (id)
)"
普通用戶使用安裝的時(shí)候需要?jiǎng)?chuàng)建軟連接(見(jiàn)配置)。
每次創(chuàng)建全局臨時(shí)表需要先load。
該插件支持約束,不支持外鍵和分區(qū)表。
全局臨時(shí)表建議不要隨便drop,當(dāng)然沒(méi)有用過(guò)的全局臨時(shí)表隨便drop。
更多精彩干貨分享
點(diǎn)擊下方名片關(guān)注
IT那活兒
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/129923.html
摘要:所有節(jié)點(diǎn)中分為三種角色全局事務(wù)管理器協(xié)調(diào)器和數(shù)據(jù)節(jié)點(diǎn)。一旦故障,整個(gè)集群立刻無(wú)法訪問(wèn),此時(shí)可以切換到節(jié)點(diǎn)上。 第一節(jié) 簡(jiǎn)介Postgres-XL是一款開(kāi)源的PG集群軟件,XL代表eXtensible Lattice,即可擴(kuò)展的PG格子之意,以下簡(jiǎn)稱PGXL。官方稱其既適合寫(xiě)操作壓力較大的OLTP應(yīng)用,又適合讀操作為主的大數(shù)據(jù)應(yīng)用。它的前身是Postgres-XC(簡(jiǎn)稱PGXC),...
摘要:使用數(shù)據(jù)庫(kù)會(huì)自動(dòng)的根據(jù)從某幾個(gè)片中讀取數(shù)據(jù)。更加詳細(xì)的請(qǐng)參考德哥文章 官方地址:https://github.com/postgrespr...關(guān)于pathman的原理和優(yōu)化問(wèn)題,請(qǐng)移步至https://yq.aliyun.com/article... 檢查環(huán)境變量如果直接執(zhí)行psql命令提示command not found則執(zhí)行下面的命令設(shè)置環(huán)境變量 root@host# PA...
摘要:和進(jìn)程的啟動(dòng)過(guò)程類似,啟動(dòng)過(guò)程有種進(jìn)程角色啟動(dòng)進(jìn)程進(jìn)程和進(jìn)程。直到請(qǐng)求到來(lái),將連接賦值給對(duì)象的字段。注當(dāng)進(jìn)程執(zhí)行完后會(huì)再次調(diào)用函數(shù),準(zhǔn)備監(jiān)聽(tīng)新的請(qǐng)求。當(dāng)讀取到的時(shí),會(huì)調(diào)用函數(shù)對(duì)進(jìn)行解析,將中的以及存儲(chǔ)到結(jié)構(gòu)體中。 運(yùn)營(yíng)研發(fā)團(tuán)隊(duì) 季偉濱 一、前言 前幾天的工作中,需要通過(guò)curl做一次接口測(cè)試。讓我意外的是,通過(guò)$_POST竟然無(wú)法獲取到Content-Type是application...
摘要:是一款開(kāi)源的數(shù)據(jù)庫(kù),支持標(biāo)準(zhǔn),用戶可以通過(guò)驅(qū)動(dòng)連接進(jìn)行應(yīng)用程序開(kāi)發(fā)。本文就針對(duì)如何擴(kuò)展功能,實(shí)現(xiàn)對(duì)接進(jìn)行介紹。直接在中修改配置文件,只能在當(dāng)前中生效,重新登錄需要重新設(shè)置。 PostgreSQL是一款開(kāi)源的SQL數(shù)據(jù)庫(kù),支持標(biāo)準(zhǔn)SQL,用戶可以通過(guò)JDBC驅(qū)動(dòng)連接PostgreSQL進(jìn)行應(yīng)用程序開(kāi)發(fā)。用戶通過(guò)擴(kuò)展PostgreSQL功能,讓開(kāi)發(fā)者可以使用SQL語(yǔ)句訪問(wèn)SequoiaDB...
摘要:每個(gè)服務(wù)由多個(gè)進(jìn)程組成,為首的進(jìn)程名為。服務(wù)使用字節(jié)長(zhǎng)的內(nèi)部事務(wù)標(biāo)識(shí)符,即時(shí)發(fā)生重疊后仍然繼續(xù)使用,這會(huì)導(dǎo)致問(wèn)題,所以需要定期進(jìn)行操作。操作被認(rèn)為是緊跟操作后的操作。在涉及高比例插入刪除的表中,會(huì)造成索引膨脹,這時(shí)候可以重建索引。 簡(jiǎn)介和認(rèn)知 發(fā)音 post-gres-q-l 服務(wù)(server) 一個(gè)操作系統(tǒng)中可以啟動(dòng)多個(gè)postgres服務(wù)。每個(gè)服務(wù)由多個(gè)進(jìn)程組成,為首的進(jìn)程名為p...
摘要:自定義配置文件鏡像的配置文件路徑為如需自定義配置文件,自行掛載即可。配置項(xiàng)手冊(cè)管理網(wǎng)關(guān)的的使用教程這里就不寫(xiě)了,自行覓食吧簡(jiǎn)單的看看下面這篇可以的集成插件服務(wù)網(wǎng)關(guān) Kong 鏡像: https://hub.docker.com/_/kong 官網(wǎng)給定的用戶安裝手冊(cè)上并沒(méi)有設(shè)置 PG 的密碼,導(dǎo)致如下問(wèn)題無(wú)法啟動(dòng) nginx: [error] init_by_lua error: /us...
閱讀 1356·2023-01-11 13:20
閱讀 1707·2023-01-11 13:20
閱讀 1215·2023-01-11 13:20
閱讀 1906·2023-01-11 13:20
閱讀 4165·2023-01-11 13:20
閱讀 2757·2023-01-11 13:20
閱讀 1402·2023-01-11 13:20
閱讀 3671·2023-01-11 13:20