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

בדף הזה מוסבר איך להגדיר דגלים של מסד נתונים ב-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. מגדירים את Google Cloud פרויקט ברירת המחדל שבו רוצים להחיל את ההגדרות של Terraform.

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

    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 (סקירה כללית של המופע).

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

gcloud

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

gcloud sql instances describe INSTANCE_NAME

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

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 (trace flag) boolean
on | off
לא
3205 (trace flag) boolean
on | off
לא
‫3226 (trace flag) boolean
on | off
לא
‫3625 (trace flag) boolean
on | off
כן
‫4199 (דגל מעקב) boolean
on | off
לא
‫4616 (trace flag) boolean
on | off
לא
‫7806 (trace flag) boolean
on | off
כן
‫13702 (trace flag) boolean
on | off
כן
access check cache bucket count integer
0 ... 65536
לא
access check cache quota integer
0 ... 2147483647
לא
מסיכת זיקה integer
2147483648 ... 2147483647
כן
מסיכת קלט/פלט של תחום עניין משותף integer
2147483648 ... 2147483647
כן
agent xps boolean
on | off
לא
השבתה של soft-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
לא
default trace enabled 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
כן
מידת המקסימום של מקביליות (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
לא
cloud sql enable polybase boolean
on | off
כן
cloud sql enable sp_help_revlogin boolean
on | off
לא
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 enable sp_help_revlogin

הדגל cloud sql enable sp_help_revlogin מאפשר להפעיל או להשבית את sp_help_revlogin הפרוצדורה המאוחסנת במסד הנתונים msdb.

כשמגדירים את הדגל הזה לערך on, ‏ Cloud SQL מתקין את הפרוצדורה המאוחסנת במסד הנתונים msdb ומעניק הרשאות ביצוע למשתמש עם הרשאת אדמין sqlserver. כך אפשר לייצא התחברויות ל-SQL Server, גיבובים של סיסמאות ומזהי אבטחה (SID) כדי לעזור בהעברת התחברויות ובסנכרון בין מופעים.

כשהדגל הזה מוגדר לערך off, ‏ Cloud SQL מסיר את הפרוצדורה המאוחסנת ממסד הנתונים msdb.

מידע נוסף זמין במאמר ייצוא של פרטי התחברות ל-SQL Server.

פתרון בעיות

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

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

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

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