目錄
環境文件用途
詳細資訊
環境系統平台:n/a
版本:10.3
文件用途
postgresql v10 分割槽表的理解與使用
詳細資訊
分割槽表特性是pg10新加的乙個很重要的特性。
之前的版本也能實現分割槽表功能,是根據「繼承表+約束+規則或觸發器」實現。
相對於之前的分割槽實現方式,pg10的分割槽特性有以下優勢:
1)管理分割槽方便
2)資料插入效率高
事實上,pg10的分割槽特性也是在內建繼承表的基礎上實現的,所以建立的分割槽實質上也是普通的表結構。
目前pg10支援範圍分割槽和列表分割槽,雜湊分割槽還不支援。
範圍分割槽:
pg10的分割槽表在建表語法上,主表和分割槽是單獨建立的。下面的列表分割槽也是一樣。
建立主表語法:
create table 表名 ( [ [, ... ] ] )
partition by range ( [ [, ...] ] );
範圍分割槽的key值可由多個字段組成(最多32個字段)。
建立分割槽語法:
create table 表名 partition of 主表 for values
from [, ...]
to [, ...] [ tablespace 表空間名 ];
引數說明:
// from ... to 表示分割槽的起始值和結束值。
// minvalue / maxvalue 表示無限小值和無限大值。
// 預設from後面的值是包括值分割槽的約束內,to後面的值不包括。
示例:postgres=# create table test(n int) partition by range(n);
create table
postgres=# create table test_1 partition of test for values from (minvalue) to (10);
create table
postgres=# create table test_2 partition of test for values from (10) to (100);
create table
postgres=# create table test_3 partition of test for values from (100) to (1000);
create table
postgres=# create table test_4 partition of test for values from (1000) to (10000);
create table
postgres=# \d+ test
table "public.test"
column | type | collation | nullable | default | storage | stats target | descrip
tion
n | integer | | | | plain | |
partition key: range (n)
partitions: test_1 for values from (minvalue) to (10),
test_2 for values from (10) to (100),
test_3 for values from (100) to (1000),
test_4 for values from (1000) to (10000)
postgres=# \d+ test_2
table "public.test_2"
column | type | collation | nullable | default | storage | stats target | descrip
tion
n | integer | | | | plain | |
partition of: test for values from (10) to (100)
partition constraint: ((n is not null) and (n >= 10) and (n < 100))
postgres=# insert into test select generate_series(0, 9999);insert 0 10000
postgres=# explain analyze select * from test;
query plan
loops=1)
-> seq scan on test_1 (cost=0.00..35.50 rows=2550 width=4) (actual time=0.009..0
.014 rows=10 loops=1)
-> seq scan on test_2 (cost=0.00..35.50 rows=2550 width=4) (actual time=0.012..0
.044 rows=90 loops=1)
-> seq scan on test_3 (cost=0.00..35.50 rows=2550 width=4) (actual time=0.025..0
.441 rows=900 loops=1)
-> seq scan on test_4 (cost=0.00..142.00 rows=10200 width=4) (actual time=0.026.
.4.317 rows=9000 loops=1)
planning time: 0.248 ms
execution time: 14.503 ms
(7 rows)
更多詳細的資訊請登入【瀚高技術支援平台】檢視
mysql 5 6 分割槽 四 分割槽和鎖定
在mysql 5.6.5及更早版本中,對於 myisam執行dml或ddl語句時,實際執行表級鎖的 儲存引擎 影響分割槽表的這種語句對整個 施加了鎖定 也就是說,所有分割槽都被鎖定,直到語句完成。mysql 5.6.6實現 分割槽鎖定修剪 這在許多情況下消除了不必要的鎖定。在mysql 5.6.6及...
linux 學習7 0(分割槽)
mbr傳統 最多支援2t磁碟,因為磁碟定址空間只有32k 主分割槽 最多建立4個主分割槽 擴充套件分割槽 乙個擴充套件分割槽會占用乙個主分割槽位置,不能直接用 邏輯分割槽 linux最多支援63個ide分割槽和15個scsi分割槽 gpt,現代分割槽機制,定址空間64位 支援超過2t的磁碟 相容mb...
如何mount ext4 分割槽
mount t ext4 target path your.img mount dir 上面mount的時候有可能失敗 第一中,沒有許可權 sudo mount t ext4 target path your.img mount dir 第二中,由於你的your.img不是乙個真正的分割槽後者裝置 ...