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:
Jalankan perintah
ALTER SYSTEM
PostgreSQL:ALTER SYSTEM SET google_columnar_engine.enabled = 'on'
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.
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.12.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. 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:
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
.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.12.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.
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
.
-
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
. - Buat sistem file
ext4
pada volume logis. Jika perlu, Anda dapat menentukan opsiext4
lainnya yang tunduk pada keamanan data.sudo mkfs.ext4 /dev/VOLUME_GROUP/LOGICAL_VOLUME
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 denganOMNI_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 denganOMNI_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 memastikan bahwa direktori cache yang terpasang dapat diakses dari dalam container Docker.
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.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.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:
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.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.12.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 darishared_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:
- Jalankan perintah
ALTER SYSTEM
PostgreSQL:
ALTER SYSTEM SET google_columnar_engine.enabled = 'off'
- 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.12.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.
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
Pelajari tutorial Google Codelab Mempercepat kueri analisis dengan columnar engine di AlloyDB Omni.