Columnar engine AlloyDB Omni mempercepat pemrosesan kueri SQL untuk pemindaian, penggabungan, dan agregasi dengan menyediakan komponen berikut:
Penyimpanan kolom yang berisi data tabel dan tampilan materialis untuk kolom yang dipilih, yang disusun ulang ke dalam format berorientasi kolom.
Mesin eksekusi dan perencana kueri berbasis kolom yang mendukung penggunaan penyimpanan kolom dalam kueri.
Anda dapat menggunakan columnar engine pada instance utama, instance kumpulan baca atau replika baca, atau keduanya. Anda juga dapat menggunakan auto-columnarization untuk menganalisis workload dan otomatis mengisi penyimpanan kolom dengan kolom yang memberikan peningkatan performa terbaik.
Untuk menggunakan mesin columnar dengan kueri tertentu, semua kolom yang direferensikan dalam kueri, seperti dalam gabungan dan pemindaian, harus ada di penyimpanan kolom.
Secara default, columnar engine ditetapkan untuk menggunakan 1 GB memori instance Anda. Bergantung pada beban kerja, penggunaan memori, dan apakah Anda telah mengonfigurasi instance pool baca atau replika baca, Anda dapat memilih untuk mengurangi alokasi memori columnar engine di instance utama dan mengalokasikan lebih banyak memori ke instance pool baca atau replika 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 columnar engine yang direkomendasikan untuk instance Anda, lihat Merekomendasikan ukuran memori penyimpanan kolom.
Jenis kueri yang mendapatkan manfaat dari columnar engine
Kueri tertentu dapat memanfaatkan columnar engine. Berikut adalah daftar operasi dan pola kuerinya yang paling diuntungkan dari columnar engine:
| Operasi | Pola kueri |
|---|---|
| Pemindaian tabel | Filter selektif, seperti klausa WHERE.Sejumlah 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 berbasis kolom dan hanya mengurutkan 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 gabungan yang digunakan. |
| Gabungan selektif | Hanya jika penggabungan berada di awal kueri pemindaian kolom. |
Untuk mengetahui informasi selengkapnya tentang kueri mana yang paling cocok dengan columnar engine, apakah
columnar engine digunakan oleh kueri, dan cara penggunaannya, lihat
Memverifikasi penggunaan columnar engine menggunakan EXPLAIN.
Cara menggunakan columnar engine di instance AlloyDB Omni
Untuk menggunakan columnar engine di instance AlloyDB Omni, Anda perlu melakukan langkah-langkah umum berikut:
Aktifkan mesin di instance.
Mengaktifkan mesin adalah operasi satu kali dan memerlukan pengaktifan ulang database.
Menambahkan kolom ke penyimpanan kolom.
Untuk menambahkan kolom ke penyimpanan kolom, gunakan salah satu metode berikut:
Gunakan kolom otomatis, yang menganalisis workload 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 pernyataanEXPLAINuntuk memverifikasi penggunaan columnar engine dalam kueri SQL.
Untuk petunjuk mendetail tentang cara menggunakan columnar engine, lihat Mengonfigurasi columnar engine.
Data yang dapat Anda tambahkan ke penyimpanan kolom
Ada beberapa batasan terkait jenis data dan sumber data yang dapat Anda gunakan saat menambahkan kolom ke penyimpanan kolom.
Jenis data yang didukung
Columnar engine hanya mendukung kolom dengan jenis data bawaan berikut:
arraybigintbooleanbyteachardatedecimaldouble precisionenumfloat4float8integerjsonjsonbnumericrealserialshortsmallinttexttimestampuuidvarchar
Mesin columnar mengabaikan upaya untuk menambahkan kolom dengan jenis data yang tidak didukung secara manual 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-daun
Tabel asing
Tabel atau tabel virtual dengan kurang dari 5.000 baris
Batasan columnar engine
- 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 akan dihapus secara otomatis. Untuk menghapus paksa
kolom yang ditambahkan secara manual, gunakan
google_columnar_engine_droppada instance Anda. - Auto-columnarization dapat menambahkan dan menghapus kolom secara dinamis berdasarkan penggunaan kueri.
- Tidak semua jenis data didukung oleh mesin berbasis kolom. 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 terwujud di penyimpanan berbasis kolom, Anda dapat mengurangi frekuensi update, atau menjadwalkan refresh columnar engine lebih sering.
Anda dapat membandingkan kolom
invalid_block_countdantotal_block_countdig_columnar_relationsuntuk memeriksa apakah tabel atau tampilan Anda terpengaruh. Jika Anda sering melakukan perubahan atau perubahan dalam jumlah besar pada tabel atau tampilan,invalid_block_countakan tinggi.