בדף הזה מפורטות שיטות מומלצות ודוגמאות קוד ספציפיות לשפה, שיעזרו לכם ליצור אפליקציות שמשתמשות בחיבורים למסד נתונים של Cloud SQL בצורה יעילה.
הדוגמאות האלה הן קטעים מתוך אפליקציית אינטרנט מלאה שזמינה לכם ב-GitHub. מידע נוסף
כדי לקבל הוראות מפורטות להפעלת אפליקציית אינטרנט לדוגמה שמחוברת ל-Cloud SQL, לוחצים על הקישור שמתאים לסביבה שלכם:
- מדריך למתחילים לחיבור מהמחשב המקומי
- מדריך למתחילים בנושא התחברות מ-Compute Engine
- מדריך למתחילים בנושא התחברות מ-Cloud Run
- מדריך למתחילים להתחברות מ-Cloud Run functions
- מדריך למתחילים לחיבור מ-Google Kubernetes Engine
מאגרי חיבורים
מאגר חיבורים הוא מטמון של חיבורים למסד נתונים שמשותפים ונעשה בהם שימוש חוזר כדי לשפר את זמן האחזור והביצועים של החיבור. כשהאפליקציה צריכה חיבור למסד נתונים, היא שואלת חיבור זמני ממאגר החיבורים. כשהאפליקציה מסיימת להשתמש בחיבור, היא מחזירה אותו למאגר, כדי שאפשר יהיה להשתמש בו שוב בפעם הבאה שהאפליקציה תצטרך חיבור למסד נתונים.
פתיחה וסגירה של חיבורים
כשמשתמשים במאגר חיבורים, צריך לפתוח ולסגור את החיבורים בצורה נכונה, כדי שהחיבורים תמיד יוחזרו למאגר כשמסיימים להשתמש בהם. חיבורים שלא הוחזרו או ש "דלפו" לא מנוצלים מחדש, מה שגורם לבזבוז משאבים ועלול לגרום לצווארי בקבוק בביצועים של האפליקציה.
Python
Java
Node.js
C#
המשך
Ruby
PHP
מספר החיבורים
כל חיבור למסד נתונים משתמש במשאבים בצד הלקוח ובצד השרת. בנוסף, ב-Cloud SQL יש מגבלות חיבור כוללות שאסור לחרוג מהן. יצירה ושימוש בפחות חיבורים מצמצמים את התקורה ועוזרים לכם לא לחרוג ממגבלת החיבורים.
Python
Java
Node.js
C#
המשך
Ruby
PHP
ב-PDO אין כרגע אפשרות להגדיר מגבלות על חיבורים.
השהיה מעריכית לפני ניסיון חוזר (exponential backoff)
אם האפליקציה מנסה להתחבר למסד הנתונים ולא מצליחה, יכול להיות שמסד הנתונים לא זמין באופן זמני. במקרה כזה, שליחה חוזרת של בקשות חיבור מבזבזת משאבים. מומלץ להמתין לפני ששולחים בקשות חיבור נוספות, כדי לאפשר גישה חוזרת למסד הנתונים. כדי להשיג את המטרה הזו, אפשר להשתמש בהשהיה מעריכית לפני ניסיון חוזר (exponential backoff) או במנגנון השהיה אחר.
הניסיון החוזר הזה רלוונטי רק כשמתחברים בפעם הראשונה, או כשמשיגים בפעם הראשונה חיבור מהמאגר. אם מתרחשות שגיאות באמצע עסקה, האפליקציה צריכה לנסות שוב, והיא צריכה לנסות שוב מההתחלה של העסקה. לכן, גם אם המאגר מוגדר בצורה נכונה, יכול להיות שהאפליקציה עדיין תציג שגיאות אם החיבורים יאבדו.
Python
Java
Node.js
C#
המשך
החבילה database/sql לא מציעה כרגע פונקציונליות להגדרת השהיה מעריכית לפני ניסיון חוזר (exponential backoff).
Ruby
PHP
בשלב הזה, PDO לא מציעה פונקציונליות להגדרת השהיה מעריכית לפני ניסיון חוזר (exponential backoff).
תם הזמן הקצוב לחיבור
יש הרבה סיבות לכך שניסיון חיבור לא יצליח. אין ערובה לכך שתהיה תקשורת עם הרשת, ויכול להיות שהמסד נתונים לא יוכל להגיב באופן זמני. חשוב לוודא שהאפליקציה מטפלת בחיבורים שנכשלו או בחיבורים לא תקינים בצורה חלקה.
Python
Java
Node.js
C#
המשך
נכון לעכשיו, חבילת 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#
המשך
Ruby
בשלב הזה, ActiveRecord לא מציע פונקציונליות לשליטה במשך החיבור.
PHP
בשלב הזה, PDO לא מציעה פונקציונליות לשליטה במשך החיבור.
צפייה בטופס המועמדות המלא
כדי לראות את הבקשה המלאה, לוחצים על הקישור שלמטה.
Python
אפשר לראות את האפליקציה המלאה לשפת התכנות Python.
Java
אפשר לראות את הבקשה המלאה בשפת התכנות Java.
Node.js
אפליקציה מלאה בשפת התכנות Node.js
C#
אפשר לעיין בבקשה המלאה לשפת התכנות C# .
המשך
אפשר לעיין בבקשה המלאה לשפת התכנות Go.
Ruby
אפשר לראות כאן את הבקשה המלאה לשפת התכנות Ruby.
PHP
אפשר לעיין בבקשה המלאה לשפת התכנות PHP.
המאמרים הבאים
- מידע נוסף על כתובת IP פרטית
- מידע נוסף על מכסות ומגבלות ב-Cloud SQL וב-App Engine
- שיטות מומלצות לעבודה עם Cloud SQL
- מידע נוסף על התחברות מאפליקציה חיצונית