עוד קצת ביצועים: שליפת "X הודעות חדשות" ממע' מסרים

12 באוגוסט 2010

תגיות: , ,
אין תגובות

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

כאשר ניגשים לבעיה, ניתן לראות 2 שימושים נפוצים:

1. הצגת מספר ההודעות בלבד
2. הצגת חלון DHTML קטן שמציג את הכותרת ורכיבים נוספים של הכותב או ההודעה.

נתייחס לשניהם.

 

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

ניצור טבלה פשוטה וקטנה:

 

u_id, u_name, u_msgs

ובהתאמה – מס' משתמש, שם משתמש, מס' הודעות חדשות ואם צריך אז עוד שדה או שניים.

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

 

איך מעדכנים את זה?

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

שליפה פשוטה כמו זו:

update users_msgs set u_msgs=(select count(*) from pb_messages where m_new=1 and m_to=121) where u_id=121

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

 

יום נעים לכולכם

משה, הרי בנימין, היכן שהשמש מכה קצת פחות.

הוסף תגובה
facebook linkedin twitter email

כתיבת תגובה

האימייל לא יוצג באתר. (*) שדות חובה מסומנים