בדף הזה מפורטות שיטות מומלצות ודוגמאות קוד ספציפיות לשפה, שיעזרו לכם ליצור אפליקציות שמשתמשות בחיבורים למסד נתונים של Cloud SQL בצורה יעילה.
הדוגמאות האלה הן קטעים מתוך אפליקציית אינטרנט מלאה שזמינה לכם ב-GitHub. מידע נוסף
כדי לקבל הוראות מפורטות להרצת אפליקציית אינטרנט לדוגמה שמחוברת ל-Cloud SQL, לוחצים על הקישור שמתאים לסביבה שלכם:
- מדריך למתחילים לחיבור מהמחשב המקומי
- מדריך למתחילים בנושא התחברות מ-Compute Engine
- מדריך למתחילים בנושא התחברות מ-Cloud Run
- מדריך למתחילים לחיבור מ-פונקציות Cloud Run
- מדריך למתחילים לחיבור מ-Google Kubernetes Engine
מאגרי חיבורים
מאגר חיבורים הוא מטמון של חיבורים למסד נתונים שמשותפים ונעשה בהם שימוש חוזר כדי לשפר את זמן האחזור והביצועים של החיבור. כשהאפליקציה צריכה חיבור למסד נתונים, היא שואלת חיבור זמני ממאגר החיבורים. כשהאפליקציה מסיימת להשתמש בחיבור, היא מחזירה אותו למאגר, כך שאפשר יהיה להשתמש בו שוב בפעם הבאה שהאפליקציה תצטרך חיבור למסד נתונים.
פתיחה וסגירה של חיבורים
כשמשתמשים במאגר חיבורים, צריך לפתוח ולסגור את החיבורים בצורה נכונה, כדי שהחיבורים תמיד יוחזרו למאגר כשמסיימים להשתמש בהם. חיבורים שלא הוחזרו או ש "דלפו" לא מנוצלים מחדש, מה שגורם לבזבוז משאבים ועלול לגרום לצווארי בקבוק בביצועים של האפליקציה.
Python
Java
Node.js
C#
Go
Ruby
PHP
מספר החיבורים
כל חיבור למסד נתונים משתמש במשאבים בצד הלקוח ובצד השרת. בנוסף, ב-Cloud SQL יש מגבלות חיבור כוללות שאסור לחרוג מהן. יצירה ושימוש בפחות חיבורים מצמצמים את התקורה ועוזרים לכם לא לחרוג ממגבלת החיבורים.
השהיה מעריכית לפני ניסיון חוזר (exponential backoff)
אם האפליקציה מנסה להתחבר למסד הנתונים ולא מצליחה, יכול להיות שמסד הנתונים לא זמין באופן זמני. במקרה כזה, שליחה חוזרת של בקשות חיבור מבזבזת משאבים. מומלץ להמתין לפני שליחת בקשות חיבור נוספות כדי לאפשר גישה חוזרת למסד הנתונים. כדי להשיג את המטרה הזו, אפשר להשתמש בהשהיה מעריכית לפני ניסיון חוזר (exponential backoff) או במנגנון השהיה אחר.
ניסיון החיבור מחדש הזה הגיוני רק כשמתחברים בפעם הראשונה, או כשמשיגים חיבור מהמאגר בפעם הראשונה. אם מתרחשות שגיאות באמצע עסקה, האפליקציה צריכה לנסות שוב, והיא צריכה לנסות שוב מההתחלה של העסקה. לכן, גם אם המאגר מוגדר בצורה נכונה, יכול להיות שהאפליקציה עדיין תציג שגיאות אם החיבורים יאבדו.
Python
Java
Node.js
C#
Go
החבילה database/sql לא מציעה כרגע פונקציונליות להגדרת השהיה מעריכית לפני ניסיון חוזר (exponential backoff).
Ruby
PHP
בשלב הזה, PDO לא מציעה פונקציונליות להגדרת השהיה מעריכית לפני ניסיון חוזר (exponential backoff).
תם הזמן הקצוב לחיבור
יש הרבה סיבות לכך שניסיון ליצור חיבור לא יצליח. אין ערובה לכך שתהיה תקשורת עם הרשת, ויכול להיות שהמסד נתונים לא יוכל להגיב באופן זמני. חשוב לוודא שהאפליקציה מטפלת בחיבורים שנכשלו או נותקו בצורה תקינה.
Python
Java
Node.js
C#
Go
נכון לעכשיו, חבילת database/sql לא מציעה פונקציונליות להגדרת זמן קצוב לתפוגה לחיבור. הזמן הקצוב לתפוגה מוגדר ברמת הנהג.
Ruby
PHP
סיום חיבור
משתמשים עם הרשאת PROCESS ב-Cloud SQL יכולים לראות רשימה של חיבורים שהם לא מנהלים. ב-MySQL 5.7.x, למשתמשים צריכה להיות הרשאת SUPER, וב-MySQL 8.0.x, למשתמשים צריכה להיות הרשאת CONNECTION_ADMIN כדי להריץ הצהרת KILL בחיבורים האלה. ההצהרה KILL מסיימת את החיבור של כל משתמש אחר ב-MySQL (למעט משתמשי אדמין ב-Cloud SQL). משתמשים ללא ההרשאות האלה יכולים רק להציג ולסיים חיבורים שהם מנהלים.
אפשר לרשום את החיבורים למופע באמצעות לקוח mysql והרצת הפקודה SHOW PROCESSLIST. משתמשים בId כדי לסיים את החיבור.
לדוגמה:
mysql> SHOW PROCESSLIST;
mysql> KILL 6;
משך החיבור
הגבלת משך החיים של חיבור יכולה לעזור למנוע הצטברות של חיבורים לא פעילים. אפשר להשתמש במאגר החיבורים כדי להגביל את משך החיים של החיבורים.
Python
Java
Node.js
ספריית Node.js mysql לא מציעה כרגע פונקציונליות לשליטה במשך החיבור.
C#
Go
Ruby
בשלב הזה, ActiveRecord לא מציעה פונקציונליות לשליטה במשך החיבור.
PHP
בשלב הזה, PDO לא מציעה פונקציונליות לשליטה במשך החיבור.
צפייה בטופס הבקשה המלא
כדי לראות את הבקשה המלאה, לוחצים על הקישור שלמטה.
Python
אפשר לראות את האפליקציה המלאה לשפת התכנות Python.
Java
אפשר לראות את הבקשה המלאה בשפת התכנות Java.
Node.js
אפשר לעיין ביישום המלא של שפת התכנות Node.js.
C#
אפשר לעיין בבקשה המלאה לשפת התכנות C#.
Go
אפשר לעיין בבקשה המלאה לשפת התכנות Go.
Ruby
אפשר לראות כאן את הבקשה המלאה לשפת התכנות Ruby.
PHP
אפשר לעיין בבקשה המלאה לשפת התכנות PHP.
המאמרים הבאים
- מידע נוסף על כתובות IP פרטיות
- מידע נוסף על מכסות ומגבלות ב-Cloud SQL וב-App Engine
- שיטות מומלצות לשימוש ב-Cloud SQL
- מידע נוסף על התחברות מאפליקציה חיצונית