Halaman ini menyediakan praktik terbaik dan contoh kode khusus bahasa untuk membantu Anda membuat aplikasi yang menggunakan koneksi database Cloud SQL secara efektif.
Contoh ini adalah kutipan dari aplikasi web lengkap yang tersedia untuk Anda di GitHub. Pelajari lebih lanjut.
Untuk petunjuk langkah demi langkah cara menjalankan contoh aplikasi web yang terhubung ke Cloud SQL, ikuti link untuk lingkungan Anda:
- Panduan memulai untuk menghubungkan dari komputer lokal
- Panduan memulai untuk menghubungkan dari Compute Engine
- Panduan memulai untuk menghubungkan dari Cloud Run
- Panduan memulai untuk menghubungkan dari Cloud Functions
- Panduan memulai untuk menghubungkan dari Google Kubernetes Engine
Kumpulan koneksi
Kumpulan koneksi adalah cache koneksi database yang digunakan bersama dan digunakan kembali untuk meningkatkan latensi dan performa koneksi. Saat memerlukan koneksi database, aplikasi Anda akan meminjam salah satu dari kumpulan data tersebut untuk sementara; setelah selesai dengan koneksi, aplikasi akan menampilkan koneksi ke kumpulan, yang dapat digunakan kembali saat berikutnya aplikasi memerlukan koneksi database.
Koneksi terbuka dan tertutup
Jika menggunakan kumpulan koneksi, Anda harus membuka dan menutup koneksi dengan benar, sehingga koneksi Anda selalu dikembalikan ke kumpulan setelah selesai digunakan. Koneksi yang tidak ditampilkan atau "bocor" tidak digunakan kembali, karena menghabiskan resource dan dapat menyebabkan bottleneck performa untuk aplikasi Anda.
Python
Java
Node.js
C#
Go
Ruby
PHP
Jumlah koneksi
Setiap koneksi database menggunakan resource sisi klien dan server. Selain itu, Cloud SQL memberlakukan batasan koneksi secara keseluruhan yang tidak boleh dilampaui. Membuat dan menggunakan lebih sedikit koneksi akan mengurangi overhead dan membantu Anda tetap berada di bawah batas koneksi.
Python
Java
Node.js
C#
Go
Ruby
PHP
PDO saat ini tidak menawarkan fungsi apa pun untuk mengonfigurasi batas koneksi.
Backoff eksponensial
Jika aplikasi Anda mencoba terhubung ke database dan tidak berhasil, database tersebut mungkin tidak tersedia untuk sementara. Dalam hal ini, mengirim permintaan koneksi berulang akan menyia-nyiakan source. Sebaiknya, tunggu sebelum mengirim permintaan koneksi tambahan agar database dapat diakses kembali. Penggunaan backoff eksponensial atau mekanisme penundaan lainnya akan mencapai sasaran ini.
Percobaan ulang ini hanya dapat dilakukan saat pertama kali menghubungkan, atau saat pertama kali mengambil koneksi dari kumpulan data. Jika terjadi error di tengah transaksi, aplikasi harus melakukan percobaan ulang, dan harus mencoba lagi dari awal transaksi. Jadi, meskipun kumpulan data Anda dikonfigurasi dengan benar, aplikasi mungkin masih melihat error jika koneksi terputus.
Python
Java
Node.js
C#
Go
Paket database/sql saat ini tidak menawarkan fungsi apa pun untuk mengonfigurasi backoff eksponensial.
Ruby
PHP
PDO saat ini tidak menawarkan fungsi apa pun untuk mengonfigurasi backoff eksponensial.
Waktu tunggu koneksi habis
Ada banyak alasan mengapa upaya koneksi mungkin tidak berhasil. Jaringan komunikasi tidak terjamin, dan database mungkin tidak dapat merespons untuk sementara. Pastikan aplikasi Anda menangani koneksi yang rusak atau gagal dengan baik.
Python
Java
Node.js
C#
Go
Paket database/sql saat ini tidak menawarkan fungsi apa pun untuk mengonfigurasi waktu tunggu koneksi. Waktu tunggu dikonfigurasi pada level driver.
Ruby
PHP
Mengakhiri koneksi
Pengguna dengan hak istimewa PROCESS
di Cloud SQL dapat mencantumkan koneksi yang tidak mereka kelola. Di MySQL 5.7.x, pengguna harus memiliki hak istimewa SUPER
, dan di
MySQL 8.0.x, pengguna harus memiliki hak istimewa CONNECTION_ADMIN
untuk menjalankan
pernyataan KILL
pada koneksi ini. Pernyataan KILL
menghentikan koneksi pengguna mysql lainnya (kecuali pengguna administratif Cloud SQL). Pengguna tanpa hak istimewa ini hanya dapat mencantumkan dan menghentikan koneksi yang mereka kelola.
Anda dapat mencantumkan koneksi ke instance menggunakan klien mysql dan
menjalankan perintah SHOW PROCESSLIST
. Gunakan Id
untuk mengakhiri koneksi.
Contoh:
mysql> SHOW PROCESSLIST;
mysql> KILL 6;
Durasi koneksi
Membatasi masa aktif koneksi dapat membantu mencegah terakumulasinya koneksi yang diabaikan. Anda dapat menggunakan kumpulan koneksi untuk membatasi masa pakai koneksi.
Python
Java
Node.js
Library Node.js 'mysql' saat ini tidak menawarkan fungsi apa pun untuk mengontrol durasi koneksi.
C#
Go
Ruby
ActiveRecord saat ini tidak menawarkan fungsi apa pun untuk mengontrol durasi koneksi.
PHP
PDO saat ini tidak menawarkan fungsi apa pun untuk mengontrol durasi koneksi.
Lihat permohonan selengkapnya
Untuk melihat permohonan lengkap, klik link di bawah.
Python
Lihat aplikasi lengkap untuk bahasa pemrograman Python.
Java
Lihat aplikasi lengkap untuk bahasa pemrograman Java.
Node.js
Lihat aplikasi lengkap untuk bahasa pemrograman Node.js.
C#
Lihat aplikasi lengkap untuk bahasa pemrograman C#.
Go
Lihat aplikasi lengkap untuk bahasa pemrograman Go.
Ruby
Lihat aplikasi lengkap untuk bahasa pemrograman Ruby.
PHP
Lihat aplikasi lengkap untuk bahasa pemrograman PHP.
Langkah selanjutnya
- Pelajari IP Pribadi lebih lanjut.
- Pelajari kuota dan batas untuk Cloud SQL dan App Engine.
- Pelajari praktik terbaik untuk menggunakan Cloud SQL.
- Pelajari lebih lanjut cara menghubungkan dari aplikasi eksternal.