Topik ini menjelaskan cara mengaktifkan dan menggunakan fitur penyimpanan berjenjang untuk data dingin.
Berlaku untuk
Persyaratan versi
Versi yang didukung untuk kluster PolarDB for PostgreSQL:
PostgreSQL 16 dengan versi mesin minor 2.0.16.9.6.0 atau lebih baru.
PostgreSQL 14 dengan versi mesin minor 2.0.14.10.21.0 atau lebih baru.
Wilayah yang didukung
Area | Wilayah |
Tiongkok | Tiongkok (Hangzhou) |
Tiongkok (Shanghai) | |
Tiongkok (Shenzhen) | |
Tiongkok (Beijing) | |
Lainnya | Singapura |
Batasan
Setelah Anda mengaktifkan fitur penyimpanan berjenjang untuk data dingin, Anda tidak dapat menonaktifkannya. Anda hanya dapat menghapus data dingin tersebut. Fitur ini tidak dikenai biaya jika tidak ada data dingin yang disimpan.
Fitur penyimpanan berjenjang untuk data dingin tidak dapat diaktifkan pada kluster PolarDB for PostgreSQL atau yang telah mengaktifkan hot standby.
CatatanUntuk mengaktifkan fitur penyimpanan berjenjang untuk data dingin dalam skenario ini, hubungi kami untuk mendapatkan bantuan.
Jika Anda telah mengaktifkan fitur penyimpanan berjenjang untuk data dingin pada kluster PolarDB for PostgreSQL atau yang telah mengaktifkan hot standby, Anda tidak dapat mengubah zona primer.
CatatanUntuk mengubah zona primer dalam skenario ini, hubungi kami untuk mendapatkan bantuan.
Pernyataan DDL berikut tidak didukung:
Anda tidak dapat membuat database di ruang tabel OSS:
CREATE DATABASE dbname TABLESPACE OSS;Saat ini Anda tidak dapat memindahkan seluruh database ke ruang tabel OSS menggunakan satu perintah:
ALTER DATABASE dbname SET TABLESPACE OSS;
Aktifkan fitur
Mengaktifkan fitur penyimpanan berjenjang untuk data dingin akan me-restart kluster PolarDB. Rencanakan operasi Anda dengan sesuai dan lanjutkan dengan hati-hati.
Masuk ke Konsol PolarDB. Di panel navigasi sebelah kiri, klik Clusters. Pilih wilayah tempat kluster berada. Temukan kluster tersebut dan klik ID-nya untuk membuka halaman detail kluster.
Di panel navigasi sebelah kiri, pilih Settings And Management > Cold Data Tiered Storage untuk membuka halaman PolarDB Cold Data Tiered Storage.
Klik Enable Now untuk membuka halaman Data Archiving List.

