Ketika sebuah instans Hologres memiliki beberapa virtual warehouse, Anda dapat menargetkan salah satunya pada saat koneksi — atau beralih warehouse di tengah sesi tanpa perlu menyambung ulang. Halaman ini menjelaskan cara menentukan virtual warehouse dalam string koneksi JDBC dan psql, serta cara beralih warehouse menggunakan SQL setelah terhubung.
Menghubungkan menggunakan JDBC
Format string koneksi
Tanpa virtual warehouse (menggunakan virtual warehouse default Anda):
jdbc:postgresql:<Endpoint>:<Port>/<database_name>Dengan virtual warehouse:
jdbc:postgresql://<Endpoint>:<Port>/<database_name>@<warehouse_name>Parameter
| Parameter | Wajib | Deskripsi |
|---|---|---|
Endpoint | Ya | Endpoint instans Hologres. Buka konsol Hologres, klik Instances di panel navigasi kiri, klik instans target, lalu temukan endpoint di bagian Network Information pada halaman Instance Details. Pilih endpoint yang sesuai dengan lingkungan jaringan Anda — penggunaan endpoint yang salah akan menyebabkan koneksi gagal. |
Port | Ya | Port instans Hologres. Ditemukan di bagian Network Information yang sama. |
database_name | Ya | Nama database Hologres. Setelah instans dibuat, sistem secara otomatis membuat database postgres. Database postgres memiliki resource terbatas; untuk beban kerja bisnis, buat database khusus sebagai gantinya. Contoh: demo. |
warehouse_name | Tidak | Virtual warehouse yang akan digunakan untuk koneksi ini. Jika diabaikan, koneksi akan menggunakan virtual warehouse default Anda. Untuk beralih warehouse setelah terhubung, gunakan SET current_warehouse. |
Contoh
Tanpa virtual warehouse — terhubung ke database demo menggunakan virtual warehouse default:
jdbc:postgresql://hgpostcn-cn-zz4xxxxxxxxxx-cn-shenzhen-vpc-st.hologres.aliyuncs.com:80/demoDengan virtual warehouse — terhubung ke database demo menggunakan warehouse_1:
jdbc:postgresql://hgpostcn-cn-zz4xxxxxxxxxx-cn-shenzhen-vpc-st.hologres.aliyuncs.com:80/demo@warehouse_1Prioritas rute virtual warehouse
Ketika string koneksi tidak secara eksplisit menentukan virtual warehouse, Hologres menyelesaikan virtual warehouse untuk koneksi tersebut dengan urutan prioritas berikut:
Virtual warehouse yang ditentukan dalam string koneksi, seperti yang ditunjukkan dalam contoh sebelumnya.
Virtual warehouse default pengguna Anda, jika Anda telah menetapkannya dengan memanggil
hg_set_user_default_warehouse.Virtual warehouse default instans,
init_warehouse, yang hanya digunakan jika kedua opsi di atas tidak ditetapkan.
Untuk memeriksa virtual warehouse mana yang sebenarnya digunakan oleh koneksi saat ini, jalankan:
SELECT current_warehouse();Perutean otomatis untuk permintaan tulis (DML)
Parameter Grand Unified Configuration (GUC) hg_experimental_enable_warehouse_dml_auto_routing mengontrol bagaimana permintaan tulis (DML) dirutekan lintas virtual warehouse. Parameter ini diatur ke on secara default. Untuk mengonfirmasi nilai saat ini, jalankan SHOW hg_experimental_enable_warehouse_dml_auto_routing;. Saat parameter ini bernilai on, permintaan tulis secara otomatis dirutekan ke virtual warehouse leader untuk dieksekusi, sehingga penulisan berhasil meskipun koneksi Anda menggunakan virtual warehouse non-leader.
Jika Anda mengubah parameter ini menjadi off, permintaan tulis yang dikeluarkan pada virtual warehouse non-leader akan ditolak. Permintaan tulis yang dikeluarkan langsung pada virtual warehouse leader tidak terpengaruh dan tetap berhasil.
Menghubungkan menggunakan psql
Format string koneksi
Tanpa virtual warehouse (menggunakan virtual warehouse default Anda):
PGUSER="<AccessKey_ID>" PGPASSWORD="<AccessKey_Secret>" psql -h <Endpoint> -p <Port> -d <database_name>Dengan virtual warehouse:
PGUSER="<AccessKey_ID>" PGPASSWORD="<AccessKey_Secret>" psql -h <Endpoint> -p <Port> -d <database_name>@<warehouse_name>Flag -d menerima <database_name>@<warehouse_name> sebagai satu nilai. Bagian @<warehouse_name> bukanlah flag terpisah — bagian ini ditambahkan langsung ke nama database.
Parameter
| Parameter | Wajib | Deskripsi |
|---|---|---|
AccessKey_ID | Ya | Akun Alibaba Cloud: AccessKey ID Anda. Dapatkan dari Manajemen AccessKey. Akun kustom: Nama pengguna Anda, misalnya BASIC$abc. |
AccessKey_Secret | Ya | Akun Alibaba Cloud: AccessKey secret Anda. Akun kustom: Kata sandi Anda. |
Endpoint | Ya | Endpoint instans Hologres. Ditemukan pada halaman Instance Details di konsol Hologres. |
Port | Ya | Port instans Hologres. Ditemukan pada halaman Instance Details yang sama. |
database_name | Ya | Nama database Hologres. Setelah instans dibuat, sistem secara otomatis membuat database postgres. Database postgres memiliki resource terbatas; untuk beban kerja bisnis, buat database khusus sebagai gantinya. Contoh: demo. |
warehouse_name | Tidak | Virtual warehouse yang akan digunakan untuk koneksi ini. Ditambahkan ke database_name sebagai <database_name>@<warehouse_name>. Jika diabaikan, koneksi akan menggunakan virtual warehouse default Anda. |
Contoh
Baris perintah — tanpa virtual warehouse:
PGUSER="xxx" PGPASSWORD="xxx" psql -h hgpostcn-cn-zz4xxxxxxxxxx-cn-shenzhen-vpc-st.hologres.aliyuncs.com -p 80 -d demoBaris perintah — dengan virtual warehouse:
PGUSER="xxx" PGPASSWORD="xxx" psql -h hgpostcn-cn-zz4xxxxxxxxxx-cn-shenzhen-vpc-st.hologres.aliyuncs.com -p 80 -d demo@warehouse_1Beralih virtual warehouse menggunakan SQL
Tersedia di Hologres V4.0 dan versi lebih baru.
Gunakan SET current_warehouse untuk beralih virtual warehouse untuk koneksi saat ini tanpa perlu menyambung ulang. Untuk memeriksa warehouse aktif kapan saja, jalankan SHOW current_warehouse.
Penggunaan dasar:
-- Beralih ke virtual warehouse lain.
SET current_warehouse = <warehouse_name>;
-- Verifikasi virtual warehouse aktif.
SHOW current_warehouse;Beralih dan pulihkan — jika Anda perlu sementara menggunakan warehouse lain lalu kembali ke warehouse asli:
-- Catat warehouse saat ini.
SHOW current_warehouse;
-- Beralih ke warehouse lain.
SET current_warehouse = warehouse_2;
-- Verifikasi peralihan.
SHOW current_warehouse;
-- Pulihkan warehouse asli setelah selesai.
SET current_warehouse = <original_warehouse_name>;Catatan penggunaan
Peralihan warehouse mempertahankan semua status sesi, termasuk variabel Grand Unified Configuration (GUC) dan prepared statement.
Pengaturan ini hanya berlaku pada tingkat sesi. Upaya untuk menetapkannya pada tingkat database atau pengguna akan mengembalikan error:
This can only be set at session level.Pengguna saat ini harus memiliki izin pada virtual warehouse target. Tanpa izin yang diperlukan, perintah akan mengembalikan:
Permission denied for warehouse "xxx".Peralihan tidak didukung untuk koneksi yang memiliki tabel sementara (TEMP TABLE) aktif.