postgresql10以上的自動分區(qū)分表功能
一.列分表
1.首先創(chuàng)建主分區(qū)表:
create table fenbiao(id int,year varchar) partition by list(year)
這里設(shè)置的是根據(jù)year列進(jìn)行數(shù)據(jù)分表;創(chuàng)建后使用navicat是看不到的;
2.創(chuàng)建分表:
create table fenbiao_2017 partition of fenbiao for values in ('2017')create table fenbiao_2018 partition of fenbiao for values in ('2018')
這樣這兩天數(shù)據(jù)會依靠規(guī)則插入到不同分表中,如果插入一條不符合規(guī)則的數(shù)據(jù),則會報錯誤:no partition of relation "fenbiao" found for row.
二.范圍分表
1.以year列為范圍進(jìn)行分表
create table fenbiao2(id int,year varchar) partition by range(year)
2.創(chuàng)建分表
create table fenbiao2_2018_2020 partition of fenbiao2 for values from ('2018') to ('2020') create table fenbiao2_2020_2030 partition of fenbiao2 for values from ('2020') to ('2030')
注意:此時插入year=2020會插入到下面的表;如下面表范圍為2021到2030,則會報錯;同時插入2030也會報錯;范圍相當(dāng)于時a<=year<b;