更新时间:2026-08-06 GMT+08:00
分享

手动调度

以下为手动创建和压缩透明压缩表的测试步骤,过程中的表可替换为自己的表数据进行测试,注意提前做好备份。

  1. 设置必要的实例级ILM开关和透明压缩特性的开关。

    [@gshost116 ~]$ gs_guc reload -Z datanode -I all -N all -Z coordinator -c "enable_ilm=on"
    [@gshost116 ~]$ gs_guc reload -Z datanode -I all -N all -Z coordinator  -c "turbo_compress_shared_buffers=1GB"

  2. 打开数据库级别的开关。

    gaussdb=# ALTER DATABASE set  ilm =on;
    ALTER DATABASE

  3. 创建压缩表,这里需要使用透明压缩的语法创建压缩表,插入数据,查看大小。

    gaussdb=# DROP TABLE if exists test;
    NOTICE:  table "test" does not exist, skipping
    DROP TABLE
    gaussdb=# CREATE TABLE test(a int, b int) with (storage_type=astore) ILM ADD POLICY ROW STORE COMPRESS TURBO high UNIT AFTER 3 HOUR OF NO MODIFICATION;
    CREATE TABLE
    gaussdb=# INSERT INTO test values(generate_series(1,200000), generate_series(1,200000));
    INSERT 0 200000
    gaussdb=# checkpoint;
    CHECKPOINT
    gaussdb=# SELECT pg_relation_size('test') as size;
      size
    ---------
     7340032
    (1 row)

  4. 在合适的时机执行异步压缩动作,查看大小和压缩率。

    gaussdb=# CALL dbe_ilm.execute_ilm('public','test','v_taskid',NULL,'ALL POLICIES',2, true);
     task_id
    ---------
           2
    (1 row)
    
    gaussdb=# SELECT pg_relation_size('test') as size;
      size
    --------
     815104
    (1 row)
    
    gaussdb=# CALL dbe_compression.get_actual_compression_ratio('public', 'test', a,b,c,d,e,f);
         filepath     | is_compress | file_count | logic_size | physic_size | compress_ratio
    ------------------+-------------+------------+------------+-------------+----------------
     base/13160/32768 | t           |          2 |    7380992 |      937984 | 7.8690
    (1 row)

    如上所示压缩率是7.8,明显会降低存储空间。

相关文档