Mengonfigurasi mesin berbasis kolom di AlloyDB Omni

Pilih versi dokumentasi:

Halaman ini menjelaskan cara mengaktifkan atau menonaktifkan columnar engine di cluster database AlloyDB Omni. Kursus ini juga membahas cara mengonfigurasi ukuran awal yang sesuai untuk penyimpanan kolomnya.

Untuk mengetahui ringkasan konseptual columnar engine AlloyDB, lihat Ringkasan columnar engine AlloyDB Omni.

Mengaktifkan columnar engine

Untuk menggunakan columnar engine pada sebuah instance, tetapkan flag google_columnar_engine.enabled instance ke on.

Kubernetes

Untuk menetapkan flag google_columnar_engine.enabled ke on, ubah manifes cluster database Anda untuk menambahkan atribut parameters ke bagian primarySpec:

    apiVersion: alloydbomni.dbadmin.goog/v1
    kind: DBCluster
    metadata:
      name: CLUSTER_NAME
    spec:
      databaseVersion: "18.4.0"
      primarySpec:
        parameters:
          google_columnar_engine.enabled: "on"

Ganti CLUSTER_NAME dengan nama cluster database Anda. Nama ini sama dengan nama cluster database yang Anda deklarasikan saat membuatnya.

Mengonfigurasi ukuran penyimpanan kolom

Saat columnar engine diaktifkan pada instance, AlloyDB Omni mengalokasikan sebagian memori instance untuk menyimpan data berbentuk kolom. Mengalokasikan RAM berkecepatan tinggi ke penyimpanan kolom Anda memastikan bahwa AlloyDB Omni dapat mengakses data kolom secepat mungkin.

Memori dan cache penyimpanan bersama-sama mewakili kapasitas keseluruhan columnar engine.

Mengonfigurasi memori

Anda dapat menetapkan alokasi ke ukuran tetap menggunakan flag google_columnar_engine.memory_size_in_mb.

Kubernetes

Untuk menetapkan flag google_columnar_engine.memory_size_in_mb, ubah manifes cluster database Anda untuk menambahkan atribut parameters ke bagian primarySpec:

    apiVersion: alloydbomni.dbadmin.goog/v1
    kind: DBCluster
    metadata:
      name: CLUSTER_NAME
    spec:
      databaseVersion: "18.4.0"
      primarySpec:
        parameters:
          google_columnar_engine.memory_size_in_mb: "COLUMN_MEMORY_SIZE"

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster database Anda. Nama ini sama dengan nama cluster database yang Anda deklarasikan saat membuatnya.
  • COLUMN_MEMORY_SIZE: ukuran baru penyimpanan kolom, dalam megabyte—misalnya, 256.

Mengonfigurasi cache penyimpanan

Anda dapat mengonfigurasi cache penyimpanan mesin berbentuk kolom di perangkat bersama atau khusus.

Kubernetes

Perangkat bersama

Untuk mengaktifkan cache penyimpanan bagi database Anda di perangkat bersama, ubah manifes cluster database Anda untuk menambahkan atribut columnarSpillToDisk ke bagian features di bagian primarySpec:

apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
  name: CLUSTER_NAME
spec:
  databaseVersion: "18.4.0"
  primarySpec:
    features:
      columnarSpillToDisk:
        cacheSize: STORAGE_CACHE_SIZE
      ultraFastCache:
        cacheSize: ULTRAFAST_CACHE_SIZE
        genericVolume:
          storageClass: "STORAGE_CLASS_NAME"
...

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster database Anda. Nama ini sama dengan nama cluster database yang Anda deklarasikan saat membuatnya.
  • STORAGE_CACHE_SIZE: ukuran cache penyimpanan berbentuk kolom—misalnya, 5Gi. Jika Anda tidak menentukan nilai untuk kolom ini, 5% cache disk akan dialokasikan ke columnar engine secara default.
  • ULTRAFAST_CACHE_SIZE: ukuran cache—misalnya, 100Gi. Nilainya harus lebih besar dari shared_buffers. Kolom ini bersifat opsional. Jika Anda tidak menentukan nilai kolom ini, AlloyDB Omni akan menggunakan semua ruang yang tersisa di disk, yang berlaku untuk AlloyDB Omni dalam container dan di cluster Kubernetes. Untuk mengetahui informasi selengkapnya tentang unit pengukuran, lihat Unit resource memori.
  • STORAGE_CLASS_NAME: nama kelas penyimpanan volume ultra fast cache—misalnya, local-storage.

Perangkat khusus

Secara default, cache penyimpanan columnar engine menggunakan perangkat yang sama dengan cache disk AlloyDB Omni. Namun, Anda dapat mengonfigurasi columnar engine untuk menggunakan perangkat khusus miliknya sendiri untuk cache penyimpanannya karena alasan berikut:

  • Anda tidak memerlukan cache disk karena penyimpanan utama Anda sudah berada di SSD berperforma tinggi. Dalam skenario ini, Anda dapat membuat cache penyimpanan columnar engine tanpa harus mengalokasikan ruang untuk cache disk.
  • Anda ingin menggunakan media penyimpanan yang berbeda untuk cache disk dan cache columnar engine Anda. Misalnya, Anda mungkin ingin menggunakan SSD standar untuk cache disk dan SSD NVMe berperforma lebih tinggi untuk columnar engine cache.
