Mengonfigurasi mesin berbasis kolom di AlloyDB Omni

Pilih versi dokumentasi:

Halaman ini menjelaskan cara mengaktifkan atau menonaktifkan mesin berbasis kolom pada cluster database AlloyDB Omni. Bagian ini juga membahas cara mengonfigurasi ukuran awal yang sesuai untuk penyimpanan kolomnya.

Untuk mengetahui ringkasan konseptual mesin berbasis kolom AlloyDB, lihat Ringkasan mesin berbasis kolom AlloyDB Omni.

Mengaktifkan mesin columnar

Untuk menggunakan mesin berbasis kolom pada sebuah instance, tetapkan flag google_columnar_engine.enabled instance ke on.

Langkah-langkah yang Anda gunakan untuk menyetel tanda ini pada instance bergantung pada apakah Anda menjalankan AlloyDB Omni dalam container atau di cluster Kubernetes.

Server tunggal

Untuk menyetel google_columnar_engine.enabled ke on, lakukan langkah-langkah berikut:

  1. Jalankan perintah ALTER SYSTEM PostgreSQL:

    ALTER SYSTEM SET google_columnar_engine.enabled = 'on'
    
  2. Jika Anda ingin menyesuaikan konfigurasi mesin columnar, ikuti petunjuk di bagian berikutnya sebelum Anda memulai ulang server database. Jika tidak, selesaikan langkah berikut untuk memulai ulang server database sekarang.

  3. Agar perubahan parameter konfigurasi diterapkan, mulai ulang container yang sedang berjalan dengan AlloyDB Omni.

    Docker

      sudo docker restart CONTAINER_NAME

    Podman

      sudo podman restart CONTAINER_NAME

Kubernetes

Untuk menyetel 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: "15.7.1"
      primarySpec:
        parameters:
          google_columnar_engine.enabled: "on"

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

Mengonfigurasi ukuran penyimpanan kolom

Saat mesin berbasis kolom diaktifkan pada instance, AlloyDB Omni akan mengalokasikan sebagian memori instance untuk menyimpan data berbasis kolomnya. Mengkhususkan RAM berkecepatan tinggi untuk penyimpanan kolom Anda memastikan AlloyDB Omni dapat mengakses data kolom secepat mungkin.

Cache memori dan penyimpanan bersama-sama mewakili kapasitas keseluruhan mesin berbasis kolom.

Mengonfigurasi memori

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

Langkah-langkah yang Anda gunakan untuk mengonfigurasi memori column store untuk AlloyDB Omni bergantung pada apakah Anda menjalankan AlloyDB Omni dalam container atau di cluster Kubernetes.

Server tunggal

Untuk menyetel flag google_columnar_engine.memory_size_in_mb pada instance, lakukan hal berikut:

  1. Konfigurasi memori dengan menjalankan perintah PostgreSQL ALTER SYSTEM:

    ALTER SYSTEM SET google_columnar_engine.memory_size_in_mb = COLUMN_MEMORY_SIZE;
    

    Ganti COLUMN_MEMORY_SIZE dengan ukuran baru penyimpanan kolom, dalam megabyte—misalnya, 256.

  2. Agar perubahan parameter konfigurasi diterapkan, mulai ulang container yang sedang berjalan dengan AlloyDB Omni.

    Docker

    sudo docker restart CONTAINER_NAME

    Podman

    sudo podman restart CONTAINER_NAME

Kubernetes

Untuk menyetel 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: "15.7.1"
      primarySpec:
        parameters:
          google_columnar_engine.memory_size_in_mb: "COLUMN_MEMORY_SIZE"

Ganti kode berikut:

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

Mengonfigurasi cache penyimpanan

Sebelum mengonfigurasi cache penyimpanan, Anda harus mengaktifkan cache disk AlloyDB Omni.

Langkah-langkah yang Anda gunakan untuk mengaktifkan cache penyimpanan untuk AlloyDB Omni bergantung pada apakah Anda menjalankan AlloyDB Omni dalam container atau di cluster Kubernetes.

Server tunggal

  1. Konfigurasi cache penyimpanan sebagai berikut:

    ALTER SYSTEM SET google_columnar_engine.storage_cache_size = STORAGE_CACHE_SIZE;
    

    Ganti STORAGE_CACHE_SIZE dengan ukuran cache penyimpanan yang Anda inginkan, dalam megabyte. Secara default, 5% cache disk dialokasikan ke mesin columnar. Nilai maksimum yang diizinkan untuk tanda ini adalah 50% dari total cache disk atau 1000 * google_columnar_engine.memory_size_in_mb, mana saja yang lebih kecil.

  2. Agar perubahan parameter konfigurasi diterapkan, mulai ulang container yang sedang berjalan dengan AlloyDB Omni.

    Docker

    sudo docker restart CONTAINER_NAME

    Podman

    sudo podman restart CONTAINER_NAME

