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: "16.8.0"
      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. Mendedikasikan RAM berkecepatan tinggi untuk penyimpanan kolom Anda memastikan bahwa 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: "16.8.0"
      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

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

Server tunggal

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

Perangkat khusus

Di perangkat khusus, untuk mengaktifkan cache penyimpanan mesin columnar AlloyDB Omni untuk penampung server tunggal, Anda perlu menyediakan disk dan membuat sistem file, lalu memasang direktori cache di dalam AlloyDB Omni, dan terakhir mengaktifkan cache penyimpanan columnar.

Menyediakan disk dan membuat sistem file

Untuk menyediakan disk dan membuat sistem file untuk cache penyimpanan mesin columnar AlloyDB Omni, Anda membuat sistem file di satu atau beberapa disk dan memasangnya di dalam penampung dengan AlloyDB Omni. Selain itu, Anda dapat menggunakan utilitas seperti mdadm atau lvm untuk menggabungkan kapasitas menggunakan beberapa disk dan menggunakan sistem file apa pun. Langkah-langkah berikut menunjukkan penggunaan lvm dan ext4 pada instance Ubuntu Compute Engine menggunakan SSD NVMe.

  1. Buat grup volume dari semua perangkat fisik yang tersedia:

    nvme_prefix="STORAGE_PREFIX"
    nvme_list=$(ls "$nvme_prefix"*)
    sudo vgcreate VOLUME_GROUP ${nvme_list}

    Ganti kode berikut:

    • STORAGE_PREFIX: awalan jalur disk lokal target yang terpasang ke mesin virtual menggunakan antarmuka nonvolatile memory express (NVMe)—misalnya, di Google Cloud, jalur perangkat NVMe selalu dimulai dengan /dev/nvme0n.
    • VOLUME_GROUP: nama grup volume tempat SSD Anda digabungkan—misalnya, omni-disk-cache-volume.
  2. Untuk membuat volume logis dari kapasitas kosong grup volume dari langkah sebelumnya, gunakan perintah berikut:

    sudo lvcreate -n LOGICAL_VOLUME -l 100%FREE VOLUME_GROUP

    Ganti LOGICAL_VOLUME dengan nama volume logis yang diperlakukan sebagai partisi oleh LVM—misalnya, omni_disk_cache_device.

  3. Buat sistem file ext4 pada volume logis. Jika perlu, Anda dapat menentukan opsi ext4 lainnya yang tunduk pada keamanan data.
    sudo mkfs.ext4 /dev/VOLUME_GROUP/LOGICAL_VOLUME
  4. Untuk membuat direktori yang berfungsi sebagai titik pemasangan di mesin host dan memasang sistem file, gunakan perintah berikut:

    sudo mkdir /OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY
    sudo mount /dev/VOLUME_GROUP/LOGICAL_VOLUME /OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY

    Ganti OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY dengan nama direktori atau jalur ke direktori yang berfungsi sebagai titik pemasangan—misalnya, omni_columnar_storage_cache_directory.

Pasang direktori cache penyimpanan columnar di dalam AlloyDB Omni

Sebelum mengaktifkan cache disk untuk AlloyDB Omni yang berjalan di dalam container, Anda harus memasang direktori cache di dalam AlloyDB Omni.

Untuk mengetahui informasi tentang cara menginstal AlloyDB Omni dari image Docker dan menyesuaikannya, lihat Menyesuaikan penginstalan AlloyDB Omni.

Untuk memasang OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY di dalam container Docker yang menjalankan AlloyDB Omni, gunakan perintah berikut:

Docker

  sudo docker run --name CONTAINER_NAME 
-e POSTGRES_PASSWORD=PASSWORD
-e PGDATA=/var/lib/postgresql/data/pgdata
-v DATA_DIR:/var/lib/postgresql/data
-v /OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY:/CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
-d google/alloydbomni

