• 连接数据库:

      1. $ psql -h host -p port -U userName -W databaseName
    • 基础命令

      1. $ \d tableName # 得到表结构
      2. $ \d+ tableName # 得到表详细信息,包括:分区表名
      3. $ \c database # 切换数据库
      4. $ \df # 查看函数
      5. $ \dt # 查看所有表
    • 查看所有 database 使用的磁盘空间

      1. $ select datname,pg_size_pretty(pg_database_size(datname)) from pg_database;
    • 查看某个表使用的磁盘空间

      1. $ select pg_size_pretty(pg_total_relation_size('tableName'));
    • 查看索引大小

      1. $ select pg_size_pretty(pg_relation_size('index_name'));
    • 得到gp中所有的表,包括分区表

      1. $ select * from pg_tables;
    • 在服务器上执行文件中的sql

      1. $ psql -f ./create_table.sql
    • 在服务器上执行sql

      1. $ psql -c "select id from test_table;"
    • 安装、卸载插件。参考:http://postgres.cn/docs/10/sql-createextension.html

      1. $ create extension postgis_topology; # gp中安装插件
      2. $ drop extension ext_name; # gp中卸载插件
    • 增加权限。参考:http://postgres.cn/docs/10/sql-grant.html

      1. $ GRANT SELECT ON table_name TO bill
    • copy数据。参考:http://postgres.cn/docs/10/sql-copy.html

      1. $ copy liq_test(id, date, segment) from '/home/gpadmin/liq_test_data.txt' with delimiter ',';
    • 创建外表

      1. $ CREATE EXTERNAL TABLE tmp_external_${gpTableName}(id text,time text,segment text,bitmap text) LOCATION ('path/*.gz') FORMAT 'TEXT' (delimiter '|');
    • 复制外表数据到内表

      1. $ insert into ${gpTableName} select id,time::bigint,segment::int,decode(bitmap,'base64')::varchar::roaringbitmap from tmp_external_${gpTableName};
    • 测试数据生成

      1. $ insert into wells_test select '20200426_001', '202004'::bigint, GENERATE_SERIES(1,9), decode('OjAAAAAAAAA=','base64')::varchar::roaringbitmap;
    • 获取某个字段的大小

      1. $ select id, pg_column_size(bitmap) from wells_test;
    • 创建分区表

      1. CREATE TABLE gbitmap_place(label text,createdate date,bitmap roaringbitmap)
      2. DISTRIBUTED BY (label)
      3. PARTITION BY RANGE (createdate)
      4. ( START (date '2019-07-18') INCLUSIVE
      5. END (date '2019-07-19') EXCLUSIVE
      6. EVERY (INTERVAL '1 day') );
    • 增加一级分区

      1. alter table wells_test add partition p_201901 start (202001) INCLUSIVE end (202002) EXCLUSIVE WITH (appendonly=true, compresslevel=5, compresstype=zlib);
    • 增加二级分区

      1. alter table wells_test alter PARTITION p_202005 add partition c1 values (1) WITH (appendonly=true, compresslevel=5, compresstype=zlib);
    • 创建二级分区表

      1. CREATE TABLE wells_test ( id text NOT NULL, date bigint, segment int, bitmap roaringbitmap ) DISTRIBUTED BY (id) partition by range(date) subpartition by list(segment) subpartition template ( subpartition c1 values (1) ) ( partition p1 START (20190000) INCLUSIVE END ( 20190001) EXCLUSIVE EVERY (1) );
    • 删除分区

      1. alter table wells_test drop PARTITION p_202005;
    • 查询表的所有分区表

      1. $ select count(*) from pg_partitions where tablename = 'wells_test';
    • 查询表正在活动的线程执行情况,可以通过reason查看被锁住的语句、也可以查看正在执行的sql

      1. $ select * from pg_stat_activity where waiting_reason='lock';
    • kill 正在lock的语句

      1. $ select pg_terminate_backend(211675);

    参考文档:
    https://github.com/zeromax007/gpdb-roaringbitmap
    https://gp-docs-cn.github.io/docs/best_practices/intro.html
    http://www.postgres.cn/docs/10/