postgresql10以上的自動分區分表功能


一.列分表

1.首先創建主分區表:

  1.  
    create table fenbiao(
  2.  
    id int,
  3.  
    year varchar
  4.  
    ) partition by list(year)

這里設置的是根據year列進行數據分表;創建后使用navicat是看不到的;

2.創建分表:

  1.  
    create table fenbiao_2017 partition of fenbiao for values in ('2017')
  2.  
    create table fenbiao_2018 partition of fenbiao for values in ('2018')

這樣這兩天數據會依靠規則插入到不同分表中,如果插入一條不符合規則的數據,則會報錯誤:no partition of relation "fenbiao" found for row.

 

二.范圍分表

1.以year列為范圍進行分表

  1.  
    create table fenbiao2(
  2.  
    id int,
  3.  
    year varchar
  4.  
    ) partition by range(year)

2.創建分表

  1.  
     
  2.  
    create table fenbiao2_2018_2020 partition of fenbiao2 for values from ('2018') to ('2020')
  3.  
     
  4.  
    create table fenbiao2_2020_2030 partition of fenbiao2 for values from ('2020') to ('2030')

注意:此時插入year=2020會插入到下面的表;如下面表范圍為2021到2030,則會報錯;同時插入2030也會報錯;范圍相當於時a<=year<b;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM