בוקר טוב

claimbing

New member
../images/Emo42.gifבוקר טוב../images/Emo70.gif../images/Emo42.gif

עצה לדיון בפורום: הרבה פעמים שמעתי את חובב טניס ואחרים אומרים שתכנון נכון של מסד נתונים הוא דבר חשוב וקריטי ליעילות האתר. לא מצאתי בFAQ שום דבר המתייחס לנושא הזה ואני חושב שכדאי לפתוח דיון בנוגע לזה שיסביר מהו תכנון נכון, ואולי כמה טיפים.
וכמובן להוסיף ל-FAQ אח"כ.
 
../images/Emo41.gif דרוש ../images/Emo41.gif

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

בעיקרון עיצוב בסיסי נתונים הוא נושא מאד חשוב, שאני ממליץ לכל מי שמתכנן בסיסי נתונים ללמוד אותו ברצינות. האמצעים יכולים להיות ספרות מקצועית, אתרים מקצועים וקורסים. לצערי אני חייב לציין, שרוב החומר המקצועי והמעודכן הוא באנגלית, ולכן אני חושב שכל מי שרוצה להתעסק במחשבים בצורה רצינית חייב לקרוא מאמרים באנגלית. בכל מקרה אני אתן כאן מספר דוגמאות פשוטות, שמבוססות על בסיס הנתונים northwind, שבא עם ההתקנה של SQL Server 2000. בשביל הדוגמא צריך לפתוח את הQA ולהריץ את המשפט הבא:
select * into TmpOrders from Orders​
ע"י הרצת המשפט, נבנית לנו טבלה חדשה עם קצת מעל 800 רשומות. לאחר מכן תריץ את הקוד הבא:
set statistics io on select * from Tmporders where OrderID = 10260​
בחלון התוצאות תראה רשומה אחת ופירוט של מספר הדפים, שהשרת צריך לקרוא ע"מ להגיע לתוצאות. מספר הדפים מהווה אינדיקציה לכמות פעולות IO, שהשרת מבצע. ככל שהכמות קטנה יותר, השאילתה יכולה לרוץ מהר יותר. מאחר, ועל הטבלה החדשה אין אינדקסים, אפשר לראות, שכמות הlogical reads היתה 21 דפים. בשלב הבא תיבנה אינדקס חדש ע"י הרצת משפט create index:
create index UIX_OrderID on TmpOrders (OrderID)​
ולאחר מכן תריץ את משפט הselect הקודם מחדש. שים לב, שכמות הדפים, שהשרת קורא ירד ל3, כלומר האינדקס שיפר את היעילות של השאילתה באיזור ה85 אחוז. עכשיו תנסה את השאילתה הבאה:
select * from Tmporders where orderid + 1 = 10260​
הפעם השרת נאלץ לקרוא 4 דפים ולא 3 כמו קודם. הסיבה לכך, היא שכאשר מבצעים חישוב על על השדה עם האינדקס, אז השרת נאלץ לקרוא את כל האינדקס ולא את החלקים הרלוונטים שלו (לפעמים השרת גם יוותר על קריאת האינדקס). מאחר ובדוגמא שלנו מדובר בטבלה קטנה מאד, אז ההבדל מאד זניח (קריאה של דף אחד נוסף בלבד), אבל בטבלה גדולה עם יותר רשומות ההבדל היה הרבה יותר בולט. דוגמא נוספת: תריץ בQA את המשפט:
set statistics io on select * from Tmporders where EmployeeID = 6​
ניתן לראות, שהשרת ביצע 21 קריאות לוגיות. לאחר מכן תבנה את האינדקס הבא:
create index IX_EmployeeID on TmpOrders (EmployeeID)​
ותריץ שוב את השאילתה לפי EmployeeID. שים לב, שהפעם האינדקס לא עזר בכלל, והשרת שוב ביצע 21 קריאות לוגיות. הסיבה לכך, שמספר הערכים האפשריים בשדה הזה הוא נמוך מאד, והשרת מגיע למסקנה, שברוב הדפים בטבלה יש רשומות, שעונות לקריטריון, ולכן אין טעם להשתמש באינדקס. בדוגמאות ניתן לראות את ההשפעה של בחירת אינדקס נכון וכתיבת קוד בצורה, שעלולה לגרום לשרת לא לנצל את האינדקס בצורה הטובה ביותר. הדוגמאות מאד בסיסיות וקטנות. בפועל יש עוד הרבה גורמים משפיעים.
 

חוצפאי

New member
../images/Emo42.gif בוקר מאמם ../images/Emo140.gif ../images/Emo42.gif

איחרתי לעבודה
יומאמם לכולם
 

אוריקס

New member
../images/Emo42.gifבוקר אורס מאד מאד../images/Emo70.gif

זה נחמד שאני כבר חודש לא לומד...
 
../images/Emo43.gif תפוז למען הקהילה ../images/Emo101.gif

במוצ"ש הקרוב בשעה 21:00, תתקיים בקניון ארנה המסיבה הרשמית של הקיץ של ארגון "יוצאים לחיים" התומך ומסייע לחולי סרטן. בואו לצפות בדג נחש, די-ג'י אסי קוז'אק, הבליינים ועוד. כל ההכנסות קודש לפרוייקט "יוצאים לחיים", התומך בצעירים שחלו בסרטן. טל' להזמנת כרטיסים - "הדרן": 03-5279797. מידע נוסף בפורום 'סרטן - לא לבד'.
השבוע הוא שבוע המודעות לגילוי ומניעת סרטן ממאיר של העור, ופורום 'אחים ואחיות בשירות הבריאות' מבקש לקדם את המודעות לנושא החשוב. מידע חשוב בנושא ניתן למצוא בשרשור בנושא בפורום.
 

Salem

New member
../images/Emo42.gifבוקר טוב../images/Emo42.gif

בוקר טוב לככככווולם
 
למעלה