美文网首页
PostgreSQL表分区

PostgreSQL表分区

作者: 古飞_数据 | 来源:发表于2023-04-15 11:43 被阅读0次

    --Range范围分区

    CREATE TABLE pkslow_person_r (
        age int not null,
        city varchar not null
    ) PARTITION BY RANGE (age);
    
    create table pkslow_person_r1 partition of pkslow_person_r for values from (MINVALUE) to (10);
    create table pkslow_person_r2 partition of pkslow_person_r for values from (11) to (20);
    create table pkslow_person_r3 partition of pkslow_person_r for values from (21) to (30);
    create table pkslow_person_r4 partition of pkslow_person_r for values from (31) to (MAXVALUE);
    
    
    insert into pkslow_person_r(age, city) VALUES (1, 'GZ');
    insert into pkslow_person_r(age, city) VALUES (2, 'SZ');
    insert into pkslow_person_r(age, city) VALUES (21, 'SZ');
    insert into pkslow_person_r(age, city) VALUES (13, 'BJ');
    insert into pkslow_person_r(age, city) VALUES (43, 'SH');
    insert into pkslow_person_r(age, city) VALUES (28, 'HK');
    
    \d+ pkslow_person_r
    
    select * from pkslow_person_r;
    select * from pkslow_person_r3;
    

    List列表分区

    -- 创建主表
    create table pkslow_person_l (  age int not null,  city varchar not null
    ) partition by list (city);
    
    -- 创建分区表
    CREATE TABLE pkslow_person_l1 PARTITION OF pkslow_person_l FOR VALUES IN ('GZ');
    CREATE TABLE pkslow_person_l2 PARTITION OF pkslow_person_l FOR VALUES IN ('BJ');
    CREATE TABLE pkslow_person_l3 PARTITION OF pkslow_person_l DEFAULT;
    
    -- 插入测试数据
    insert into pkslow_person_l(age, city) VALUES (1, 'GZ');
    insert into pkslow_person_l(age, city) VALUES (2, 'SZ');
    insert into pkslow_person_l(age, city) VALUES (21, 'SZ');
    insert into pkslow_person_l(age, city) VALUES (13, 'BJ');
    insert into pkslow_person_l(age, city) VALUES (43, 'SH');
    insert into pkslow_person_l(age, city) VALUES (28, 'HK');
    insert into pkslow_person_l(age, city) VALUES (28, 'GZ');
    
    \d+ pkslow_person_l
    select * from pkslow_person_l1;
    

    Hash哈希分区

    -- 创建主表
    create table pkslow_person_h (  age int not null,  city varchar not null) partition by hash (city);
    -- 创建分区表
    create table pkslow_person_h1 partition of pkslow_person_h for values with (modulus 4, remainder 0);
    create table pkslow_person_h2 partition of pkslow_person_h for values with (modulus 4, remainder 1);
    create table pkslow_person_h3 partition of pkslow_person_h for values with (modulus 4, remainder 2);
    create table pkslow_person_h4 partition of pkslow_person_h for values with (modulus 4, remainder 3);
    -- 插入测试数据
    insert into pkslow_person_h(age, city) VALUES (1, 'GZ');
    insert into pkslow_person_h(age, city) VALUES (2, 'SZ');
    insert into pkslow_person_h(age, city) VALUES (21, 'SZ');
    insert into pkslow_person_h(age, city) VALUES (13, 'BJ');
    insert into pkslow_person_h(age, city) VALUES (43, 'SH');
    insert into pkslow_person_h(age, city) VALUES (28, 'HK');
    
    \d+ pkslow_person_h
    select * from pkslow_person_h4;
    
    [PostgreSQL表分区 - 高&玉 - 博客园 (cnblogs.com)](https://www.cnblogs.com/haha029/p/15718827.html)
    
    [关于分区表的方方面面 (qq.com)](https://mp.weixin.qq.com/s/4HFnzS_4MK1moa-9oxdARQ)
    

    相关文章

      网友评论

          本文标题:PostgreSQL表分区

          本文链接:https://www.haomeiwen.com/subject/wtrxjdtx.html