לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #8  
ישן 24-05-2007, 14:34
צלמית המשתמש של המממ
  המממ המממ אינו מחובר  
 
חבר מתאריך: 30.10.01
הודעות: 8,699
Follow me...
פעולה על טבלה שלמה....
בתגובה להודעה מספר 1 שנכתבה על ידי gogofo שמתחילה ב "מה עושים כשבמסד יש המון מידע ?"

פעולות על טבלה שלמה הן בעייתיות באופן כרוני.

הנה מספר טיפים שיעזרו לך להתמודד:
1. אם יש אינדקס על העמודה המתעדכנת - שקול את נחיצותו בשנית (חבל לעדכן גם טבלה וגם אינדקס)
2. נסה לחלק את הפעולה לחלקים (למשל, עדכן רשומות מסויימות בכל פעם לפי מפתח) ונסה לבצע כל חלק במקביל באפליקציה.
3. באורקל, הייתי מציע לך לשקול שימוש במקביליות בפעולה כתלות במספר המעבדים העומדים לרשותך (parallel hint) אבל אינני יודע אם וכיצד ניתן לבצע זאת בmySql
4. שקול את מבנה מסד הנתונים שלך - אולי ניתן בעזרת מפתח זר לעדכן מעט נתונים בטבלה אחרת במקום לשנות את כל הטבלה הראשית.

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

קוד:
SQL> select E.ENAME,E.JOB,E.DEPTNO,D.DNAME,D.LOC 2 from EMP E, DEPT D 3 where E.DEPTNO=D.DEPTNO; ENAME JOB DEPTNO DNAME LOC ---------- --------- ---------- -------------- ------------- SMITH CLERK 20 RESEARCH DALLAS ALLEN SALESMAN 30 SALES CHICAGO WARD SALESMAN 30 SALES CHICAGO JONES MANAGER 20 RESEARCH DALLAS MARTIN SALESMAN 30 SALES CHICAGO BLAKE MANAGER 30 SALES CHICAGO CLARK MANAGER 10 ACCOUNTING NEW YORK SCOTT ANALYST 20 RESEARCH DALLAS KING PRESIDENT 10 ACCOUNTING NEW YORK TURNER SALESMAN 30 SALES CHICAGO ADAMS CLERK 20 RESEARCH DALLAS JAMES CLERK 30 SALES CHICAGO FORD ANALYST 20 RESEARCH DALLAS MILLER CLERK 10 ACCOUNTING NEW YORK 14 rows selected. SQL> update DEPT set LOC='TEL AVIV' where DEPTNO=30; 1 row updated. SQL> select E.ENAME,E.JOB,E.DEPTNO,D.DNAME,D.LOC 2 from EMP E, DEPT D 3 where E.DEPTNO=D.DEPTNO; ENAME JOB DEPTNO DNAME LOC ---------- --------- ---------- -------------- ------------- SMITH CLERK 20 RESEARCH DALLAS ALLEN SALESMAN 30 SALES TEL AVIV WARD SALESMAN 30 SALES TEL AVIV JONES MANAGER 20 RESEARCH DALLAS MARTIN SALESMAN 30 SALES TEL AVIV BLAKE MANAGER 30 SALES TEL AVIV CLARK MANAGER 10 ACCOUNTING NEW YORK SCOTT ANALYST 20 RESEARCH DALLAS KING PRESIDENT 10 ACCOUNTING NEW YORK TURNER SALESMAN 30 SALES TEL AVIV ADAMS CLERK 20 RESEARCH DALLAS JAMES CLERK 30 SALES TEL AVIV FORD ANALYST 20 RESEARCH DALLAS MILLER CLERK 10 ACCOUNTING NEW YORK 14 rows selected.
_____________________________________
_________________________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה
אזהרה: משרד הבריאות קובע כי העישון מזיק לבריאות !
תראו, אפילו החייזר נהיה ירוק מזה

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #9  
ישן 25-05-2007, 15:16
  שימיadmin שימי אינו מחובר  
מנהל פורומי "תכנות ובניית אתרים" ו"חומרה ורשתות"
 
חבר מתאריך: 25.10.01
הודעות: 42,778
בתגובה להודעה מספר 1 שנכתבה על ידי gogofo שמתחילה ב "מה עושים כשבמסד יש המון מידע ?"

הזמן שלוקח לשאילתא להתבצע הוא בר משמעות עבורך? (בהתחשב בנעילת טבלאות בזמן העדכון...)

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

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

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

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

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 21:43

הדף נוצר ב 0.04 שניות עם 12 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2025 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר