Menjaga keaktualan data penyimpanan kolom dalam memori

Halaman ini menjelaskan cara menjaga keaktualan data di penyimpanan kolom mesin columnar di AlloyDB untuk PostgreSQL.

Saat baris tabel ditambahkan, dihapus, atau diperbarui, mesin columnar tidak langsung memperbarui data di penyimpanan kolom. Sebagai gantinya, sistem ini menandai konten yang terpengaruh di penyimpanan kolom sebagai tidak valid, dan kueri direncanakan serta dieksekusi menggunakan data berorientasi kolom dari penyimpanan kolom dan data berorientasi baris dari cache baris dan penyimpanan database.

Seiring waktu, karena semakin banyak blok data yang menjadi tidak valid, peningkatan performa kueri yang diberikan oleh mesin columnar berkurang hingga titik di mana data columnar perlu diperbarui untuk mendapatkan kembali peningkatan performa kueri. Saat nilai minimum refresh ini tercapai, mesin columnar akan menggunakan tugas latar belakang untuk memperbarui data yang tidak valid di penyimpanan kolom. Secara default, mesin columnar menggunakan nilai minimum refresh 50, yang menunjukkan bahwa konten tertentu di penyimpanan kolom ditandai untuk di-refresh jika 50% kontennya menjadi tidak valid. Anda dapat mengubah nilai minimum pembaruan ini untuk menyesuaikan biaya overhead pembaruan otomatis dan berpotensi mendapatkan performa kueri berkelanjutan yang lebih baik untuk beban kerja aplikasi Anda.

Selain itu, Anda dapat memuat ulang secara manual tabel dan indeks ScaNN yang dimuat di mesin columnar kapan saja. Biasanya, Anda melakukan refresh manual saat ingin perubahan pada tabel ditampilkan di column store sesegera mungkin setelah melakukan perubahan.

Memeriksa persentase data tidak valid

Saat aplikasi Anda menambahkan, menghapus, atau memperbarui baris dalam tabel, mesin columnar menandai data yang terpengaruh di penyimpanan kolom sebagai tidak valid. Anda dapat memeriksa persentase data tidak valid untuk tabel dan tampilan terwujud dengan membuat kueri tampilan g_columnar_relations. Hal ini membantu Anda memutuskan apakah Anda perlu melakukan refresh manual atau menyesuaikan nilai minimum refresh otomatis.

Untuk melihat persentase pembatalan semua relasi di penyimpanan berkolom, jalankan kueri berikut:

SELECT relation_name, invalid_percentage FROM g_columnar_relations;

Untuk memeriksa persentase pembatalan untuk tabel tertentu, tambahkan klausa WHERE ke kueri.

SELECT   relation_name,
  CASE
    WHEN total_block_count > 0 THEN (invalid_block_count * 100.0 / total_block_count)
    ELSE 0.0
  END AS invalid_block_percentage
FROM
  g_columnar_relations;
WHERE
 relation_name =  TABLE_NAME

Ganti TABLE_NAME dengan string yang berisi nama tabel atau tampilan terwujud. Jika resource berada dalam skema selain public, tentukan nama skema menggunakan format SCHEMA_NAME.TABLE_NAME—misalnya, myschema.mytable.

Untuk memeriksa persentase pembatalan untuk indeks tertentu, tambahkan klausa WHERE ke kueri.

SELECT   index_name,
  CASE
    WHEN total_block_count > 0 THEN (invalid_block_count * 100.0 / total_block_count)
    ELSE 0.0
  END AS invalid_block_percentage
FROM
  g_columnar_indexes;
WHERE
  index_name = INDEX_NAME

Mengubah nilai minimum refresh mesin berbasis kolom

Untuk mengubah nilai minimum refresh mesin columnar, Anda harus mengubah nilai flag database google_columnar_engine.refresh_threshold_percentage untuk instance AlloyDB Anda.

Konsol

  1. Di konsol Google Cloud , buka halaman Clusters.

    Buka Cluster

  2. Klik nama cluster yang berisi instance yang ingin Anda konfigurasi.
  3. Di bagian Instances in your cluster, temukan instance, lalu klik Edit.
  4. Di bagian Flag, tambahkan flag baru atau ubah flag google_columnar_engine.refresh_threshold_percentage yang ada.
  5. Tetapkan nilai ke bilangan bulat antara 1 dan 100. Nilai ini menunjukkan persentase data tidak valid yang memicu pembaruan.
  6. Klik Selesai.

gcloud

Untuk menggunakan gcloud CLI, Anda dapat menginstal dan melakukan inisialisasi Google Cloud CLI, atau Anda dapat menggunakan Cloud Shell.

Untuk mengubah nilai minimum refresh mesin columnar, jalankan perintah berikut:
gcloud alloydb instances update INSTANCE_ID \
    --database-flags=google_columnar_engine.refresh_threshold_percentage=THRESHOLD \
    --cluster=CLUSTER_ID \
    --region=REGION_ID \
    --project=PROJECT_ID

Ganti kode berikut:

  • INSTANCE_ID: ID instance.
  • THRESHOLD: nilai bilangan bulat antara 1 dan 100. Nilai ini menentukan persentase blok data dalam konten yang harus menjadi tidak valid agar konten ditandai untuk diperbarui.
  • CLUSTER_ID: ID cluster tempat instance berada.
  • REGION_ID: region cluster.
  • PROJECT_ID: ID project.

Memuat ulang tabel dan indeks ScaNN secara manual di penyimpanan kolom

Anda dapat memuat ulang tabel dan indeks ScaNN secara manual di mesin columnar kapan saja menggunakan fungsi SQL khusus.

Untuk memuat ulang data tabel di mesin columnar, jalankan fungsi google_columnar_engine_refresh.

SELECT google_columnar_engine_refresh(TABLE_NAME);

Ganti TABLE_NAME dengan string yang berisi nama tabel atau tampilan terwujud. Jika resource berada dalam skema selain public, tentukan nama skema menggunakan format SCHEMA_NAME.TABLE_NAME—misalnya, myschema.mytable.

Demikian pula, untuk memuat ulang indeks ScaNN secara manual di mesin berbasis kolom, jalankan fungsi google_columnar_engine_refresh_index.

SELECT google_columnar_engine_refresh_index(index => INDEX_NAME);

Ganti INDEX_NAME dengan string yang berisi nama indeks ScaNN yang akan di-refresh.