postgreSQL表分割槽使用方法

2021-08-17 07:15:13 字數 1774 閱讀 4932

分割槽的意思是把邏輯上的乙個大表分割成物理上的幾塊。分割槽可以提供若干好處:

1 提高查詢效能。

原因如下:

① 通過建立分割槽,索引所佔的空間減少,因此可以將高使用率的索引放入記憶體中,減少因磁碟讀寫索引造成的開銷;

② 可以將表中訪問率較高的行存放到單獨分割槽或少數幾個分割槽上,極大提公升查詢效能;

③ 通過建立分割槽,

在查詢或更新時,只需掃瞄資料所在的那個分割槽上的資料即可,避免整表掃瞄及

使用索引離散的訪問整個表造成的開銷,提公升效能;

④ 提公升更新和刪除資料的效能:

alter table比操作大量的資料要快的多。它同時還可以避免由於大量delete導致的vacuum超載。

那麼可以通過直接讀取或刪除那個分割槽以獲得巨大的效能提公升

2 節約

儲存裝置成本

通過建立分割槽,可以將很少使用的資料儲存到慢速儲存介質上。

前提條件:

表分割槽的優勢

通常只有在表可能會變得非常大的情況下才有價值。

多大的表會從分割槽中收益取決於具體的應用,但通常情況下,在表的大小

超過了資料庫伺服器的物理記憶體大小時需要進行表分割槽

3 postgresql的表分割槽技術

目前, 

postgresql支援通過表繼承進行分割槽。每個分割槽必須做為單獨乙個父表的子表進行建立。父表自身通常是空的,它的存在只是為了代表整個資料集。

具體來講,postgresql可以實現下面形式的分割槽:

① 範圍分割槽(按行分割槽)

表被乙個或者多個關鍵字段分割槽成"範圍",這些範圍在不同的分割槽裡沒有重疊。比如,我們可以為特定的商業物件根據資料範圍分割槽,或者根據識別符號範圍分割槽。

② 列表分割槽(按列分割槽)

明確地列出每個分割槽裡應該出現那些關鍵字值實現。

4 postgresql的表分割槽操作流程

要設定乙個分割槽的表,做下面的步驟:

5 示例

① 建立主表

create table users ( uid int not null primary key, name varchar(20));

② 建立分割槽表(必須繼承上面的主表)

create table users_0 ( check (uid >= 0 and uid< 100) ) inherits (users);

create table users_1 ( check (uid >= 100)) inherits (users);

③ 在分割槽表上建立索引,其實這步可以省略的哦

create index users_0_uidindex on users_0(uid);

create index users_1_uidindex on users_1(uid);

④ 建立規則rule

create rule users_insert_0 as

on insert to users where

(uid >= 0 and uid < 100)

do instead

insert into users_0 values (new.uid,new.name);

create rule users_insert_1 as

on insert to users where

(uid >= 100)

do instead

insert into users_1 values (new.uid,new.name);

postgresql表分割槽

pg的表分割槽實際就是所說的分表,pg的表分割槽的是採用繼承表的方式。表繼承所有父表的檢查與約束都會被子表繼承,主外來鍵關係不會。乙個子表可以繼承多個父表,修改父表的表結構時,大多數情況下也會修改子表的結構定義。分割槽表就是把邏輯上的乙個大表分割成物理上的幾個小塊。好處 1 delete資料更快,只...

Postgresql之分割槽表

參考 建立步驟 注意 以下針對10.0版本之前的用法,新版本見 1 建立主表。不用為該錶定義任何檢查限制,除非需要將該限制應用到所有的分割槽表中。同樣也無需為該錶建立任何索引和唯一限制。create table almart date key date,hour key smallint,clien...

postgresql中的分割槽表

在早期的版本中pg中的分割槽表都是通過繼承的方式建立的,通過繼承的方式來建立分割槽表的這種方式用起來不是很方便。mydb create table parent id int primary key,name varchar 100 create table mydb create index id...