הגדרת דגלים של מסד נתונים

בדף הזה מוסבר איך להגדיר פלאגים של מסד נתונים ב-Cloud SQL, ומוצגת רשימה של הפלאגים שאפשר להגדיר למופע. משתמשים בדגלים של מסד הנתונים להרבה פעולות, כולל התאמת פרמטרים של SQL Server, התאמת אפשרויות והגדרה וכוונון של מכונה.

כשמגדירים, מסירים או משנים דגל של מופע מסד נתונים, יכול להיות שמסד הנתונים יופעל מחדש. ערך הדגל נשמר עבור המופע עד שמסירים אותו. אם המכונה היא המקור של רפליקה, והיא מופעלת מחדש, גם הרפליקה מופעלת מחדש כדי להתאים להגדרה הנוכחית של המכונה.

הגדרת דגלים של מסד נתונים

בקטעים הבאים מוסבר איך לבצע משימות נפוצות שקשורות לניהול דגלים.

הגדרת סימון של מסד נתונים

המסוף

  1. בGoogle Cloud מסוף, בוחרים את הפרויקט שמכיל את מופע Cloud SQL שרוצים להגדיר לו דגל מסד נתונים.
  2. פותחים את המופע ולוחצים על עריכה.
  3. עוברים לקטע דגלים.
  4. כדי להגדיר דגל שלא הוגדר במופע לפני כן, לוחצים על הוספת פריט, בוחרים את הדגל מהתפריט הנפתח ומגדירים את הערך שלו.
  5. לוחצים על Save כדי לשמור את השינויים.
  6. מאשרים את השינויים בקטע דגלים בדף הסקירה הכללית.

gcloud

עורכים את המופע:

gcloud sql instances patch INSTANCE_NAME --database-flags=FLAG1=VALUE1,FLAG2=VALUE2

הפקודה הזו תחליף את כל הדגלים של מסד הנתונים שהוגדרו קודם. כדי לשמור את הדגלים האלה ולהוסיף דגלים חדשים, צריך לכלול את הערכים של כל הדגלים שרוצים להגדיר במכונה. כל דגל שלא נכלל באופן ספציפי מוגדר לערך ברירת המחדל שלו. לדגלים שלא מקבלים ערך, מציינים את שם הדגל ואחריו סימן שווה (=).

לדוגמה, כדי להגדיר את הדגלים 1204, remote access ו-remote query timeout (s), אפשר להשתמש בפקודה הבאה:

gcloud sql instances patch INSTANCE_NAME \
  --database-flags="1204"=on,"remote access"=on,"remote query timeout (s)"=300

Terraform

כדי להוסיף פלאגים של מסד נתונים, משתמשים במשאב של Terraform.

