מחשביםמאגרי מידע

"Pitfalls" של העדכון DML הפקודה MySQL

כל מתכנת שנאלץ לעבוד עם מסדי נתונים עמד בפני מפעילי DML (כגון "שפת מניפולציית הנתונים"), כגון בחירה , הוספה , מחיקה ו עדכון . סביבת MySQL משתמשת גם בכל הפקודות הנ"ל בארסנל שלה.

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

בקצרה על מפעילי DML (הוסף)

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

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

עדכן מפעיל

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

כדי לפתור בעיה זו, ניתן להחיל עדכון DML-Operator . שרת MySQL , הפועל עם מספר רב של רשומות, באמצעות מפעיל העדכון, יבצע את השאילתה המבוקשת ויפתור את הבעיה. אבל לפעמים במהלך העדכון אין די ברור וקשה להסביר קשיים. זה על המורכבות של עדכון רשומות שיידונו מאוחר יותר.

על מה מעט נאמר בתיאוריה ...

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

כדי למנוע זאת, DBMS כולל מיוחד MySQL - Insert * עדכון לבנות, שבו הוספה או עדכון יכול להתבצע בנפרד אחד מהשני. כלומר, כאשר יש ערך עבור תנאי מסוים בטבלה, יתרחש עדכון. אם לא נמצאו נתונים עבור המצב המדובר, שרת MySQL יוכל לבצע את בקשת הוספת הנתונים.

עדכן נתונים אם יש כפילויות

מרכיב חשוב של כזה להוסיף - שאילתה במערכת מסד נתונים MySQL הוא "על עדכון כפילויות עדכון מפתח" . התחביר המלא של השאילתה הוא כדלקמן: " הכנס לתוך test_table (employer_id, שם) ערכים (1, 'אברמוב') על עדכון מפתח כפולים last_modified = NOW (); ".

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

למעשה על הבעיות ...

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

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

ההסתברות הגדולה ביותר להתרחשות של בעיה

הבעיה המתוארת צריכה להיחשב על ידי מפתחי אינטרנט , שכן היא הנפוצה ביותר במערכות מרובות משתמשים (אתרי אינטרנט, פורטלים וכו '), כאשר מספר גדול של Insert עדכון MySQL.

PHP - שיחות למסד הנתונים מבוצעות לעתים קרובות מאוד. לכן, ההישג של הערך המקסימלי על ידי השדות המוגדרים כ- auto-increment מתרחש במהירות, וכאשר מנתחים את הקשיים שנתקלו בהם, לא ניתן לקבוע את הסיבות בבת אחת.

לכן, היזמים מומלץ לגשת בזהירות את השימוש של המפתח הכפול על הפקודה עדכון MySQL. בחר - שאילתות כאשר גישה לשרת מסד הנתונים יעבוד ללא שגיאות, אבל הוספת רשומות חדשות למסד הנתונים כרוך במצבים לא נעימים, אשר לאחר מכן להוביל לבעיות חמורות. כחלופה, מומלץ עבור שדות autoincremental לבדוק תחילה את הזמינות של רשומות עבורם, ולאחר מכן לעדכן אותם.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 iw.unansea.com. Theme powered by WordPress.