Menggunakan volume generik

Untuk mengonfigurasi perangkat khusus untuk cache penyimpanan columnar engine, ubah manifes DBCluster Anda untuk menambahkan atribut columnarSpillToDisk ke bagian features. Dalam columnarSpillToDisk, Anda dapat menentukan genericVolume dengan storageClass yang mengarah ke penyimpanan yang ingin Anda gunakan untuk cache columnar engine khusus.

Berikut adalah contoh cara mengonfigurasi perangkat khusus 50Gi untuk cache penyimpanan columnar engine menggunakan kelas penyimpanan bernama local-ssd:

apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
  name: CLUSTER_NAME
spec:
  databaseVersion: "18.4.0"
  primarySpec:
    features:
      columnarSpillToDisk:
        cacheSize: STORAGE_CACHE_SIZE
        genericVolume:
          storageClass: "STORAGE_CLASS_NAME"

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster database Anda. Nama ini sama dengan nama cluster database yang Anda deklarasikan saat membuatnya.
  • STORAGE_CACHE_SIZE: ukuran cache penyimpanan berbentuk kolom—misalnya, 50Gi. Jika Anda tidak menentukan nilai untuk kolom ini, 5% cache disk akan dialokasikan ke columnar engine secara default.
  • STORAGE_CLASS_NAME: nama kelas penyimpanan untuk volume cache mesin berbasis kolom khusus—misalnya, local-ssd.
Menggunakan volume sementara

Anda dapat mengonfigurasi columnar engine untuk menggunakan volume emptyDir sementara untuk cache penyimpanannya. Volume emptyDir dibuat saat Pod ditetapkan ke node, dan ada selama Pod tersebut berjalan di node tersebut. Jika Pod dihapus dari node, data dalam emptyDir akan dihapus secara permanen.

Untuk mengonfigurasi volume emptyDir untuk cache penyimpanan berbentuk kolom, ubah manifes DBCluster Anda untuk menambahkan atribut emptyDir ke bagian columnarSpillToDisk.

Berikut adalah contoh cara mengonfigurasi volume sementara untuk cache penyimpanan berbasis kolom:

apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
  name: CLUSTER_NAME
spec:
  databaseVersion: "17.5.0"
  primarySpec:
    features:
      columnarSpillToDisk:
        cacheSize: 50Gi
        emptyDir: {}

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster database Anda. Nama ini sama dengan nama cluster database yang Anda deklarasikan saat membuatnya.
  • STORAGE_CACHE_SIZE: ukuran cache penyimpanan berbentuk kolom—misalnya, 50Gi.

Mengaktifkan operasi gabung dengan vektor

Columnar engine memiliki fitur operasi gabung dengan vektor yang dapat meningkatkan performa operasi gabung dengan menerapkan pemrosesan vektor ke kueri yang memenuhi syarat.

Setelah Anda mengaktifkan operasi gabung dengan vektor, perencana kueri AlloyDB memiliki opsi untuk menerapkan operator operasi gabung dengan vektor, bukan operator hash join PostgreSQL standar. Perencana membuat keputusan ini dengan membandingkan biaya eksekusi kueri menggunakan setiap metode.

Untuk mengaktifkan operasi gabung dengan vektor pada instance, tetapkan flag google_columnar_engine.enable_vectorized_join instance ke on.

Untuk menetapkan flag ini di cluster database Kubernetes, tambahkan google_columnar_engine.enable_vectorized_join: "on" ke bagian parameters manifes DBCluster Anda. Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi flag database AlloyDB Omni.

AlloyDB Omni mengalokasikan satu thread ke fitur operasi gabung dengan vektor secara default. Anda dapat meningkatkan jumlah thread yang tersedia untuk fitur ini dengan menetapkan flag google_columnar_engine.vectorized_join_threads ke nilai yang lebih besar. Nilai maksimumnya adalah cpu_count * 2.

Memuat ulang columnar engine secara manual

Secara default, saat diaktifkan, columnar engine akan memperbarui penyimpanan kolom di latar belakang.

Untuk memuat ulang mesin kolom secara manual, jalankan kueri SQL berikut:

SELECT google_columnar_engine_refresh(relation =>'TABLE_NAME');

Ganti TABLE_NAME dengan nama tabel atau tampilan terwujud yang ingin Anda muat ulang secara manual.

Menonaktifkan columnar engine

Untuk menonaktifkan columnar engine pada instance, tetapkan flag google_columnar_engine.enabled ke off.

Kubernetes

Untuk menetapkan flag google_columnar_engine.enabled ke off, ubah manifes cluster database Anda untuk menambahkan atribut parameters ke bagian primarySpec:

  apiVersion: alloydbomni.dbadmin.goog/v1
  kind: DBCluster
  metadata:
    name: CLUSTER_NAME
  spec:
    databaseVersion: "18.4.0"
    primarySpec:
      parameters:
        google_columnar_engine.enabled: "off"

Ganti CLUSTER_NAME dengan nama cluster database Anda. Nama ini sama dengan nama cluster database yang Anda deklarasikan saat membuatnya.

Langkah berikutnya