resource "google_sql_database_instance" "instance" {
  name             = "sqlserver-instance-flags"
  region           = "us-central1"
  database_version = "SQLSERVER_2019_STANDARD"
  root_password    = "INSERT-PASSWORD-HERE"
  settings {
    database_flags {
      name  = "1204"
      value = "on"
    }
    database_flags {
      name  = "remote access"
      value = "on"
    }
    database_flags {
      name  = "remote query timeout (s)"
      value = "300"
    }
    tier = "db-custom-2-7680"
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

החלה של השינויים

כדי להחיל את ההגדרות של Terraform בפרויקט ב- Google Cloud , מבצעים את השלבים בקטעים הבאים.

הכנת Cloud Shell

  1. מפעילים את Cloud Shell.
  2. מגדירים את פרויקט ברירת המחדל שבו רוצים להחיל את ההגדרות של Terraform. Google Cloud

    תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    אם תגדירו ערכים ספציפיים בקובץ התצורה של Terraform, הם יבטלו את ערכי ברירת המחדל של משתני הסביבה.

הכנת הספרייה

לכל קובץ תצורה של Terraform צריכה להיות ספרייה משלו (שנקראת גם מודול ברמה הבסיסית).

  1. יוצרים ספרייה חדשה ב-Cloud Shell ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת .tf, למשל main.tf. במדריך הזה, הקובץ נקרא main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. אם אתם עוקבים אחרי המדריך, תוכלו להעתיק את הקוד לדוגמה בכל קטע או שלב.

    מעתיקים את הקוד לדוגמה בקובץ main.tf החדש שיצרתם.

    לחלופין, אפשר גם להעתיק את הקוד מ-GitHub. כדאי לעשות את זה כשקטע הקוד של Terraform הוא חלק מפתרון מקצה לקצה.

  3. בודקים את הפרמטרים לדוגמה ומשנים אותם בהתאם לסביבה שלכם.
  4. שומרים את השינויים.
  5. מפעילים את Terraform. צריך לעשות זאת רק פעם אחת לכל ספרייה.
    terraform init

    אופציונלי: תוכלו לכלול את האפשרות -upgrade, כדי להשתמש בגרסה העדכנית ביותר של הספק של Google:

    terraform init -upgrade

החלה של השינויים

  1. בודקים את ההגדרות ומוודאים שהמשאבים שמערכת Terraform תיצור או תעדכן תואמים לציפיות שלכם:
    terraform plan

    מתקנים את ההגדרות לפי הצורך.

  2. מריצים את הפקודה הבאה ומזינים yes בהודעה שמופיעה, כדי להחיל את הגדרות Terraform:
    terraform apply

    ממתינים עד שב-Terraform תוצג ההודעה "Apply complete!‎".

  3. פותחים את Google Cloud הפרויקט כדי לראות את התוצאות. במסוף Google Cloud , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-Terraform.

מחיקת השינויים

כדי למחוק את השינויים:

  1. כדי להשבית את ההגנה מפני מחיקה, בקובץ התצורה של Terraform מגדירים את הארגומנט deletion_protection לערך false.
    deletion_protection =  "false"
  2. מריצים את הפקודה הבאה ומזינים yes בהודעה שמופיעה, כדי להחיל את הגדרות Terraform המעודכנות:
    terraform apply
  1. כדי להסיר משאבים שהוחלו בעבר על הגדרות Terraform, מריצים את הפקודה הבאה ומזינים yes בהודעה שמופיעה:

    terraform destroy

REST v1

כדי להגדיר דגל למסד נתונים קיים:

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • project-id: מזהה הפרויקט
  • instance-id: מזהה המכונה

ה-method של ה-HTTP וכתובת ה-URL:

PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id

תוכן בקשת JSON:

{
  "settings":
  {
    "databaseFlags":
    [
      {
        "name": "flag_name",
        "value": "flag_value"
      }
    ]
  }
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

אם יש דגלים קיימים שהוגדרו עבור מסד הנתונים, צריך לשנות את הפקודה הקודמת כדי לכלול אותם. הפקודה PATCH מחליפה את הדגלים הקיימים בדגלים שצוינו בבקשה.

REST v1beta4

כדי להגדיר דגל למסד נתונים קיים:

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • project-id: מזהה הפרויקט
  • instance-id: מזהה המכונה

ה-method של ה-HTTP וכתובת ה-URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

תוכן בקשת JSON:

{
  "settings":
  {
    "databaseFlags":
    [
      {
        "name": "flag_name",
        "value": "flag_value"
      }
    ]
  }
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

אם יש דגלים קיימים שהוגדרו עבור מסד הנתונים, צריך לשנות את הפקודה הקודמת כדי לכלול אותם. הפקודה PATCH מחליפה את הדגלים הקיימים בדגלים שצוינו בבקשה.

ניקוי כל הדגלים לערכי ברירת המחדל

המסוף

  1. בGoogle Cloud מסוף, בוחרים את הפרויקט שמכיל את מופע Cloud SQL שרוצים לנקות את כל הדגלים שלו.
  2. פותחים את המופע ולוחצים על עריכה.
  3. פותחים את הקטע Database flags (דגלים של מסד הנתונים).
  4. לוחצים על X לצד כל הדגלים שמוצגים.
  5. לוחצים על Save כדי לשמור את השינויים.

gcloud

כדי לנקות את כל הסימונים לערכי ברירת המחדל במופע:

gcloud sql instances patch INSTANCE_NAME \
--clear-database-flags

תתבקשו לאשר שהמופע יופעל מחדש.

REST v1

כדי לנקות את כל הדגלים של מופע קיים:

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • project-id: מזהה הפרויקט
  • instance-id: מזהה המכונה

ה-method של ה-HTTP וכתובת ה-URL:

PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id

תוכן בקשת JSON:

{
  "settings":
  {
    "databaseFlags": []
  }
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

REST v1beta4

כדי לנקות את כל הדגלים של מופע קיים:

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • project-id: מזהה הפרויקט
  • instance-id: מזהה המכונה

ה-method של ה-HTTP וכתובת ה-URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

תוכן בקשת JSON:

{
  "settings":
  {
    "databaseFlags": []
  }
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

איך קובעים אילו דגלים של מסד נתונים הוגדרו למופע

כדי לראות אילו דגלים הוגדרו למכונה של Cloud SQL:

המסוף

  1. בGoogle Cloud מסוף, בוחרים את הפרויקט שמכיל את מופע Cloud SQL שרוצים לראות את הדגלים של מסד הנתונים שהוגדרו בו.
  2. בוחרים את המופע כדי לפתוח את הדף Instance Overview (סקירה כללית של המופע).

    הסימונים של מסד הנתונים שהוגדרו מפורטים בקטע Database flags.

gcloud

קבלת מצב המופע:

gcloud sql instances describe INSTANCE_NAME

בפלט, סימוני מסד הנתונים מפורטים בקטע settings כאוסף databaseFlags. מידע נוסף על אופן הצגת הדגלים בפלט זמין במאמר Instances Resource Representation.

REST v1

כדי להציג רשימה של סימונים שהוגדרו למופע:

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • project-id: מזהה הפרויקט
  • instance-id: מזהה המכונה

ה-method של ה-HTTP וכתובת ה-URL:

GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

בפלט, מחפשים את השדה databaseFlags.

REST v1beta4

כדי להציג רשימה של סימונים שהוגדרו למופע:

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • project-id: מזהה הפרויקט
  • instance-id: מזהה המכונה

ה-method של ה-HTTP וכתובת ה-URL:

GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

בפלט, מחפשים את השדה databaseFlags.

סימונים נתמכים

‫Cloud SQL תומך רק בדגלים שמפורטים בקטע הזה.

דגל Cloud SQL סוג
ערכים קבילים והערות
הפעלה מחדש
נדרשת?
1204 (סימון מעקב) boolean
on | off
לא
1222 (trace flag) boolean
on | off
לא
1224 (trace flag) boolean
on | off
לא
2528 (סימון מעקב) boolean
on | off
לא
3205 (trace flag) boolean
on | off
לא
3226 (סימון מעקב) boolean
on | off
לא
3625 (trace flag) boolean
on | off
כן
4199 (trace flag) boolean
on | off
לא
4616 (סימון מעקב) boolean
on | off
לא
7806 (trace flag) boolean
on | off
כן
access check cache bucket count integer
0 ... 65536
לא
access check cache quota integer
0 ... 2147483647
לא
מסכת תחום עניין משותף integer
2147483648 ... 2147483647
כן
agent xps boolean
on | off
לא
השבתה של NUMA רך אוטומטי boolean
on | off
כן
cloud sql xe bucket name string
שם הקטגוריה חייב להתחיל בקידומת gs://.
לא
cloud sql xe output total disk size (mb) integer
10 ... 512
לא
cloud sql xe file retention (mins) integer
0 ... 10080
לא
cloud sql xe upload interval (mins) integer
1 ... 60
לא
cloudsql enable linked servers boolean
on | off
לא
סף העלות להקבלה integer
0 ... 32767
לא
אימות מסד נתונים מוכל boolean
on | off
לא
cross db ownership chaining boolean
on | off
לא
סף הסמן integer
-1 ... 2147483647
לא
שפת ברירת המחדל של הטקסט המלא integer
0 ... 2147483647
לא
שפת ברירת המחדל integer
0 ... 32
לא
המעקב מופעל כברירת מחדל boolean
on | off
לא
disallow results from triggers boolean
on | off
לא
הפעלת סקריפטים חיצוניים boolean
on | off
כן
רוחב פס לסריקה (מקסימום) integer
0 ... 32767
לא
ft crawl bandwidth (min) integer
0 ... 32767
לא
רוחב פס של הודעות (מקסימום) integer
0 ... 32767
לא
ft notify bandwidth (min) integer
0 ... 32767
לא
שיעור הבקשות שמולאו (%) integer
0 ... 100
כן
index create memory (kb) integer
704 ... 2147483647
לא
locks integer
5000 ... 2147483647
כן
max degree of parallelism (MAXDOP) integer
0 ... 32767
לא
max server memory (mb) integer
1000 ... 2147483647
יכול להיות ש-Cloud SQL יגדיר ערך לדגל הזה במופעים, על סמך הערכים המומלצים של מיקרוסופט. מידע נוסף זמין במאמר בנושא דגלים מיוחדים.
לא
max text repl size (b)‎ integer
-1 ... 2147483647
לא
max worker threads integer
128 ... 65535
לא
nested triggers boolean
on | off
לא
אופטימיזציה של עומסי עבודה אד-הוק boolean
on | off
לא
ph timeout (s) integer
1 ... 3600
לא
query governor cost limit integer
0 ... 2147483647
לא
זמן ההמתנה של השאילתה (שניות) integer
-1 ... 2147483647
לא
מרווח התאוששות (דקות) integer
0 ... 32767
לא
גישה מרחוק boolean
on | off
כן
זמן קצוב לתפוגה של התחברות מרחוק (שניות) integer
0 ... 2147483647
לא
remote query timeout (s) integer
0 ... 2147483647
לא
להפוך מילים של רעש boolean
on | off
לא
שנה בשתי ספרות integer
1753 ... 9999
לא
חיבורי משתמשים integer
0, 10 ... 32767
כן
אפשרויות משתמש integer
0 ... 32767
לא

דיווחים מיוחדים

בקטע הזה יש מידע נוסף על דגלים של Cloud SQL ל-SQL Server.

max degree of parallelism (MAXDOP)

Max degree of parallelism (MAXDOP) הוא דגל של מסד נתונים של מיקרוסופט שזמין לשימוש ב-Cloud SQL ל-SQL Server. הדגל הזה מאפשר להגביל את המספר המקסימלי של השרשורים שמשמשים להרצת שאילתה יחידה בתוכנית מקבילית.

אם משאירים את ערך ברירת המחדל 0, מופעלים כל המעבדים הזמינים במופע של מסד הנתונים. עם זאת, אם מנהלים מקרים עם מאות מסדי נתונים, יכול להיות שהשיטה הזו לא תהיה יעילה או אפילו פרקטית.

מומלץ לפעול לפי ההמלצות שבתיעוד של מיקרוסופט כשמגדירים את הערך של הדגל, שיכול להשתנות בהתאם למספר הצמתים של NUMA ולמספר המעבדים הלוגיים הזמינים.

אפשר לבדוק את ההגדרה של צומת NUMA באמצעות תצוגת הניהול הדינמי (DMV) מתוך sys.dm_os_sys_info. כדי לבדוק את ההגדרה של צומת ה-NUMA, משתמשים בקטע קוד שדומה לזה:

      SELECT socket_count,cores_per_socket,numa_node_count 
FROM sys.dm_os_sys_info

אפשר להשתמש ב-MAXDOP כדי להגביל את המספר המקסימלי של מעבדים שרוצים לאפשר להם לבצע תוכניות במקביל, אבל אפשר גם להשתמש בתכונה סף העלות להפעלה מקבילית כדי לציין את העלות המינימלית שרוצים להגדיר למעבד יחיד לפני הרחבת הפעולות המקבילות למעבד אחר. התכונות האלה מאפשרות לכם לשלוט טוב יותר ביעילות ובעלות של ביצוע תוכניות מקביליות.

הערכים המומלצים לתכונות האלה משתנים בהתאם למקרה, ומושפעים מהצרכים שלכם לגבי עומס העבודה של השרת והאפליקציה.

כדי לקבל עזרה בקביעת הערכים הכי טובים של MAXDOP ושל סף העלות של מקביליות עבור השרתים שלכם, אפשר לעיין במקורות המידע הבאים:

שינוי ערך ברירת המחדל עוזר לפתור את הבעיות הפוטנציאליות הבאות:

  • אם הדגל max degree of parallelism (MAXDOP) מוגדר ל-0, מופעים או אפליקציות לקוח שנדרשות להורדות מ-SharePoint נכשלים. ההורדה מ-SharePoint מפעילה בדיקה מוקדמת שדורשת ערך מספרי לסימון, ולא תקבל ערך שקטן מ-1.
  • השארת הדגל MAXDOP לערך ברירת המחדל 0, מציינת למעשה שאין הגבלה ושאפשר להשתמש בכל המעבדים הזמינים לפעולות מקבילות. יכול להיות שהערך הזה מתאים לשרתים שמריצים באופן שוטף שאילתות קטנות, אבל הוא עלול לגרום לבעיה בעלויות אם אתם צריכים להריץ גם שאילתות גדולות מאוד מדי פעם.

אפשר להשתמש בדגל max degree of parallelism (MAXDOP) כדי לשלוט במספר השרשורים בשלוש רמות:

  • ברמת המופע, באמצעות דגלים של מסד הנתונים
  • היקף מסד הנתונים, באמצעות TSQL
  • ברמת השאילתה, באמצעות רמזים לשאילתה

שימו לב: אם משנים את הגודל של המופע, ערך הדגל לא משתנה.

max server memory (mb)

הדגל max server memory (mb) מגביל את כמות הזיכרון ש-Cloud SQL יכול להקצות למאגרי הזיכרון הפנימיים שלו.

מומלץ לא להגדיר ערך לדגל הזה ולאפשר ל-Cloud SQL לנהל את הערך בשבילכם. אם אתם צריכים לנהל את הערך הזה באופן ידני, מומלץ להגדיר את הערך של max server memory (mb) ל-80% בערך מהזיכרון הזמין, כדי למנוע מ-SQL Server לצרוך את כל הזיכרון.

לעומת זאת, במקרים של מופעים עם כמות גדולה של זיכרון, יכול להיות ש-80% מהזיכרון הזמין יהיה ערך נמוך מדי, ויוביל לשימוש לא יעיל בזיכרון.

אם לא מגדירים ערך לדגל הזה, Cloud SQL מנהל את הערך באופן אוטומטי, על סמך גודל ה-RAM של המופע. בנוסף, אם משנים את הגודל של המכונה, Cloud SQL מתאים באופן אוטומטי את הערך של הדגל כדי לעמוד בהמלצות שלנו לגבי הגודל החדש של המכונה. במהלך שינוי הגודל הזה, יוסר גם כל ערך שהוגדר ידנית לדגל הזה. ההגדרה הזו עוזרת למסד הנתונים שלכם להשתמש במשאבים בצורה יעילה יותר, למנוע הקצאת יתר של משאבים, להפחית את הסיכוי לקריסה בגלל בעיות של חוסר זיכרון ולמנוע פגיעה בביצועים של המופע.

מידע נוסף זמין במאמרים בנושא זיכרון מקסימלי של השרת ואופטימיזציה של שימוש גבוה בזיכרון.

פתרון בעיות

שגיאה פתרון בעיות
רוצים לשנות את אזור הזמן של מכונת Cloud SQL.

במאמר הגדרות של מכונות וירטואליות מוסבר איך לעדכן את אזור הזמן של מכונה וירטואלית.

ב-Cloud SQL ל-SQL Server, אפשר להשתמש בפונקציה AT TIME ZONE להמרות של שעות ועוד. מידע נוסף על הפונקציה הזו זמין במאמר AT TIME ZONE (Transact-SQL).

המאמרים הבאים