Halaman ini menampilkan bagian Basic Information dan Data Archiving List. Bagian Daftar Pengarsipan Data berisi tab Full Table Archiving List dan Partitioned Table Archiving List.
Jika tidak ada data dingin yang disimpan, Data Archiving List kosong.
Setelah Anda mengaktifkan fitur ini, data secara default disimpan pada media penyimpanan disk berkecepatan tinggi. Untuk menyimpan data sebagai data dingin, Anda harus memindahkannya ke OSS. Untuk informasi selengkapnya, lihat Mode penyimpanan dingin.
Mode penyimpanan dingin
Penyimpanan dingin melibatkan pemindahan tabel data, indeks, atau tampilan yang di-materialisasi ke OSS. Setelah dipindahkan, objek-objek ini hampir tidak lagi menempati ruang disk, sehingga secara signifikan mengurangi biaya penyimpanan database. Setelah data dipindahkan ke penyimpanan dingin, semua pernyataan DML dan DQL tetap transparan dan tidak memerlukan perubahan.
Penyimpanan dingin untuk tabel standar, indeks, dan tampilan yang di-materialisasi
Pindahkan tabel data, indeks, atau tampilan yang di-materialisasi yang sudah ada ke penyimpanan dingin.
ALTER TABLE tblname SET TABLESPACE OSS; ALTER INDEX idxname SET TABLESPACE OSS; ALTER Materialized View mvname SET TABLESPACE OSS;CatatanKetika Anda menjalankan
ALTER TABLE tblname SET TABLESPACE OSSpada sebuah tabel, hanya data tabel yang dipindahkan ke OSS secara default. Untuk memindahkan indeks tabel tersebut ke OSS, Anda juga harus menjalankanALTER INDEXuntuk setiap indeks.Buat tabel data, indeks, atau tampilan yang di-materialisasi baru langsung di penyimpanan OSS.
Metode 1: Tentukan TABLESPACE OSS dalam pernyataan CREATE.
CREATE TABLE tblname (...) TABLESPACE OSS; CREATE TABLE tblname(...) TABLESPACE OSS as SELECT ...; CREATE INDEX idxname ON tblname(columnname) TABLESPACE OSS; CREAE INDEX idxname ON tblename USING GiST(columnname) TABLESPACE OSS; CREATE MATERIALIZED VIEW table_name TABLESPACE OSS AS query [ WITH [ NO ] DATA ];Metode 2: Tetapkan ruang tabel default ke ruang tabel OSS.
SET default_tablespace = 'oss'; CREATE TABLE tblname (...) ; CREATE INDEX idxname ON tblname(columnname); CREAE INDEX idxname ON tblename USING GiST(columnname); CREATE MATERIALIZED VIEW table_name AS query [ WITH [ NO ] DATA ];CatatanSetelah Anda menggunakan metode ini untuk menetapkan ruang tabel default ke OSS, semua operasi CREATE TABLE, CREATE INDEX, dan CREATE MATERIALIZED VIEW berikutnya akan membuat objek langsung di penyimpanan OSS. Jika Anda tidak ingin lagi membuat objek di penyimpanan dingin, Anda dapat mengatur ulang ruang tabel default:
RESET default_tablespace;
Penyimpanan dingin individual untuk bidang LOB
Fitur ini tidak didukung di PostgreSQL 16.
Bidang LOB mencakup bidang dengan tipe data blob, text, json, jsonb, dan array, serta tipe data spatio-temporal, di PolarDB for PostgreSQL dan . Objek-objek ini sering kali berukuran besar, menempati ruang penyimpanan yang signifikan, dan jarang diperbarui. Untuk mengurangi biaya dalam skenario ini, fitur penyimpanan berjenjang untuk data dingin di PolarDB for PostgreSQL dan memungkinkan Anda memindahkan hanya bidang LOB ke penyimpanan dingin sementara bidang lain tetap berada di media penyimpanan aslinya. Anda dapat memindahkan bidang LOB ke penyimpanan dingin menggunakan satu pernyataan SQL:
--Buat tabel yang berisi bidang LOB.
CREATE TABLE test_large_object(id serial, val text);
--Pindahkan hanya bidang LOB ke penyimpanan dingin.
ALTER TABLE test_large_object alter column val set (storage_type='oss');
--Tulis data LOB. Konten bidang text kini disimpan di OSS.
INSERT INTO test_large_object(val) VALUES((SELECT string_agg(random()::text, ':') FROM generate_series(1, 10000)));Anda harus mengatur penyimpanan untuk bidang LOB ke OSS sebelum menulis data. Setelah melakukan ini, data baru yang ditulis ke bidang tersebut akan disimpan di OSS.
Penyimpanan dingin untuk tabel partisi
Kasus penggunaan umum untuk penyimpanan dingin adalah dengan tabel partisi. Metode khusus tersedia untuk menggunakan fitur penyimpanan berjenjang dengan tabel partisi.
Pindahkan semua partisi ke penyimpanan dingin.
Metode 1: Pindahkan partisi anak yang sudah ada ke penyimpanan dingin secara berurutan.
--prt1 adalah tabel partisi (tabel induk). --prt1_p1 adalah tabel anak dari prt1. --prt2_p2 adalah tabel anak lain dari prt1. --Jalankan pernyataan ALTER pada semua tabel anak. ALTER TABLE prt1_p1 SET TABLESPACE OSS; ALTER TABLE prt1_p2 SET TABLESPACE OSS;Metode 2: Buat tabel partisi induk langsung di ruang tabel OSS.
CREATE TABLE prt1 (a int, b int) PARTITION BY RANGE(a) TABLESPACE OSS; --Secara default, tabel anak mewarisi properti ruang tabel dari tabel induk dan dibuat langsung di ruang tabel OSS. CREATE TABLE prt1_p1 PARTITION OF prt1 FOR VALUES FROM (0) TO (250); CREATE TABLE prt1_p2 PARTITION OF prt1 FOR VALUES FROM (250) TO (500);Metode 3: Tetapkan ruang tabel default ke ruang tabel OSS sebelum membuat tabel partisi.
SET default_tablespace = 'oss'; CREATE TABLE prt1 (a int, b int) PARTITION BY RANGE(a); CREATE TABLE prt1_p1 PARTITION OF prt1 FOR VALUES FROM (0) TO (250); CREATE TABLE prt1_p2 PARTITION OF prt1 FOR VALUES FROM (250) TO (500);
Pindahkan beberapa partisi anak ke penyimpanan dingin:
Untuk memindahkan hanya partisi anak yang kedaluwarsa (jarang diakses) ke penyimpanan dingin, Anda dapat mengubah ruang tabel hanya untuk partisi-partisi tersebut. Partisi anak yang belum kedaluwarsa (sering diakses) tidak dipindahkan dan tetap berada di disk database. Pendekatan ini mengurangi biaya penyimpanan tanpa memengaruhi kinerja akses tabel partisi.
--prt1 adalah tabel partisi (tabel induk). --prt1_p1 adalah tabel anak prt1 yang belum kedaluwarsa. --prt2_p2 adalah tabel anak prt1 yang kedaluwarsa. --Jalankan pernyataan ALTER pada tabel anak yang kedaluwarsa. ALTER TABLE prt1_p2 SET TABLESPACE OSS;
Penyimpanan berjenjang data panas dan dingin
Cache materialisasi untuk data dingin
Anda dapat memodifikasi parameter polar_smgrcache_size untuk mengatur ukuran cache materialisasi untuk data dingin.
Masuk ke Konsol PolarDB. Di panel navigasi sebelah kiri, klik Clusters. Pilih wilayah tempat kluster berada. Temukan kluster tersebut dan klik ID-nya untuk membuka halaman detail kluster.
Di panel navigasi sebelah kiri, pilih Settings And Management > Parameters. Temukan parameter
polar_smgrcache_sizedan klik Modify Parameter.Tetapkan parameter
polar_smgrcache_sizeseperti pada contoh berikut.Nilai
Ukuran cache
0
0 (Cache dinonaktifkan)
1
1 GB
2
2 GB
128
128 GB (Nilai maksimum yang didukung)
Di pojok kiri atas halaman, klik Submit Changes. Di kotak dialog Save Changes, klik OK. Kluster akan direstart setelah Anda memodifikasi parameter ini.
Ketika Anda mengaktifkan fitur penyimpanan berjenjang untuk data dingin di kluster PolarDB for PostgreSQL atau , sejumlah kecil ruang cache materialisasi dibuat di disk secara default. Ruang ini digunakan untuk menyimpan metadata dan untuk beberapa penggabungan I/O. Untuk kinerja yang lebih tinggi, Anda dapat menyesuaikan ukuran cache materialisasi di konsol berdasarkan volume data dan skenario Anda. Perubahan ini berlaku setelah database direstart.
Setelah Anda mengaktifkan dan mulai menggunakan fitur penyimpanan berjenjang untuk data dingin, jika Anda menetapkan parameter
polar_smgrcache_sizeke 0, fitur cache akan dinonaktifkan. Hal ini dapat menyebabkan pemulihan crash menjadi sangat lambat. Anda tidak dapat mengaktifkan kembali parameter ini selama restart. Jika hal ini terjadi, Anda dapat menghubungi kami untuk meminta agar fitur cache diaktifkan kembali guna mempercepat pemulihan crash.
Setelah Anda mengaktifkan cache materialisasi untuk data dingin, Anda dapat menanyakan penggunaan cache sebagai berikut:
-- Buat ekstensi.
CREATE extension polar_monitor;
-- Tanyakan penggunaan dasar cache materialisasi.
SELECT * FROM polar_smgrcaches;
-- Deskripsi bidang:
-- smgrcache: ID cache.
-- relfilenode: file tabel yang sesuai dengan cache.
-- relchunknumber: posisi cache dalam file tabel.
-- nblocks: ukuran cache.
-- dirty: menentukan apakah cache berisi blok kotor.
-- usagecount: jumlah penggunaan.
-- pinning_backends: jumlah referensi.
-- Paksa flush cache materialisasi ke OSS.
SELECT polar_flush_smgrcache();
-- Paksa evict cache materialisasi.
SELECT polar_evict_smgrcache(); Akses data dingin
Tambah, hapus, ubah, dan tanyakan data dingin
Pernyataan SQL untuk menambah, menghapus, mengubah, dan menanyakan data dingin (objek yang sudah disimpan di ruang tabel OSS) bersifat transparan dan tidak memerlukan perubahan.
Pulihkan data dingin
Data dikompresi saat dipindahkan ke OSS. Jika Anda ingin memulihkan data dari OSS ke disk, pastikan disk memiliki ruang penyimpanan yang cukup. Ruang yang dibutuhkan biasanya 1,4 hingga 4 kali ruang penyimpanan yang ditempati data di OSS.
Hapus data dingin
Pernyataan SQL untuk menghapus tabel, indeks, atau tampilan yang di-materialisasi yang berada di penyimpanan dingin juga bersifat transparan dan tidak memerlukan perubahan.
DELETE FROM tblname WHERE ...;
TRUNCATE TABLE tblname;
DROP TABLE tblname;
...