分割槽的意思是把邏輯上的乙個大表分割成物理上的幾塊。分割槽可以提供若干好處:
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...