免费体验PolarDB PostgreSQL冷数据分层存储

本文介绍了如何免费体验PolarDB PostgreSQL版的冷数据分层存储。

背景

PolarDB PostgreSQL版支持冷热数据分层存储功能,在保证正常增删改查的同时,使用OSS等更低成本的存储介质,将冷热数据进行分层存储。将访问频率和更新频率低的数据转存到OSS中,可以有效降低存储成本。相比其他的分层存储方案,我们的方案具有以下优势:

  • 透明访问:冷数据表的功能和使用方式和普通表完全对齐,无需改写SQL,即可支持所有数据类型的增删改查(普通的分层存储功能通常只读),建立索引/视图等操作。

  • 缓存加速:针对冷数据的查询,支持预热、预读、读写合并、本地缓存等功能,优化对冷数据读写的性能。

  • 安全可靠:支持对OSS数据使用各类备份恢复功能,包括数据快照和快照恢复、按时间点恢复、库表恢复等。

  • 模式多样:支持对索引、子分区、单独列等不同数据库对象进行分层存储。

影响

本功能体验不涉及生产环境的部署,因此不会影响业务。

费用

本次体验中,由于体验涉及到的资源不归属于您,因此不会产生任何费用,您可以放心体验。

体验内容

体验环境

在本免费体验中,阿里云提供了预置环境供您操作体验,预置环境的详情如下:

  • 集群:提供了两个基础配置一致的PolarDB PostgreSQL版集群,其中一个集群开启冷数据分层存储功能。基础配置如下:

    • 内核版本:14.11.21.1

    • 产品版本:标准版

    • 子系列:通用规格

    • 集群规格:集群包含1个主节点,规格为2核4 GB

    • 存储类型: ESSD PL1云盘

    • 是否开启热备集群:关闭存储热备集群

  • 测试数据集:集群中预置测试所用的表为part_test表,数据量为39311995条数据。

观测指标

  • 存储大小:数据存储空间大小。单位:GB。

  • 存储价格:数据存储价格。单位:元/小时。

