Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
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.
Fungsi agregasi
Mereka hanya menggunakan ekspresi berikut: SUM, MIN, MAX, AVG, dan COUNT.
Mereka berada di awal kueri pemindaian kolom.
Kolom tersebut tidak dikelompokkan, atau dikelompokkan menurut kolom.
ORDER-BY dan SORT: hanya jika ORDER-BY atau SORT ada di hasil pemindaian kolom yang diakses dari mesin kolom.
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 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:
Anda dapat melacak apa yang ada di penyimpanan kolom menggunakan tampilan g_columnar_relations, dan setelah
kolom ditambahkan, Anda dapat menggunakan pernyataan EXPLAIN untuk memverifikasi penggunaan
mesin columnar dalam kueri SQL.
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
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 terwujud di penyimpanan berkolom, Anda dapat mengurangi frekuensi pembaruan, atau menjadwalkan refresh mesin berkolom yang lebih sering.
Anda dapat membandingkan kolom invalid_block_count dan total_block_count di
g_columnar_relations
untuk memeriksa apakah tabel atau tampilan Anda terpengaruh. Jika Anda sering atau sering kali melakukan perubahan pada tabel atau tampilan, invalid_block_count akan tinggi.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Sulit dipahami","hardToUnderstand","thumb-down"],["Informasi atau kode contoh salah","incorrectInformationOrSampleCode","thumb-down"],["Informasi/contoh yang saya butuhkan tidak ada","missingTheInformationSamplesINeed","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2025-08-25 UTC."],[[["\u003cp\u003eThe AlloyDB columnar engine accelerates SQL query processing for scans, joins, and aggregates by storing selected table and materialized-view data in a column-oriented format, and is supported on the primary instance and/or read pool.\u003c/p\u003e\n"],["\u003cp\u003eQueries with selective filters, aggregation functions (SUM, MIN, MAX, AVG, COUNT), and certain joins and sorts are among those that benefit from the columnar engine, as long as the related columns are in the columnar store.\u003c/p\u003e\n"],["\u003cp\u003eThe columnar engine can be enabled, and columns can be added to its store either manually or via auto-columnarization, which analyzes your workload to automatically identify columns for optimization.\u003c/p\u003e\n"],["\u003cp\u003eThe columnar engine supports a limited set of data types, does not work with certain data sources like non-leaf partitioned tables, and frequent updates can invalidate columnar data.\u003c/p\u003e\n"],["\u003cp\u003eThe columnar engine's memory allocation can be configured, with the default being 30% of instance memory, and you can monitor memory usage and verify columnar engine utilization using \u003ccode\u003eg_columnar_relations\u003c/code\u003e and \u003ccode\u003eEXPLAIN\u003c/code\u003e.\u003c/p\u003e\n"]]],[],null,["# About the AlloyDB columnar engine\n\nThis page provides an overview of the columnar engine that\nAlloyDB for PostgreSQL offers and shows how to use it.\n\nThe AlloyDB columnar engine accelerates SQL query\nprocessing of scans, joins, and aggregates by providing these components:\n\n- A column store that contains table and materialized-view data for selected\n columns, reorganized into a column-oriented format.\n\n- A columnar query planner and execution engine to support\n use of the column store in queries.\n\nThe columnar engine can be used on the primary instance, a read pool instance, or both.\nYou can also use [auto-columnarization](/alloydb/docs/columnar-engine/manage-content-recommendations#default-schedule)\nto analyze your workload and automatically populate the column store with the columns\nthat provide the best performance gain.\n\nTo use the columnar engine with a specific query, all columns in that query fragments,\nsuch as joins and scans, must be in the column store.\n\nBy default, the columnar engine is set to use 30% of your instance's memory.\nDepending on your workload, memory usage, and if you have a read pool configured,\nyou may choose to reduce the columnar engine memory allocation on your primary\ninstance and allocate more memory to the read pool instance.\nTo view and monitor memory usage by the columnar\nengine, see [View column store memory usage](/alloydb/docs/columnar-engine/monitor-tune#usage).\nTo modify the memory size used by the column store, see\n[Configure the size of the column store](/alloydb/docs/columnar-engine/configure#configure).\nTo find the recommended columnar engine memory size for your instance, see\n[Recommend column store memory size](/alloydb/docs/columnar-engine/manage-content-recommendations#recommend-populate).\n\nQuery types that benefit from the columnar engine\n-------------------------------------------------\n\nCertain queries can benefit from the columnar engine. The following is a list of\noperations and their query patterns that benefit most from the columnar engine:\n\n- **Table scans**\n\n - It has selective filters, such as `WHERE` clauses.\n - It uses a small number of columns from a larger table or materialized view.\n - It uses expressions such as `LIKE`, `SUBSTR`, or \\`TRIM.\n- **Aggregation functions**\n\n - They only use the following expressions: `SUM`, `MIN`, `MAX`, `AVG`, and `COUNT`.\n - They are at the beginning of the query of a columnar scan.\n - They are ungrouped, or are grouped-by columns.\n- **`ORDER-BY`** and **`SORT`** : only when the `ORDER-BY` or `SORT` is on the scan results of columns accessed from the columnar engine.\n\n- **`LIMIT`** : only if the operator is at the beginning of the query\n of a columnar scan and is before any `SORT` or `GROUP BY` operators.\n\n- **`INNER HASH JOIN`** only if the keys used are columns and no join\n qualifiers are used.\n\n- **Selective joins** only if the joins are at the beginning of the query\n of a columnar scan.\n\nFor more information on which queries work best with the columnar engine, whether\nthe columnar engine was used by a query, and how it was used, see\n[Verify usage of the columnar engine using `EXPLAIN`](/alloydb/docs/columnar-engine/monitor-tune#explain).\n\nHow to use the columnar engine\n------------------------------\n\nTo use the columnar engine in an AlloyDB instance, you perform these\nhigh-level steps:\n\n1. [Enable the engine](/alloydb/docs/columnar-engine/enable) on the instance.\n\n Enabling the engine is a one-time operation and requires a restart.\n2. Add columns to the column store.\n\n To add columns to the column store, use one of the following methods:\n - [Use auto-columnarization](/alloydb/docs/columnar-engine/manage-content-recommendations),\n which analyzes your workload and automatically adds columns.\n\n - [Add the columns manually](/alloydb/docs/columnar-engine/manage-content-manually)\n based on your knowledge of the workload on the databases in the instance.\n\n3. You can track what's in the column store using [the `g_columnar_relations`\n view](/alloydb/docs/columnar-engine/monitor-tune#relations-view), and, after\n columns have been added, you can use [the `EXPLAIN`\n statement](/alloydb/docs/columnar-engine/monitor-tune#explain) to verify usage of\n the columnar engine in SQL queries.\n\nFor detailed instructions on how to use the columnar engine, see\n[Configure the columnar engine](/alloydb/docs/columnar-engine/configure).\n\nWhat data you can add to the column store\n-----------------------------------------\n\nThere are some limitations on the data types and data sources you can use\nwhen adding columns to the column store.\n\n### Supported data types\n\nThe columnar engine supports only columns with the following built-in\ndata types:\n\n- `array`\n- `bigint`\n- `boolean`\n- `bytea`\n- `char`\n- `date`\n- `decimal`\n- `double precision`\n- `enum`\n- `float4`\n- `float8`\n- `integer`\n- `json`\n- `jsonb`\n- `numeric`\n- `real`\n- `serial`\n- `short`\n- `smallint`\n- `text`\n- `timestamp`\n- `timestamptz`\n- `uuid`\n- `varchar`\n- `vector` ([Preview](https://cloud.google.com/products#product-launch-stages))\n\nThe columnar engine ignores any attempts to manually add columns with unsupported\ndata types to the column store.\n\n### Unsupported data sources\n\nThe columnar engine does not support tables or materialized views with the\nfollowing attributes as data sources:\n\n- Non-leaf partitioned tables\n\n- Foreign tables\n\n- Tables or views with fewer than 5,000 rows\n\nColumnar Engine limitations\n---------------------------\n\n- If you're running an analytical query on a column that has an index, the AlloyDB optimizer may choose to use row-store.\n- Columns added manually to the column store aren't automatically removed. To force remove manually added columns, use [`google_columnar_engine_drop()`](/alloydb/docs/columnar-engine/manage-content-manually#drop-by-function) on your instance.\n- Auto-columnarization may dynamically add and remove columns based on query usage.\n- Not all data types are supported by the columnar engine. To see supported data types, see [supported data types](#supported-data-types).\n- Frequent updates to rows invalidate columnar data. To validate a table or a\n materialized view in the columnar store, you can either reduce the update\n frequency, or\n [schedule more frequent the columnar engine refreshes](/alloydb/docs/columnar-engine/manage-content-recommendations#auto-schedule).\n\n You can compare the `invalid_block_count` and `total_block_count` columns in\n [g_columnar_relations](/alloydb/docs/columnar-engine/monitor-tune#relations-view)\n to check if your table or view is impacted. If you have a frequent or high-volume changes to your table or view, the `invalid_block_count` will be high.\n\nWhat's next\n-----------\n\n- [Configure the columnar engine](/alloydb/docs/columnar-engine/configure).\n\n- [Configure the columnar engine on AlloyDB Omni](/alloydb/docs/omni/columnar-engine/configure).\n\n- Learn how to [accelerate analytical queries using the AlloyDB columnar engine](https://www.cloudskillsboost.google/paths/22/course_templates/642/labs/501234)."]]