Mengelola tabel, tampilan terwujud, dan indeks ScaNN
Berdasarkan workload Anda, Anda dapat menambahkan kolom ke column store secara manual atau menghapus beberapa atau semua kolom tabel atau tampilan terwujud dari column store. Evaluasi kueri secara otomatis menggunakan data kolom yang disimpan untuk menjawab kueri.
Demikian pula, Anda dapat menambahkan indeks ScaNN ke columnar engine secara manual untuk mempercepat penelusuran vektor. 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 column store, pertimbangkan ukuran column store 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 column store dan berpotensi menghapus indeks, sehingga menghilangkan biaya performa yang terkait dengan pemeliharaannya di instance utama.
Gunakan salah satu metode berikut untuk mengelola konten columnar engine:
- Mengelola konten column store dengan memperbarui flag database
- Mengelola konten column store menggunakan fungsi SQL
Lihat Data yang dapat Anda tambahkan ke column store untuk mengetahui informasi tentang jenis data dan sumber data yang dapat Anda gunakan saat menambahkan tabel, kolom, dan tampilan terwujud ke column store.
Mengelola konten column store dengan memperbarui flag database
Anda dapat mengelola konten column store secara manual dengan memperbarui flag database google_columnar_engine.relations. Flag ini memiliki satu nilai yang menentukan semua sumber data column store Anda. Selama memulai ulang, kolom yang ditentukan dalam flag ini akan otomatis diisi ke column store.
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 column store, sesuai kebutuhan.
Untuk mengetahui informasi selengkapnya tentang cara menetapkan flag database, lihat Mengonfigurasi flag database AlloyDB Omni.
Menambahkan kolom menggunakan flag
Untuk menambahkan kolom ke column store, tentukan flag google_columnar_engine.relations. 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 column store.
SCHEMA_NAME: skema yang mengidentifikasi tabel atau tampilan terwujud yang akan ditambahkan ke column store—misalnya,
public.TABLE_NAME: tabel atau tampilan terwujud yang berisi kolom yang akan ditambahkan ke column store.
COLUMN_LIST: daftar kolom yang dipisahkan koma yang akan ditambahkan ke column store.
Untuk menambahkan semua kolom satu tabel atau satu tampilan terwujud, hapus daftar kolom:
DATABASE_NAME.SCHEMA_NAME.TABLE_NAME
Sintaksis SQL saat menggunakan google_columnar_engine.relations
Contoh berikut menunjukkan cara menggunakan perintah ALTER SYSTEM untuk menambahkan dua kolom dalam skema public ke column store.
ALTER SYSTEM SET google_columnar_engine.relations='DATABASE_NAME.public.TABLE_NAME(COLUMN_1,COLUMN_2)';Menghapus kolom menggunakan flag
Untuk menghapus kolom dari column store, tetapkan nilai baru untuk flag google_columnar_engine.relations yang dijelaskan di bagian sebelumnya, dengan menghapus kolom yang ingin Anda hapus.
Untuk menghapus semua kolom dari column store, hapus setelan flag google_columnar_engine.relations.
Untuk mengetahui informasi selengkapnya tentang cara menetapkan flag database, lihat Mengonfigurasi flag database AlloyDB Omni.
Mengelola konten column store menggunakan fungsi SQL
Anda dapat mengelola konten column store secara manual menggunakan fungsi SQL.
Memperkirakan persyaratan ruang column store
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 dipisahkan koma dan peka huruf besar/kecil yang ingin Anda tambahkan. Jika Anda ingin menambahkan semua kolom tabel atau tampilan terwujud ke column store, hapus parameter ini.
Menambahkan kolom menggunakan fungsi SQL
Jalankan fungsi SQL google_columnar_engine_add untuk menambahkan kolom ke column store.
Metode ini menambahkan kolom yang ditentukan ke column store dan hanya mengelola kolom di node yang terhubung. Kolom baru tidak dipertahankan dalam penyimpanan di seluruh instance yang dimulai ulang.
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 tampilan berada dalam skema selain
public, tentukan nama skema, titik, dan nama tabel atau tampilan; misalnya,'myschema.mytable'. - 'COLUMN_LIST': String yang berisi daftar nama kolom yang dipisahkan koma, peka huruf besar/kecil yang ingin Anda tambahkan. Jika Anda ingin menambahkan semua kolom tabel atau tampilan terwujud ke column store, 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'
);
- 'TABLE_NAME': String yang berisi nama tabel atau
tampilan terwujud. Jika tabel atau tampilan berada dalam skema selain
public, tentukan nama skema, titik, dan nama tabel atau tampilan; misalnya,'myschema.mytable'. - 'COLUMN_LIST': String yang berisi daftar nama kolom yang dipisahkan koma, peka huruf besar/kecil yang ingin Anda tambahkan. Jika Anda ingin menambahkan semua kolom tabel atau tampilan terwujud ke column store, 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 columnar store saat instance dimulai ulang.
Mengelola indeks ScaNN di columnar engine
Untuk mempercepat penelusuran vektor, Anda dapat memuat indeks ScaNN ke cache indeks columnar engine.
Menambahkan, menghapus, dan memverifikasi indeks ScaNN menggunakan fungsi SQL
Anda dapat menambahkan, menghapus, dan memverifikasi indeks ScaNN dari cache indeks secara manual menggunakan fungsi SQL. Menambahkan indeks ke cache dapat mempercepat kueri penelusuran vektor.
Menambahkan indeks ScaNN
Untuk menambahkan indeks tertentu ke cache indeks columnar engine, gunakan fungsi SQL berikut:
SELECT google_columnar_engine_add_index(index => 'SCANN_INDEX_NAME');
Ganti SCANN_INDEX_NAME dengan nama indeks ScaNN yang ingin Anda tambahkan ke cache indeks columnar engine.
Menghapus indeks ScaNN
Untuk menghapus indeks ScaNN tertentu dari columnar engine, gunakan fungsi SQL berikut:
SELECT google_columnar_engine_drop_index(index => 'SCANN_INDEX_NAME');
Ganti SCANN_INDEX_NAME dengan nama indeks ScaNN 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.