操作步骤

  1. 进入瑶池解决方案体验馆

  2. 单击核心功能体验,在冷数据分层存储-存储降本页面单击免费体验

    image

  3. 单击页面下方创建免费体验任务按钮,并在弹出框中单击确定开始创建PolarDB PostgreSQL冷数据分层存储任务。

  4. 稍等片刻后,单击image.png刷新任务列表,可以看到您创建的体验任务。

    image

  5. 单击查看详情,进入实时查询情况页面。

  6. 在未开启冷数据存储功能的集群中执行普通查询任务。

    说明
    • 请根据页面按钮提示,手动单击按钮执行每一步操作。若在倒计时结束时没有手动单击按钮,则会自动执行对应操作。

    • 整个体验过程中,您可以在左侧观察数据存储空间和存储价格。

    1. 单击开始任务按钮。

    2. 单击查看原始表的结构按钮,自动执行如下命令。

      select * from part_test limit 20;
                t          |                v                 
      ---------------------+----------------------------------
       2024-01-01 00:00:00 | 8bc3c32888431fb2ca78368589edbb51
       2024-01-01 00:00:00 | 10dd16b02fad7066b4532605a46633ac
       2024-01-01 00:00:00 | 890283616bf80665f93e1d6966120ff4
       2024-01-01 00:00:00 | 6cd1b1f8d6084799ffb603220a1289dd
       2024-01-01 00:00:01 | b6f33d62732fea57d6781f0f51bdac2c
       2024-01-01 00:00:01 | 4bb3cb8afcbcb135228f8db8427ea6f1
       2024-01-01 00:00:01 | 6a0383df7f073dc7715130225c21294b
       2024-01-01 00:00:01 | e9ce438e298faedf843e4ea66420b5a2
       2024-01-01 00:00:01 | 5bbfc2a3e418c09db587de32dcacd45d
       2024-01-01 00:00:02 | 8fc4fa3aacab7a9cf53b8711fcba61df
       2024-01-01 00:00:02 | f0218aef3d38936b96f39686770f7e10
       2024-01-01 00:00:02 | 5489bcebc362f05f0655313b707e1f9d
       2024-01-01 00:00:02 | fc62e6e232eabe77ec595aab06140113
       2024-01-01 00:00:02 | bcf574b2873d39d7a7af17212ee38aab
       2024-01-01 00:00:03 | 72204146ddf432c9172085eece1259bd
       2024-01-01 00:00:03 | 4dd4e626b48a21630868d116a7df388e
       2024-01-01 00:00:03 | bac57e9610f0f143f5ba9a58b546ac6e
       2024-01-01 00:00:03 | aec801864fe43c2b71531c48717ff58d
       2024-01-01 00:00:03 | e4a1546f7ca7cdc76441f79147e12469
       2024-01-01 00:00:04 | 4875d5728e08fdc447f467e006d643ea
      (20 rows)
    3. 单击查看原始表数据量按钮,自动执行如下命令。

      select count(*) from part_test;
        count   
      ----------
       39311995
      (1 row)
    4. 单击体验普通查询性能按钮,自动执行以下SQL语句,普通状态下查询表中一条数据,请关注查询时间。

      \timing 
      Timing is on.
      
      SELECT v from part_test where t = '2024-03-12 13:32:21';
                      v                 
      ----------------------------------
       0fcd3ff19a556f266875fc5203267b5c
       b547775465c7f69e3504f3cfb1249220
       7b8902297d9fcd0fa492f562dcb86692
       d7f022205e5bedd795a8cb03dbb7a39a
       a0faf266a3be094876f0689402f6ba16
      (5 rows)
      
      
      Time: 0.891 ms
      
      \timing 
      Timing is off.
    5. 单击查看普通状态下存储空间状况按钮,自动执行以下SQL语句,普通状态下,数据全部存储在云盘中,存储大小和存储费用可见左侧数据全部存储在云盘表格。

      SELECT polar_evict_smgrcache();
       polar_evict_smgrcache 
      -----------------------
       
      (1 row)
      
      SELECT pg_size_pretty(polar_total_partition_table_size_1('part_test')) AS
       local_size ,pg_size_pretty(polar_osfs_total_partition_table_size_1('part_test' 
      )) AS oss_size;
       local_size | oss_size 
      ------------+----------
       3320 MB    | 0 bytes
      (1 row)
  7. 在普通查询完成后,任务将自动切至开启冷数据分层存储集群继续执行任务。请根据页面按钮提示,手动点击按钮执行每一步操作。若在倒计时结束时没有手动点击执行,则会自动执行对应操作。

    1. 单击转移第一分区数据存储按钮,自动执行如下SQL语句,转存部分数据。

      ALTER table part_test_partition_1 SET tablespace oss;
    2. 单击查看当前存储空间状况按钮,自动执行如下SQL语句,部分数据被转存到OSS存储中,在左侧图表中可见转存第一个分区后数据占用的存储空间及价格。

      SELECT polar_evict_smgrcache();
       polar_evict_smgrcache 
      -----------------------
       
      (1 row)
      
      SELECT pg_size_pretty(polar_total_partition_table_size_1('part_test')) AS
       local_size ,pg_size_pretty(polar_osfs_total_partition_table_size_1('part_test' 
      )) AS oss_size;
       local_size | oss_size 
      ------------+----------
       2189 MB    | 331 MB
      (1 row)
    3. 单击查询一条未转存数据按钮,自动执行如下SQL语句,可正常操作未转存的分区数据。

      SELECT v from part_test where t = '2024-03-12 13:32:21';
                      v                 
      ----------------------------------
       0fcd3ff19a556f266875fc5203267b5c
       b547775465c7f69e3504f3cfb1249220
       7b8902297d9fcd0fa492f562dcb86692
       d7f022205e5bedd795a8cb03dbb7a39a
       a0faf266a3be094876f0689402f6ba16
      (5 rows)
    4. 单击转移剩余分区数据,查看左图中转存后存储空间及价格变化按钮,自动执行以下SQL语句,转存全部数据至OSS存储,存储成本降低。

      ALTER table part_test_partition_2 SET tablespace oss;
      ALTER TABLE
      
      SELECT polar_evict_smgrcache();
       polar_evict_smgrcache 
      -----------------------
       
      (1 row)
      
      SELECT polar_evict_smgrcache();
       polar_evict_smgrcache 
      -----------------------
       
      (1 row)
      
      SELECT pg_size_pretty(polar_total_partition_table_size_1('part_test')) AS
       local_size ,pg_size_pretty(polar_osfs_total_partition_table_size_1('part_test' 
      )) AS oss_size;
       local_size | oss_size 
      ------------+----------
       1131 MB    | 641 MB
      (1 row)
      
      ALTER table part_test_partition_3 SET tablespace oss;
      ALTER TABLE
      mydb=> SELECT polar_evict_smgrcache();
       polar_evict_smgrcache 
      -----------------------
       
      (1 row)
      
      SELECT polar_evict_smgrcache();
       polar_evict_smgrcache 
      -----------------------
       
      (1 row)
      
      SELECT pg_size_pretty(polar_total_partition_table_size_1('part_test')) AS
       local_size ,pg_size_pretty(polar_osfs_total_partition_table_size_1('part_test' 
      )) AS oss_size;
       local_size | oss_size 
      ------------+----------
       0 bytes    | 972 MB
      (1 row)
      
      select polar_osfs_prewarm('part_test_partition_3',0);
       polar_osfs_prewarm 
      --------------------
                   125440
      (1 row)
    5. 单击对已转存的表,查询一条数据按钮,自动执行以下SQL语句,对于转存的表,可正常进行增删改查操作,且对比普通查询,无明显性能变化。

      \timing 
      Timing is on.
      
      SELECT v from part_test where t = '2024-03-12 13:32:21';
                      v                 
      ----------------------------------
       0fcd3ff19a556f266875fc5203267b5c
       b547775465c7f69e3504f3cfb1249220
       7b8902297d9fcd0fa492f562dcb86692
       d7f022205e5bedd795a8cb03dbb7a39a
       a0faf266a3be094876f0689402f6ba16
      (5 rows)
      
      
      Time: 1.623 ms
      
      \timing 
      Timing is off.
    6. 单击插入一条数据并查看结果按钮,自动执行以下SQL语句。

      INSERT INTO part_test (t, v) SELECT '2024-02-03 01:00:23', 'NEW INSERT TE 
      XT';
      INSERT 0 1
      
      SELECT * FROM part_test WHERE t = '2024-02-03 01:00:23';
                t          |                v                 
      ---------------------+----------------------------------
       2024-02-03 01:00:23 | f7dddbb0f15bdc11eec19630b1487167
       2024-02-03 01:00:23 | 75398f09019613565f39a3abc180ca0f
       2024-02-03 01:00:23 | a7c0befc45d019360f31c3ebd8880268
       2024-02-03 01:00:23 | a3c0f17c371b8ab7459f4e47df69a393
       2024-02-03 01:00:23 | NEW INSERT TEXT
       2024-02-03 01:00:23 | 1a8925ab15c73a5813393e3b07b6be14
      (6 rows)
    7. 单击更新一条数据并查看结果按钮,自动执行以下SQL语句。

      UPDATE part_test SET v = md5(random()::text) WHERE t= '2024-02-03 01:00:2 
      3' AND v = (SELECT v FROM part_test WHERE t= '2024-02-03 01:00:23' LIMIT 1);
      UPDATE 1
      
      SELECT * FROM part_test WHERE t = '2024-02-03 01:00:23';
                t          |                v                 
      ---------------------+----------------------------------
       2024-02-03 01:00:23 | 667bf9e88cb9c234b1e9cd75895df104
       2024-02-03 01:00:23 | 75398f09019613565f39a3abc180ca0f
       2024-02-03 01:00:23 | a7c0befc45d019360f31c3ebd8880268
       2024-02-03 01:00:23 | a3c0f17c371b8ab7459f4e47df69a393
       2024-02-03 01:00:23 | NEW INSERT TEXT
       2024-02-03 01:00:23 | 1a8925ab15c73a5813393e3b07b6be14
      (6 rows)
    8. 单击转存索引按钮,自动执行以下SQL语句,将索引转存到OSS内,依然可以进行正常的增删改查操作。

      ALTER index part_test_t_idx set tablespace oss;
      ALTER INDEX
      SELECT polar_evict_smgrcache();
       polar_evict_smgrcache 
      -----------------------
       
      (1 row)
      
      SELECT pg_size_pretty(polar_total_partition_table_size_1('part_test')) AS 
       local_size ,pg_size_pretty(polar_osfs_total_partition_table_size_1('part_test') 
      ) AS oss_size;
       local_size | oss_size 
      ------------+----------
       0 bytes    | 972 MB
      (1 row)
    9. 单击删除一条数据按钮,自动执行以下SQL语句。

      DELETE FROM part_test WHERE t = '2024-02-03 01:00:23' AND v = 'NEW INSERT TEXT';
  8. (可选)对于已创建的任务,您可以在PolarDB PostgreSQL冷数据分层存储页面,单击体验记录,在任务列表中,单击全部任务我的任务,查看体验结果及其详情。

结果分析

  • 降低存储成本PolarDB PostgreSQL版可将冷数据存储至OSS中,降低90%以上的存储成本。

  • 使用方式无变化:转存至OSS的冷数据表其使用方式和普通表完全对齐,无需改写SQL语句。

  • 性能无明显变化:可自动缓存冷数据表中的热点访问区域,使其性能与普通表无明显变化。

相关内容