Ganti kode berikut:

  • CONTAINER_NAME: nama yang akan ditetapkan ke penampung AlloyDB Omni baru—misalnya, my-omni.
  • PASSWORD: sandi untuk administrator root database PostgreSQL Anda.
  • DATA_DIR: jalur sistem file yang Anda inginkan agar AlloyDB Omni gunakan untuk direktori datanya.
  • CACHE_DIRECTORY_PATH_INSIDE_CONTAINER: direktori cache di dalam container AlloyDB Omni yang dipetakan ke titik pemasangan di mesin host—misalnya, berdasarkan nilai direktori cache di dalam container, baik /omni_disk_cache_directory, mirip dengan OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY, atau /disk/cache/inside/container.

Podman

  podman run --name CONTAINER_NAME 
-e POSTGRES_PASSWORD=PASSWORD
-e PGDATA=/var/lib/postgresql/data/pgdata
-v DATA_DIR:/var/lib/postgresql/data
-v /OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY:/CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
-d docker.io/google/alloydbomni

Ganti kode berikut:

  • CONTAINER_NAME: nama yang akan ditetapkan ke penampung AlloyDB Omni baru—misalnya, my-omni.
  • PASSWORD: sandi untuk administrator root database PostgreSQL Anda.
  • CACHE_DIRECTORY_PATH_INSIDE_CONTAINER: direktori cache di dalam container AlloyDB Omni yang dipetakan ke titik pemasangan di mesin host—misalnya, berdasarkan nilai direktori cache di dalam container, baik /omni_columnar_storage_cache_directory, mirip dengan OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY, atau /disk/cache/inside/container.

Untuk memberikan izin akses penuh ke OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY yang di-mount, gunakan perintah berikut:

Docker

  sudo docker exec -it CONTAINER_NAME chown postgres:postgres /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
  sudo docker exec -it CONTAINER_NAME chmod -R a+rw  /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
  

Podman

  sudo podman exec -it CONTAINER_NAME chown postgres:postgres /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
  sudo podman exec -it CONTAINER_NAME chmod -R a+rw  /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
  

Mengaktifkan cache penyimpanan berkolom AlloyDB Omni untuk AlloyDB Omni yang berjalan di dalam container

Untuk mengaktifkan cache penyimpanan berkolom AlloyDB Omni di perangkat khusus untuk database Anda, tetapkan parameter Grand Unified Configuration (GUC) yang sesuai setelah memverifikasi bahwa direktori cache yang terpasang dapat diakses dari dalam container Docker.

  1. Tetapkan direktori cache penyimpanan berkolom:

    ALTER SYSTEM SET google_columnar_engine.omni_storage_cache_directory = OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY;
    

    Ganti OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY dengan jalur absolut ke direktori khusus tempat Anda ingin AlloyDB Omni menyimpan file cache penyimpanan mesin columnar. Pastikan direktori ini ada dan memiliki izin tulis yang sesuai untuk pengguna database.

  2. Konfigurasi ukuran cache penyimpanan:

    ALTER SYSTEM SET google_columnar_engine.storage_cache_size = STORAGE_CACHE_SIZE;
    

    Ganti STORAGE_CACHE_SIZE dengan ukuran cache penyimpanan kolom yang Anda inginkan, dalam megabyte. Secara default, seluruh ukuran perangkat khusus dialokasikan ke mesin columnar, tanpa memengaruhi cache disk. Nilai maksimum yang diizinkan untuk tanda ini adalah 1000 * google_columnar_engine.memory_size_in_mb mana saja yang minimum.

  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

Perangkat bersama

Sebelum mengonfigurasi cache penyimpanan berkolom ke perangkat bersama dengan cache disk, Anda harus mengaktifkan cache disk AlloyDB Omni.

Konfigurasi cache penyimpanan di perangkat bersama sebagai berikut:

  1. Mengonfigurasi cache penyimpanan:

    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: "16.8.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 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: "16.8.0"
    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.

Langkah berikutnya