Halaman ini memberikan ringkasan mesin columnar yang ditawarkan AlloyDB untuk PostgreSQL dan menunjukkan cara menggunakannya.
Columnar engine AlloyDB mempercepat pemrosesan kueri SQL untuk pemindaian, gabungan, dan agregasi dengan menyediakan komponen berikut:
Penyimpanan kolom yang berisi data tabel dan tampilan material untuk kolom yang dipilih, yang disusun ulang ke dalam format berorientasi kolom.
Perencana kueri dan mesin eksekusi berbasis kolom untuk mendukung penggunaan penyimpanan kolom dalam kueri.
Mesin columnar dapat digunakan pada instance utama, instance kumpulan baca, atau keduanya. Anda juga dapat menggunakan kolumnarisasi otomatis untuk menganalisis beban kerja dan mengisi kolom penyimpanan secara otomatis dengan kolom yang memberikan peningkatan performa terbaik.
Untuk menggunakan mesin columnar dengan kueri tertentu, semua kolom dalam fragmen kueri tersebut, seperti gabungan dan pemindaian, harus ada di penyimpanan kolom.
Secara default, mesin columnar disetel untuk menggunakan 30% memori instance Anda. Bergantung pada beban kerja, penggunaan memori, dan apakah Anda telah mengonfigurasi kumpulan baca, Anda dapat memilih untuk mengurangi alokasi memori mesin columnar pada 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 columnar yang direkomendasikan untuk instance Anda, lihat Merekomendasikan ukuran memori penyimpanan kolom.
Jenis kueri yang diuntungkan oleh columnar engine
Kueri tertentu dapat memanfaatkan columnar engine. Berikut adalah daftar operasi dan pola kueri yang paling diuntungkan dari mesin berbasis kolom:
Pemindaian tabel
- Bagian ini memiliki filter selektif, seperti klausa
WHERE
. - Tabel ini menggunakan sejumlah kecil kolom dari tabel atau tampilan terwujud yang lebih besar.
- Menggunakan ekspresi seperti
LIKE
,SUBSTR
, atau `TRIM.
- Bagian ini memiliki filter selektif, seperti klausa
Fungsi agregasi
- Mereka hanya menggunakan ekspresi berikut:
SUM
,MIN
,MAX
,AVG
, danCOUNT
. - Mereka berada di awal kueri pemindaian kolom.
- Kolom tersebut tidak dikelompokkan, atau dikelompokkan menurut kolom.
- Mereka hanya menggunakan ekspresi berikut:
ORDER-BY
danSORT
: hanya jikaORDER-BY
atauSORT
ada di hasil pemindaian kolom yang diakses dari mesin kolom.LIMIT
: hanya jika operator berada di awal kueri pemindaian kolom dan berada sebelum operatorSORT
atauGROUP BY
.INNER HASH JOIN
hanya jika kunci yang digunakan adalah kolom dan tidak ada penentu penggabungan yang digunakan.Penggabungan selektif hanya jika penggabungan berada di awal kueri pemindaian kolom.
Untuk mengetahui informasi selengkapnya tentang kueri mana yang paling cocok dengan mesin berbasis kolom, apakah mesin berbasis kolom digunakan oleh kueri, dan bagaimana cara penggunaannya, lihat Memverifikasi penggunaan mesin berbasis kolom menggunakan EXPLAIN
.
Cara menggunakan mesin berbasis kolom
Untuk menggunakan mesin berbasis kolom di instance AlloyDB, Anda melakukan langkah-langkah tingkat tinggi berikut:
Aktifkan engine di instance.
Mengaktifkan mesin adalah operasi satu kali dan memerlukan mulai ulang.
Tambahkan kolom ke penyimpanan kolom.
Untuk menambahkan kolom ke penyimpanan kolom, gunakan salah satu metode berikut:
Gunakan pengelompokan kolom otomatis, yang menganalisis beban kerja Anda dan menambahkan kolom secara otomatis.
Tambahkan kolom secara manual berdasarkan pengetahuan Anda tentang beban kerja pada database di 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 columnar dalam kueri SQL.
Untuk mengetahui 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 columnar 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
timestamptz
uuid
varchar
vector
(Pratinjau)
Mesin columnar mengabaikan upaya untuk menambahkan kolom secara manual dengan jenis data yang tidak didukung ke penyimpanan kolom.
Sumber data yang tidak didukung
Mesin columnar tidak mendukung tabel atau tampilan terwujud dengan atribut berikut sebagai sumber data:
Tabel berpartisi non-leaf
Tabel asing
Tabel atau tampilan dengan kurang dari 5.000 baris
Batasan Columnar Engine
- Jika Anda menjalankan kueri analisis pada kolom yang memiliki indeks, pengoptimal AlloyDB dapat memilih untuk menggunakan penyimpanan baris.
- Kolom yang ditambahkan secara manual ke penyimpanan kolom tidak akan dihapus secara otomatis. Untuk menghapus paksa
kolom yang ditambahkan secara manual, gunakan
google_columnar_engine_drop()
di instance Anda. - Kolumnarisasi otomatis dapat menambahkan dan menghapus kolom secara dinamis berdasarkan penggunaan kueri.
- Tidak semua jenis data didukung oleh mesin columnar. Untuk melihat jenis data yang didukung, lihat jenis data yang didukung.
Pembaruan baris yang sering kali membuat data kolom tidak valid. Untuk memvalidasi tabel atau tampilan yang diwujudkan di penyimpanan berkolom, Anda dapat mengurangi frekuensi pembaruan, atau menjadwalkan refresh mesin berkolom yang lebih sering.
Anda dapat membandingkan kolom
invalid_block_count
dantotal_block_count
di g_columnar_relations untuk memeriksa apakah tabel atau tampilan Anda terpengaruh. Jika Anda sering atau melakukan perubahan dalam jumlah besar pada tabel atau tampilan,invalid_block_count
akan tinggi.