Anda dapat menambahkan tabel, tampilan terwujud, kolom, dan indeks vektor secara manual ke penyimpanan kolom untuk mengontrol data mana yang dipercepat oleh columnar engine. Gunakan pengelolaan manual jika Anda memerlukan kontrol terperinci atas konten penyimpanan kolom, bukan mengandalkan auto-columnarization untuk mengelola kolom secara otomatis.
Mengelola tabel, tampilan terwujud, dan indeks vektor
Berdasarkan workload, Anda dapat menambahkan kolom secara manual ke penyimpanan kolom atau menghapus beberapa atau semua kolom tabel atau tampilan terwujud dari penyimpanan kolom. Evaluasi kueri secara otomatis menggunakan data berbasis kolom yang disimpan untuk menjawab kueri.
Demikian pula, Anda dapat menambahkan indeks vektor HNSW atau ScaNN secara manual ke columnar engine untuk mempercepat penelusuran vektor. Akselerasi columnar engine untuk indeks HNSW tersedia secara umum (GA), sedangkan akselerasi untuk indeks ScaNN masih dalam tahap Pratinjau. Hal ini memungkinkan penelusuran tetangga terdekat yang efisien pada set data besar embedding vektor.
Saat memilih tabel, tampilan terwujud, dan kolom yang akan ditambahkan ke penyimpanan kolom, pertimbangkan ukuran penyimpanan kolom dan bentuk workload. Kandidat yang baik untuk dipilih mencakup tabel atau tampilan besar yang sering dipindai. Dalam tabel atau tampilan ini, identifikasi indeks non-unik besar yang digunakan oleh workload OLAP. Anda dapat menambahkan kolom indeks ini ke penyimpanan kolom dan berpotensi menghapus indeks, sehingga menghilangkan biaya performa yang terkait dengan pemeliharaannya pada instance utama.
Gunakan salah satu metode berikut untuk mengelola konten columnar engine:
- Mengelola konten penyimpanan kolom dengan memperbarui flag database
- Mengelola konten penyimpanan kolom menggunakan fungsi SQL
Lihat Data yang dapat Anda tambahkan ke penyimpanan kolom untuk mengetahui informasi tentang jenis data dan sumber data yang dapat Anda gunakan saat menambahkan tabel, kolom, dan tampilan terwujud ke penyimpanan kolom.
Sebelum memulai
- Anda harus memiliki salah satu peran IAM ini di project Google Cloud yang Anda gunakan:
roles/alloydb.admin(peran IAM yang telah ditetapkan untuk Admin AlloyDB)roles/owner(peran IAM dasar Pemilik)roles/editor(peran IAM dasar Editor)
Jika Anda tidak memiliki peran ini, hubungi Organization Administrator untuk meminta akses.
Mengelola konten penyimpanan kolom dengan memperbarui flag database
Anda dapat mengelola konten penyimpanan kolom secara manual dengan memperbarui flag database google_columnar_engine.relations. Flag ini memiliki satu nilai yang menentukan semua sumber data penyimpanan kolom Anda. Selama
memulai ulang, kolom yang ditentukan dalam flag ini akan otomatis diisi ke dalam
penyimpanan kolom.
Anda dapat menggunakan flag ini bersama dengan auto-columnarization. Jika
columnar engine memiliki memori yang tersedia setelah mengisi kolom yang
Anda tentukan melalui flag google_columnar_engine.relations,
auto-columnarization akan menambahkan kolom lebih lanjut ke penyimpanan kolom, sesuai
kebutuhan.
Untuk mengetahui informasi selengkapnya tentang cara menetapkan flag database instance menggunakan Google Cloud CLI atau konsol Google Cloud , lihat Mengonfigurasi flag database instance.
Menambahkan kolom menggunakan flag
Untuk menambahkan kolom ke penyimpanan kolom, tentukan flag google_columnar_engine.relations instance. Tetapkan nilainya ke daftar item yang dipisahkan koma, dengan setiap item menentukan daftar kolom yang akan disertakan dari tabel tertentu, dalam format ini:
DATABASE_NAME.SCHEMA_NAME.TABLE_NAME(COLUMN_LIST)
Ganti kode berikut:
DATABASE_NAME: database yang berisi kolom yang akan ditambahkan ke penyimpanan kolom.
SCHEMA_NAME: skema yang mengidentifikasi tabel atau tampilan terwujud yang akan ditambahkan ke penyimpanan kolom—misalnya,
public.TABLE_NAME: tabel atau tampilan terwujud yang berisi kolom yang akan ditambahkan ke penyimpanan kolom.
COLUMN_LIST: daftar kolom yang dipisahkan koma untuk ditambahkan ke penyimpanan kolom.
Untuk menambahkan semua kolom dari satu tabel atau satu tampilan terwujud, hapus daftar kolom:
DATABASE_NAME.SCHEMA_NAME.TABLE_NAME
Untuk mengetahui informasi selengkapnya tentang cara menetapkan flag database pada instance, lihat Mengonfigurasi flag database instance.
Sintaksis gcloud CLI saat menggunakan google_columnar_engine.relations
Jika Anda menggunakan Google Cloud CLI untuk menetapkan flag google_columnar_engine.relations, Anda harus menggunakan sintaksis pemisah alternatif untuk memisahkan flag database yang Anda tetapkan. Hal ini karena daftar kolom dipisahkan koma, sehingga Anda harus menggunakan karakter non-koma saat menentukan flag dalam argumen command line yang sama.
Contoh berikut menunjukkan penggunaan gcloud CLI untuk menambahkan dua kolom dalam skema public ke penyimpanan kolom. Contoh ini menetapkan flag terpisah untuk mengaktifkan columnar engine, karena menggunakan perintah gcloud alloydb instances update untuk menetapkan flag database apa pun juga harus menetapkan semua flag database lain yang ingin Anda miliki nilai non-default, meskipun sudah ditetapkan.
gcloud alloydb instances update INSTANCE_NAME \
--database-flags=^:^\
google_columnar_engine.relations='DATABASE_NAME.public.TABLE_NAME(COLUMN_1,COLUMN_2)'\
:google_columnar_engine.enabled=on\
[:FLAG_3=VALUE_3 ...] \
--region=REGION_ID \
--cluster=CLUSTER_IDGanti kode berikut:
INSTANCE_NAME: nama instance.DATABASE_NAME: database yang berisi kolom yang akan ditambahkan ke penyimpanan kolom.TABLE_NAME: nama tabel atau tampilan terwujud.COLUMN_1, COLUMN_2: kolom yang akan ditambahkan ke penyimpanan kolom.REGION_ID: region instance Anda.CLUSTER_ID: ID cluster.
Menghapus kolom menggunakan flag
Untuk menghapus kolom dari penyimpanan kolom, tetapkan nilai baru untuk flag google_columnar_engine.relations yang dijelaskan di bagian sebelumnya, dengan mengabaikan kolom yang ingin Anda hapus.
Untuk menghapus semua kolom dari penyimpanan kolom, batalkan penetapan flag google_columnar_engine.relations dari instance Anda.
Untuk mengetahui informasi selengkapnya tentang cara menetapkan flag database pada instance, lihat Mengonfigurasi flag database instance.
Mengelola konten penyimpanan kolom menggunakan fungsi SQL
Anda dapat mengelola konten penyimpanan kolom secara manual menggunakan fungsi SQL.
Memperkirakan persyaratan ruang penyimpanan kolom
Jalankan fungsi SQL google_columnar_engine_estimate untuk memperkirakan jumlah total ruang yang diperlukan untuk relasi di columnar engine.
Klien psql
SELECT google_columnar_engine_estimate(
relation => 'TABLE_NAME',
columns => 'COLUMN_LIST'
);
Ganti kode berikut:
-
TABLE_NAME: string yang berisi nama tabel atau tampilan terwujud. Jika tabel atau tampilan berada dalam skema selain publik, tentukan nama skema, titik, dan nama tabel atau tampilan; misalnya,'myschema.mytable'. -
COLUMN_LIST: string yang berisi daftar nama kolom yang ingin Anda tambahkan, dipisahkan koma dan peka huruf besar/kecil. Jika Anda ingin menambahkan semua kolom tabel atau tampilan terwujud ke penyimpanan kolom, hapus parameter ini.
Menambahkan kolom menggunakan fungsi SQL
Jalankan fungsi SQL google_columnar_engine_add untuk menambahkan kolom ke penyimpanan kolom.
Metode ini menambahkan kolom yang ditentukan ke penyimpanan kolom dan mengelola kolom hanya di node yang terhubung. Kolom baru tidak dipertahankan dalam penyimpanan di seluruh mulai ulang instance.
Metode ini tidak mengubah flag database google_columnar_engine.relations. Auto-columnarization
tidak mempertimbangkan kolom yang ditambahkan oleh fungsi SQL ini.
Klien psql
SELECT google_columnar_engine_add(
relation => 'TABLE_NAME',
columns => 'COLUMN_LIST'
);
Ganti kode berikut:
TABLE_NAME: string yang berisi nama tabel atau tampilan terwujud. Jika tabel atau tabel virtual berada dalam skema selainpublic, tentukan nama skema, titik, dan nama tabel atau tabel virtual; misalnya,'myschema.mytable'.COLUMN_LIST: string yang berisi daftar nama kolom yang ingin Anda tambahkan, dipisahkan koma dan peka huruf besar/kecil. Jika Anda ingin menambahkan semua kolom tabel atau tampilan terwujud ke penyimpanan kolom, hapus parameter ini.
Menghapus kolom menggunakan fungsi SQL
Jalankan fungsi SQL google_columnar_engine_drop sebagai berikut:
Klien psql
SELECT google_columnar_engine_drop(
relation => 'TABLE_NAME',
columns => 'COLUMN_LIST'
);
Ganti kode berikut:
TABLE_NAME: string yang berisi nama tabel atau tampilan terwujud. Jika tabel atau tabel virtual berada dalam skema selainpublic, tentukan nama skema, titik, dan nama tabel atau tabel virtual; misalnya,'myschema.mytable'.COLUMN_LIST: string yang berisi daftar nama kolom yang ingin Anda hapus, dipisahkan koma dan peka huruf besar/kecil. Jika Anda ingin menghapus semua kolom tabel atau tampilan terwujud dari penyimpanan kolom, hapus parameter ini.
Anda dapat menggunakan fungsi google_columnar_engine_drop untuk menghapus kolom yang ditambahkan dengan mengedit flag database google_columnar_engine.relations. Namun, saat
Anda melakukannya, kolom tersebut akan ditambahkan kembali ke penyimpanan berbasis kolom saat
instance dimulai ulang.
Mengelola indeks vektor di columnar engine
Untuk mempercepat penelusuran vektor, Anda dapat memuat indeks vektor ke cache indeks columnar engine. Akselerasi columnar engine untuk indeks HNSW tersedia secara umum (GA), sedangkan akselerasi untuk indeks ScaNN masih dalam tahap Pratinjau.
Menambahkan, menghapus, dan memverifikasi indeks vektor menggunakan fungsi SQL
Anda dapat menambahkan, menghapus, dan memverifikasi indeks vektor secara manual dari cache indeks menggunakan fungsi SQL. Menambahkan indeks ke cache dapat mempercepat kueri penelusuran vektor.
Menambahkan indeks vektor
Untuk menambahkan indeks tertentu ke cache indeks columnar engine, gunakan fungsi SQL berikut:
SELECT google_columnar_engine_add_index(index => 'INDEX_NAME');
Ganti INDEX_NAME dengan nama indeks vektor HNSW atau ScaNN yang ingin Anda tambahkan ke cache indeks columnar engine.
Menghapus indeks vektor
Untuk menghapus indeks vektor tertentu dari columnar engine, gunakan fungsi SQL berikut:
SELECT google_columnar_engine_drop_index(index => 'INDEX_NAME');
Ganti INDEX_NAME dengan nama indeks vektor yang ingin Anda hapus.
Memverifikasi penggunaan columnar engine
Untuk memverifikasi apakah pemindaian indeks vektor Anda menggunakan columnar engine, jalankan perintah EXPLAIN ANALYZE dengan opsi COLUMNAR_ENGINE:
EXPLAIN (ANALYZE TRUE, SCANN TRUE, COSTS FALSE, TIMING FALSE, SUMMARY FALSE, VERBOSE FALSE, COLUMNAR_ENGINE TRUE)
SELECT * FROM t ORDER BY val <=> '[0.5,0.5,0.5,0.5]' LIMIT 100;
Perintah ini menampilkan rencana kueri yang mirip dengan berikut ini:
Index Scan using t_ix3 on t t_1 (actual rows=100 loops=1)
Order By: (val <=> '[0.5,0.5,0.5,0.5]'::vector)
Limit: 100
ScaNN Info: (... columnar engine nodes hit=6...)
Columnar Engine ScaNN Info: (index found=true)
Keberadaan columnar engine nodes hit dan Columnar Engine ScaNN Info: (index found=true) dalam output mengonfirmasi bahwa columnar engine digunakan untuk kueri.