PostgreSQL 如何實現分割槽表的乙個小例子

2021-09-06 06:50:25 字數 1856 閱讀 2729

開始

postgresql 到目前為止,是不支援原生的分割槽表的,看看它如何實現:

要實現分割槽,需要借助繼承與規則。

postgres=# create

table ptest(id integer, name varchar(20

));create

table

postgres

=# create

table ctest01(check(id<

5000000

)) inherits (ptest);

create

table

postgres

=# create

table ctest02(check(id>=

5000000

)) inherits (ptest);

create

table

postgres=#

postgres

=# create

index

onctest01(id);

create

index

postgres

=# create

index

onctest02(id);

create

index

postgres=#

postgres=#

postgres

=# create

orreplace

function ptest_insert_trigger() returns

trigger

as$$

postgres$#

postgres$#

begin

postgres$#

postgres$#

if ( new.id <

5000000 ) then

postgres$#

insert

into ctest01 values (new.*

);postgres$# elsif ( new.id

>=

5000000 ) then

postgres$#

insert

into ctest02 values (new.*

); postgres$#

else

postgres$# raise exception

'error while inserting data';

postgres$#

endif

; postgres$#

postgres$#

return

null

;postgres$#

end; $$ language plpgsql;

create

function

postgres=#

postgres

=# create

trigger insert_ptest_trigger before insert

on ptest for

each row

postgres

-# execute

procedure

ptest_insert_trigger();

create

trigger

postgres

=#

其實如果從其他的表裡一次性地向分割槽表裡匯入資料,那麼最好先把 index 和 constraint 無效化。

結束

PostgreSQL 動態分表 Rotate輪詢

工作中,遇到如下業務需求 使用者可以自定義歷史資料的儲存期限,且對過期資料不作保留 即定期刪除 該類資料表的數量級在6千萬 年。前期處理方案 按月分表,由於在專案前期,限制使用者只能儲存一年的資料量,通過pg的rule分表,並通過一張中間表,進行新月份資料的錄入更替。簡單rotate用法,在月份更替...

Windows下實現PostgreSQL自動備份

本文介紹怎樣建立乙個windows批處理檔案來自動備份postgresql資料庫。背景 在我工作上乙個使用postgresql資料庫的專案上需要乙個自動化系統來每天執行備份。經過一番研究決定通過建立乙個windows批處理檔案並新增到windows計畫任務中來實現。下面是具體步驟 怎樣配置 第一步 ...

Jmeter 實現操作postgresql資料庫

環境 jmeter版本 3.2,jdk 1.8 postgresql驅動包postgresql 9.3 1103.jdbc4,將該jar包置於.apache jmeter 3.2 lib 檔案下 提取密碼 cb5h jmeter配置 1 新增配置元件 jdbc connection configur...