Halaman ini menjelaskan mesin kolom AlloyDB Omni dan memberikan petunjuk tentang cara menggunakan mesin dalam penginstalan cluster Kubernetes dan penampung. Halaman ini mengasumsikan bahwa Anda sudah memahami PostgreSQL.
Mesin kolom AlloyDB Omni mempercepat pemrosesan kueri SQL untuk pemindaian, penggabungan, dan agregat dengan menyediakan komponen berikut:
Penyimpanan kolom yang berisi data tabel dan tampilan yang diwujudkan untuk kolom yang dipilih, disusun ulang ke dalam format yang berorientasi pada kolom.
Perencana kueri kolom dan mesin eksekusi yang mendukung penggunaan penyimpanan kolom dalam kueri.
Anda dapat menggunakan mesin berbasis kolom di instance utama, instance kumpulan baca, atau keduanya. Anda juga dapat menggunakan kolomisasi otomatis untuk menganalisis beban kerja dan otomatis mengisi penyimpanan kolom dengan kolom yang memberikan peningkatan performa terbaik.
Untuk menggunakan mesin kolom dengan kueri tertentu, semua kolom yang direferensikan dalam kueri, seperti join, pemindaian, harus berada di penyimpanan kolom.
Secara default, mesin kolom disetel untuk menggunakan memori instance Anda sebesar 1 GB. Bergantung pada beban kerja, penggunaan memori, dan apakah Anda telah mengonfigurasi kumpulan baca, Anda dapat memilih untuk mengurangi alokasi memori mesin kolom di instance utama dan mengalokasikan lebih banyak memori ke instance kumpulan baca.
Untuk melihat dan memantau penggunaan memori oleh mesin kolom, lihat Melihat penggunaan memori penyimpanan kolom. Untuk mengubah ukuran memori yang digunakan oleh penyimpanan kolom, lihat Mengonfigurasi ukuran penyimpanan kolom. Untuk menemukan ukuran memori mesin kolom yang direkomendasikan untuk instance Anda, lihat Merekomendasikan ukuran memori penyimpanan kolom.
Jenis kueri yang mendapatkan manfaat dari mesin kolom
Kueri tertentu dapat memanfaatkan columnar engine. Berikut adalah daftar operasi dan pola kuerinya yang paling diuntungkan dari mesin kolom:
Operasi | Pola kueri |
---|---|
Pemindaian tabel | Filter selektif, seperti klausa WHERE .Jumlah kecil kolom dari tabel atau tampilan terwujud yang lebih besar. Ekspresi seperti LIKE , SUBSTR , atau TRIM . |
Fungsi agregasi | Hanya ekspresi seperti SUM , MIN , MAX , AVG , dan COUNT .Di awal kueri pemindaian kolom. Tidak dikelompokkan atau dikelompokkan menurut kolom. |
ORDER-BY |
Hanya jika operator berada di awal kueri pemindaian kolom. |
SORT |
Hanya jika operator berada di awal kueri pemindaian kolom dan hanya mengurutkan pada kolom dasar tabel atau tampilan terwujud. |
LIMIT |
Hanya jika operator berada di awal kueri
pemindaian kolom dan berada sebelum operator SORT atau GROUP BY . |
INNER HASH JOIN |
Hanya jika kunci yang digunakan adalah kolom dan tidak ada penentu join yang digunakan. |
Join selektif | Hanya jika join berada di awal kueri pemindaian kolom. |
Untuk informasi selengkapnya tentang kueri yang paling cocok dengan mesin kolom, apakah
mesin kolom digunakan oleh kueri, dan cara penggunaannya, lihat
Memverifikasi penggunaan mesin kolom menggunakan EXPLAIN
.
Menggunakan mesin berbasis kolom
Untuk menggunakan mesin kolom di instance AlloyDB Omni, Anda perlu melakukan langkah-langkah tingkat tinggi berikut:
Aktifkan mesin pada instance.
Mengaktifkan mesin adalah operasi satu kali dan memerlukan mulai ulang database.
Tambahkan kolom ke penyimpanan kolom.
Untuk menambahkan kolom ke penyimpanan kolom, gunakan salah satu metode berikut:
Gunakan kolom otomatis, yang menganalisis beban kerja Anda dan menambahkan kolom secara otomatis.
Tambahkan kolom secara manual berdasarkan pengetahuan Anda tentang beban kerja pada database dalam instance.
Anda dapat melacak apa yang ada di penyimpanan kolom menggunakan tampilan
g_columnar_relations
, dan, setelah kolom ditambahkan, Anda dapat menggunakan pernyataanEXPLAIN
untuk memverifikasi penggunaan mesin kolom dalam kueri SQL.
Untuk petunjuk mendetail tentang cara menggunakan mesin berbasis kolom, lihat Mengonfigurasi mesin berbasis kolom.
Data yang dapat Anda tambahkan ke penyimpanan kolom
Ada beberapa batasan pada jenis data dan sumber data yang dapat Anda gunakan saat menambahkan kolom ke penyimpanan kolom.
Jenis data yang didukung
Mesin kolom hanya mendukung kolom dengan jenis data bawaan berikut:
array
bigint
boolean
bytea
char
date
decimal
double precision
enum
float4
float8
integer
json
jsonb
numeric
real
serial
short
smallint
text
timestamp
uuid
varchar
Mesin kolom mengabaikan setiap upaya untuk menambahkan kolom secara manual dengan jenis data yang tidak didukung ke penyimpanan kolom.
Sumber data yang tidak didukung
Mesin kolom tidak mendukung tabel atau tampilan terwujud dengan atribut berikut sebagai sumber data:
Tabel berpartisi non-daun
Tabel asing
Tabel atau tampilan dengan kurang dari 5.000 baris
Batasan mesin kolom
- Jika Anda menjalankan kueri analisis pada kolom yang memiliki indeks, pengoptimal AlloyDB Omni mungkin memilih untuk menggunakan penyimpanan baris.
- Kolom yang ditambahkan secara manual ke penyimpanan kolom tidak otomatis dihapus. Untuk menghapus paksa
kolom yang ditambahkan secara manual, gunakan
google_columnar_engine_drop
di instance Anda. - Pembentukan kolom otomatis dapat menambahkan dan menghapus kolom secara dinamis berdasarkan penggunaan kueri.
- Tidak semua jenis data didukung oleh mesin kolom. Untuk melihat jenis data yang didukung, lihat jenis data yang didukung.
Pembaruan yang sering pada baris akan membuat data kolom menjadi tidak valid. Untuk memvalidasi tabel atau tampilan terwujud di penyimpanan kolom, Anda dapat mengurangi frekuensi update, atau menjadwalkan pembaruan mesin kolom lebih sering.
Anda dapat membandingkan kolom
invalid_block_count
dantotal_block_count
dig_columnar_relations
untuk memeriksa apakah tabel atau tampilan Anda terpengaruh. Jika Anda memiliki perubahan yang sering atau dalam volume tinggi pada tabel atau tampilan,invalid_block_count
akan tinggi.