Menjaga keaktualan data penyimpanan kolom dalam memori

Saat baris berubah, columnar engine menandai data penyimpanan kolom yang terpengaruh di AlloyDB untuk PostgreSQL sebagai tidak valid, dan akselerasi kueri akan menurun secara bertahap. Agar kueri tetap cepat, Anda dapat menyesuaikan batas refresh otomatis atau me-refresh tabel dan indeks vektor secara manual.

Columnar engine tidak langsung memperbarui penyimpanan kolom saat baris tabel ditambahkan, dihapus, atau diperbarui. Sebagai gantinya, kueri direncanakan dan dijalankan menggunakan data berorientasi kolom dari penyimpanan kolom dan data berorientasi baris dari cache baris dan penyimpanan database.

Seiring waktu, karena makin banyak blok data yang menjadi tidak valid, peningkatan performa kueri yang diberikan oleh columnar engine akan berkurang hingga data berbentuk kolom perlu diperbarui untuk mendapatkan kembali peningkatan performa kueri. Saat batas refresh ini tercapai, columnar engine akan menggunakan tugas latar belakang untuk me-refresh data yang tidak valid di penyimpanan kolom. Secara default, columnar engine menggunakan batas refresh 25, yang menunjukkan bahwa konten tertentu di penyimpanan kolom ditandai untuk di-refresh saat 25% kontennya menjadi tidak valid. Anda dapat mengubah batas refresh ini untuk menyesuaikan overhead refresh otomatis dan berpotensi mendapatkan performa kueri berkelanjutan yang lebih baik untuk workload aplikasi Anda.

Lakukan refresh manual tabel serta indeks vektor HNSW dan ScaNN jika Anda ingin perubahan pada tabel segera diterapkan di penyimpanan kolom setelah perubahan dilakukan.

Memeriksa persentase data tidak valid

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

Untuk melihat persentase invalidasi untuk semua relasi di penyimpanan berbasis kolom, jalankan kueri berikut:

SELECT relation_name, invalid_percentage FROM g_columnar_relations;

Untuk memeriksa persentase invalidasi 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 invalidasi 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';

Ganti INDEX_NAME dengan string yang berisi nama indeks vektor.

Mengubah batas refresh columnar engine

Untuk mengubah batas refresh columnar engine, 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 Flags, tambahkan flag baru atau ubah flag google_columnar_engine.refresh_threshold_percentage yang ada.
  5. Tetapkan nilai ke bilangan bulat antara 0 dan 100 (atau -1 untuk menonaktifkan pemuatan ulang otomatis). Nilai ini menunjukkan persentase data tidak valid yang memicu pemuatan ulang.
  6. Klik Done.

gcloud

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

Untuk mengubah batas refresh columnar engine, 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 0 dan 100 (atau -1 untuk menonaktifkan muat ulang otomatis). Nilai ini menentukan persentase blok data dalam konten yang harus menjadi tidak valid agar konten ditandai untuk dimuat ulang.
  • CLUSTER_ID: ID cluster tempat instance berada.
  • REGION_ID: region cluster.
  • PROJECT_ID: ID project.

Memperbarui tabel dan indeks vektor secara manual di penyimpanan kolom

Anda dapat memuat ulang tabel dan indeks vektor secara manual di columnar engine kapan saja menggunakan fungsi SQL khusus. Jenis indeks yang didukung adalah ScaNN dan HNSW.

Untuk memuat ulang data tabel di columnar engine, 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 vektor secara manual di columnar engine, 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 yang akan dimuat ulang.