Kubernetes

Untuk mengaktifkan cache penyimpanan untuk database Anda, ubah manifes cluster database Anda untuk menambahkan atribut columnarSpillToDisk ke bagian features dari bagian primarySpec:

apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
  name: CLUSTER_NAME
spec:
  databaseVersion: "15.7.1"
  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 cluster database ini sama dengan yang Anda deklarasikan saat Anda membuatnya.
  • STORAGE_CACHE_SIZE: ukuran cache penyimpanan berkolom—misalnya, 5Gi. Jika Anda tidak menentukan nilai untuk kolom ini, 5% cache disk akan dialokasikan ke mesin columnar 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 penampung dan di cluster Kubernetes. Untuk mengetahui informasi selengkapnya tentang satuan ukuran, lihat Unit resource memori.
  • STORAGE_CLASS_NAME: nama class penyimpanan volume cache ultra cepat—misalnya, local-storage.

Mengaktifkan gabungan tervektorisasi

Mesin columnar memiliki fitur penggabungan tervektorisasi yang dapat meningkatkan performa penggabungan dengan menerapkan pemrosesan tervektorisasi ke kueri yang memenuhi syarat.

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

Untuk mengaktifkan gabungan tervektor pada instance, setel tanda google_columnar_engine.enable_vectorized_join instance ke on.

Untuk menyetel tanda ini pada instance, jalankan perintah PostgreSQL ALTER SYSTEM:

ALTER SYSTEM SET google_columnar_engine.enable_vectorized_join = 'on';

AlloyDB Omni mengalokasikan satu thread ke fitur gabungan tervektor secara default. Anda dapat meningkatkan jumlah thread yang tersedia untuk fitur ini dengan menyetel tanda google_columnar_engine.vectorized_join_threads ke nilai yang lebih besar. Nilai maksimumnya adalah cpu_count * 2.

Memuat ulang mesin berbasis kolom secara manual

Secara default, saat mesin columnar diaktifkan, mesin ini akan memuat ulang 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 mesin columnar

Untuk menonaktifkan mesin columbar pada instance, setel flag google_columnar_engine.enabled ke off.

Langkah-langkah yang Anda gunakan untuk menyetel tanda ini pada instance bergantung pada apakah Anda menjalankan AlloyDB Omni dalam container di satu server, atau di cluster Kubernetes.

Server tunggal

Untuk menyetel google_columnar_engine.enabled ke off, lakukan langkah-langkah berikut:

  1. Jalankan perintah ALTER SYSTEM PostgreSQL:
ALTER SYSTEM SET google_columnar_engine.enabled = 'off'
  1. Agar perubahan parameter konfigurasi diterapkan, mulai ulang container yang sedang berjalan dengan AlloyDB Omni.

Docker

Untuk memulai ulang container AlloyDB Omni, jalankan perintah docker container restart:

  sudo docker restart CONTAINER_NAME

Ganti CONTAINER_NAME dengan nama yang Anda tetapkan ke container AlloyDB Omni saat Anda menginstalnya.

Podman

Untuk memulai ulang container AlloyDB Omni, jalankan perintah podman container start:

  sudo podman restart CONTAINER_NAME

Ganti CONTAINER_NAME dengan nama yang Anda tetapkan ke container AlloyDB Omni saat Anda menginstalnya.

Kubernetes

Untuk menyetel 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: "15.7.1"
    primarySpec:
      parameters:
        google_columnar_engine.enabled: "off"

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

Memecahkan masalah mesin berbasis kolom

Memperbaiki error insufficient shared memory

Jika Anda menjalankan AlloyDB Omni tanpa memori bersama yang cukup untuk digunakan mesin berbasis kolom, Anda mungkin akan melihat error ini:

Insufficient shared memory for generating the columnar formats.

Anda dapat mengatasi masalah ini dengan menentukan jumlah memori bersama yang tersedia untuk penampung AlloyDB Omni. Cara Anda melakukannya berbeda-beda, bergantung pada sistem operasi host Anda.

Linux

Tingkatkan ukuran partisi /dev/shm mesin host Anda, menggunakan teknik seperti mengedit file /etc/fstab Anda.

macOS

Instal penampung AlloyDB Omni baru, dengan menentukan nilai memori bersama yang lebih besar untuk tanda --shm-size.

Memperbaiki kolom yang tidak terisi

Jika kolom tidak terisi di mesin kolom, salah satu hal berikut mungkin terjadi:

  • Kolom yang ingin Anda tambahkan berisi jenis data yang tidak didukung.

  • Persyaratan columnar engine tidak terpenuhi.

Untuk memecahkan masalah ini, coba langkah-langkah berikut:

  • Konfirmasi bahwa tabel atau tampilan terwujud dalam kueri berada di mesin columnar.
  • Verifikasi penggunaan mesin berbasis kolom menggunakan pernyataan EXPLAIN.

Langkah berikutnya