全部产品
Search
文档中心

PolarDB:Aktifkan dan gunakan penyimpanan berjenjang untuk data dingin

更新时间:Nov 11, 2025

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.

    Catatan

    Untuk 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.

    Catatan

    Untuk 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

Penting

Mengaktifkan fitur penyimpanan berjenjang untuk data dingin akan me-restart kluster PolarDB. Rencanakan operasi Anda dengan sesuai dan lanjutkan dengan hati-hati.

  1. 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.

  2. Di panel navigasi sebelah kiri, pilih Settings And Management > Cold Data Tiered Storage untuk membuka halaman PolarDB Cold Data Tiered Storage.

  3. Klik Enable Now untuk membuka halaman Data Archiving List.

    image (1).png

  4. 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.

Catatan
  • 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;
    Catatan

    Ketika Anda menjalankan ALTER TABLE tblname SET TABLESPACE OSS pada sebuah tabel, hanya data tabel yang dipindahkan ke OSS secara default. Untuk memindahkan indeks tabel tersebut ke OSS, Anda juga harus menjalankan ALTER INDEX untuk 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 ];
      Catatan

      Setelah 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

Catatan

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)));
Catatan

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.

  1. 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.

  2. Di panel navigasi sebelah kiri, pilih Settings And Management > Parameters. Temukan parameter polar_smgrcache_size dan klik Modify Parameter.

  3. Tetapkan parameter polar_smgrcache_size seperti pada contoh berikut.

    Nilai

    Ukuran cache

    0

    0 (Cache dinonaktifkan)

    1

    1 GB

    2

    2 GB

    128

    128 GB (Nilai maksimum yang didukung)

  4. Di pojok kiri atas halaman, klik Submit Changes. Di kotak dialog Save Changes, klik OK. Kluster akan direstart setelah Anda memodifikasi parameter ini.

Catatan
  • 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_size ke 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;
...