בדף הזה מפורטות שיטות מומלצות ודוגמאות קוד ספציפיות לשפה, שיעזרו לכם ליצור אפליקציות שמשתמשות ביעילות בחיבורים למסד נתונים של 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
משך החיבור
הגבלת משך החיים של חיבור יכולה לעזור למנוע הצטברות של חיבורים לא פעילים. אתם יכולים להשתמש במאגר החיבורים כדי להגביל את משך החיים של החיבורים.
Python
Java
Node.js
ספריית Node.js node-mssql לא מציעה כרגע פונקציונליות לשליטה במשך החיבור.
C#
המשך
Ruby
בשלב הזה, ActiveRecord לא מציעה פונקציונליות לשליטה במשך החיבור.
PHP
בשלב הזה, PDO לא מציעה פונקציונליות לשליטה במשך החיבור.
צפייה בבקשה המלאה
כדי לראות את הבקשה המלאה, לוחצים על הקישור שלמטה.
Python
אפשר לעיין בבקשה המלאה לשפת התכנות Python.
Node.js
האפליקציה המלאה בשפת התכנות Node.js
C#
אפשר לעיין באפליקציה המלאה בשפת התכנות C# .
המשך
אפשר לעיין בבקשה המלאה לשפת התכנות Go.
PHP
אפשר לעיין בבקשה המלאה לשפת התכנות PHP.
המאמרים הבאים
- מידע נוסף על כתובת IP פרטית
- מידע נוסף על מכסות ומגבלות ב-Cloud SQL וב-App Engine
- שיטות מומלצות לעבודה עם Cloud SQL