免費體驗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。
存儲價格:數據存儲價格。單位:元/小時。
操作步驟
進入瑤池解決方案體驗館。
單擊核心功能體驗,在冷數據分層存儲-存儲降本頁面單擊免費體驗。
單擊頁面下方創建免費體驗任務按鈕,并在彈出框中單擊確定開始創建PolarDB PostgreSQL冷數據分層存儲任務。
稍等片刻后,單擊刷新任務列表,可以看到您創建的體驗任務。
單擊查看詳情,進入實時查詢情況頁面。
在未開啟冷數據存儲功能的集群中執行普通查詢任務。
說明請根據頁面按鈕提示,手動單擊按鈕執行每一步操作。若在倒計時結束時沒有手動單擊按鈕,則會自動執行對應操作。
整個體驗過程中,您可以在左側觀察數據存儲空間和存儲價格。
單擊開始任務按鈕。
單擊查看原始表的結構按鈕,自動執行如下命令。
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)
單擊查看原始表數據量按鈕,自動執行如下命令。
select count(*) from part_test; count ---------- 39311995 (1 row)
單擊體驗普通查詢性能按鈕,自動執行以下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.
單擊查看普通狀態下存儲空間狀況按鈕,自動執行以下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)
在普通查詢完成后,任務將自動切至開啟冷數據分層存儲集群繼續執行任務。請根據頁面按鈕提示,手動點擊按鈕執行每一步操作。若在倒計時結束時沒有手動點擊執行,則會自動執行對應操作。
單擊轉移第一分區數據存儲按鈕,自動執行如下SQL語句,轉存部分數據。
ALTER table part_test_partition_1 SET tablespace oss;
單擊查看當前存儲空間狀況按鈕,自動執行如下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)
單擊查詢一條未轉存數據按鈕,自動執行如下SQL語句,可正常操作未轉存的分區數據。
SELECT v from part_test where t = '2024-03-12 13:32:21'; v ---------------------------------- 0fcd3ff19a556f266875fc5203267b5c b547775465c7f69e3504f3cfb1249220 7b8902297d9fcd0fa492f562dcb86692 d7f022205e5bedd795a8cb03dbb7a39a a0faf266a3be094876f0689402f6ba16 (5 rows)
單擊轉移剩余分區數據,查看左圖中轉存后存儲空間及價格變化按鈕,自動執行以下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)
單擊對已轉存的表,查詢一條數據按鈕,自動執行以下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.
單擊插入一條數據并查看結果按鈕,自動執行以下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)
單擊更新一條數據并查看結果按鈕,自動執行以下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)
單擊轉存索引按鈕,自動執行以下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)
單擊刪除一條數據按鈕,自動執行以下SQL語句。
DELETE FROM part_test WHERE t = '2024-02-03 01:00:23' AND v = 'NEW INSERT TEXT';
(可選)對于已創建的任務,您可以在PolarDB PostgreSQL冷數據分層存儲頁面,單擊體驗記錄,在任務列表中,單擊全部任務或我的任務,查看體驗結果及其詳情。
結果分析
降低存儲成本:PolarDB PostgreSQL版可將冷數據存儲至OSS中,降低90%以上的存儲成本。
使用方式無變化:轉存至OSS的冷數據表其使用方式和普通表完全對齊,無需改寫SQL語句。
性能無明顯變化:可自動緩存冷數據表中的熱點訪問區域,使其性能與普通表無明顯變化。