ציטוט:
נכתב במקור על ידי yonatan
SQL נחשב שירות של 50\50 , 50% מהביצועים תלוים בשרת , ו50% מהביצועים תלויים בתכנות המערכות.
אתה יכול להריץ שרת מקונפג בצורה אופטימלית על שרת יעודי עם כל מה שצריך , ועדיין הוא עלול לתת ביצועים גרועים במידה שהקוד שמריצים עליו כתוב בצורה לא יעילה, דבר ראשון תבדוק את התכנות של המערכות, אחרי זה תיגש לטפל בשרת בהתאם לצרכים.
|
כמה טיפים לגבי שיפור תכנות המערכת:
1. אינדקסים אינדקסים אינדקס ושוב אינדקסים על הטבלאות לפי השאילתות הפופולריות והכבדות. אפשר להריץ slow queries log ולבדוק
2. לנסות למזער למינימום את כמות השליפות שהן לא לפי מספר. לדוגמה במקום לשלוף משהו לפי שם משתמש, מומלץ לשלוף לפי ה-User Id. דוגמה נוספת תהיה במקום לשלוף את הרשומות החדשות ביותר לפי תאריך ההכנסה, לשלוף לפי ה-ID של הרשומות. הריי שתמיד* ה-ID קופץ למעלה ולכן לשלוף לסדר לפי תאריך הכנסה שקול ללסדר לפי ID.
3. להשתמש במנוע המתאים לכל טבלה innodb או myisam - מומלץ לקרא מה היתרונות והחסרונות של כל אחד מהם
4. ביצוע קאשינג של התוצאות של השאילתות בזיכרון של השרת וחיסכון בגישה ל-DB. לדוגמא מומלץ לטעון את רשימת העמודים ל-RAM בכניסה הראשונה לאתר ולא לשלוף אותם בכל עליית עמוד - הרי התוכן הזה לא צפוי להתעדכן בצורה תדירה
* ישנם מקרים מאוד מיוחדים בהם יכול לקרות מצב שנכנס ID נמוך יותר, אבל זה מאוד חריג.
בנוסף השיטה הזאת טובה עבור מצבים בהם מעבירים שעון שעה אחת אחורה ובעצם "חוזרים" על אותה השעה שוב.