Atitit pg10分區(qū)
Atitit pg10分區(qū) 總結(jié)
1.1. create table tmp_log (? 1
1.2. -創(chuàng)建索引 1
1.3. 查看表 in pgadmin4 2
2. 二 分區(qū)表管理 2
2.1. --分區(qū)表管理:斷開分區(qū) 2
2.2. --分a區(qū)表管理:連接分區(qū) 3
2.3. --分區(qū)表管理:刪除分區(qū) 3
3. 三、參考 3
?
?
?
1.1.?creaate table tmp_log (?
? id serial,
? create_time timestamp(0)?without time zone,?
? remark char(1)
)?partition by?RANGE(create_time);
?
CREATE TABLE tmp_log_p2016_befor PARTITION OF tmp_log FOR VALUES FROM (UNBOUNDED)??TO ('2016-01-01');
CREATE TABLE tmp_log_p201601 PARTITION OF tmp_log FOR VALUES FROM ('2016-01-01')?TO ('2016-02-01');
?
?
?
1.2.?-創(chuàng)建索引
create index idx_tmp_log_p2016_befor_ctime on tmp_log_p2016_befor using?btree (create_time);
create index idx_tmp_log_p201601_ctime on tmp_log_p201601 using?btree (create_time);
?
?
索引只能在分區(qū)字表是上查看。。
?
,注意 constraint_exclusion 設(shè)備成 partition ;目前分區(qū)上的索引、約束、主鍵需要使用單獨(dú)的命令創(chuàng)建。
?
1.3.?查看表 in pgadmin4
?
?
?
2.?二 分區(qū)表管理2.1.?--分區(qū)表管理:斷開分區(qū)
francs=>?alter table tmp_log DETACH PARTITION tmp_log_p201702;
ALTER TABLE
備注:DETACH 操作是指將分區(qū)從分區(qū)表斷開,類似從一列火車中斷開一節(jié)車廂類似,這個表將轉(zhuǎn)變成普通表,仍然可讀寫。
?
2.2.?--分區(qū)表管理:連接分區(qū)
francs=>?alter table tmp_log ATTACH PARTITION tmp_log_p201702 FOR VALUES FROM ('2017-02-01')?TO ('2017-03-01');
ALTER TABLE
備注:ATTACH 操作是指將普通表連接到指定分區(qū)表,有一點(diǎn)要注意,ATTACH 和 DETACH 操作過程中,會在父表、此張分區(qū)表上加上 AccessExclusiveLock 排它鎖,因此分區(qū)表的這兩個操作應(yīng)該在業(yè)務(wù)低谷時進(jìn)行,避免影響業(yè)務(wù)。
?
?
?
2.3.?--分區(qū)表管理:刪除分區(qū)
francs=>?drop table tmp_log_p201702;
DROP TABLE
備注:刪除對就分區(qū)表即可。
?
3.?現(xiàn)有表轉(zhuǎn)換分區(qū)
貌似不能直接轉(zhuǎn)。只好原表現(xiàn)改名備用。
然后新建分區(qū)主表
?primary key constraints are not supported on partitioned tables
主表不能有主鍵 和任何索引 也不能有任何數(shù)據(jù),就是個空表
4.?三、參考
·?Table Partitioning
·?PostgreSQL: 分區(qū)表應(yīng)用二(取模分區(qū)) ?
·?CREATE TABLE
?