View Single Post
ישן 31-07-11, 13:40   # 8
IgalSt
מנהל פורום, עסק רשום
 
IgalSt's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: המרכז
גיל: 38
הודעות: 1,432
Send a message via Skype™ to IgalSt

IgalSt לא מחובר  

באשר ל-Explain:
תראה בתמונה המצורפת איך אני מריץ שאילתה ומה ה-explain נותן לי. במקרה הזה הוא מציג איזה אינדקסים אפשרים ובמה הוא משתמש (במקרה הזה, בגלל שיש כמה רשומות בודדות הוא לא משתמש באינדקס אלא ב-where - וזה נכתב בצד ימין).
הכי גרוע שיהיה לך using filesort או using temp table (או ניסוח דומה, הניסוח שלהם מסביר את עצמם)


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

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

mysql_slow_queries מופעל באמצעות פאנל הניהול של ה-mysql על השרת שלך. בדיוק כמו על המחשב הלוקאלי שלך, אפשר להכנס ל-mysql administrator (או משהו דומה). אתה יכול גם לפנות לחברה שמנהלת את השרת שלך ולבקש מהם להפעיל את הלוג.

בקשר ל-JOIN, כהגדרה עדיף לעשות שאילתות עם JOIN מאשר פעמיים SELECT.
ל-mysql יש יכולת לייעל שאילתות כאלה והוא בנוי לעשות דברים כאלה. תאורתית אתה לא אמור להוסיף לוגיקה באפליקציה שלך על מנת לשלוף מידע מה-DB שלך.
אבל! כל מקרה לגופו. אם אתה לא מצליח לייעל שאילתה מסויימת והיא רצה יותר מדיי זמן, ומנגד אתה רואה שאם תחלק אותה ל-2 ותוסיף לוגיקה באפליקציה שלך תשפר משמעותית ביצועים, אז ייתכן מאוד שכדאי לעשות את זה.
כמו כן הייתי שוקל לבדוק איך אפשר לשכתב את השאילתה - בכלל, להסתכל על המצב מלמעלה ולחשוב מחוץ לקופסא.

באשר לשאלה לגבי הקאשינג, והאם זה כדאי? אין שום סיבה ללכת ל-DB עבור *כל* גולש ועבור *כל* עמוד שהוא צופה בו ולשלוף רשימת קטגוריות שהיא בד"כ סטאטית מאוד.
נכון שזה משפר ביצועים קצת מאוד, אבל בכל זאת, אם ה-RAM שלך פנוי, למה לא להשתמש בו? שליפה ממנוה הרבה הרבה הרבה יותר מהירה מאשר מ-DB.

גם הרשימה של מה שיש לך בדף הבית (כתבות, שאלות, משתמשים פעילים וכו') אתה יכול לעשות להן קאשינג. רק שתשלוף את המידע לא אחת ל-24 שעות, אלא אחת ל-7-10 דקות לדוגמה. למה לא?
תחשוב על כמה שאילתות אתה חוסך פה.

השגיאה של ההתממשקות לפייסובק:
השתמשתי כבסיס בדוגמה הזאת לצורך המימוש.
תנסה לתפוס את השגיאה כאשר קורס לך ה-DLL.
אתה יודע, on error resume next ואח"כ לבדוק אם יש לך שגיאה או לא. אם קורס לך, תנסה להפעיל מחדש את הפניה.
גם חשוש לממש timeout לבקשה שלך לפייסבוק כך שאם אין תשובה אז לבטל את הפניה.
כמו כן יש כמה גריסאות ל-DLL הזה, תנסה להחליף בינהן.

אתה יכול לבקש מהחברה שמנהלת את השרת שלך לעשות משימה מתוזמנת שתעשה recycle כל שעה-שעתיים ל-application poll של האתר. ככה תקטין את הגודל של w3wp.exe
הפעולה אורכת כמה שניות בד"כ אבל בזמן הזה אי אפשר לגלוש באתר.
  Reply With Quote