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

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

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 01-08-11, 11:39   # 1
Erez | TrustMedia.co.il
עסק רשום [?]
 
מיני פרופיל
תאריך הצטרפות: Jul 2008
הודעות: 1,854

Erez | TrustMedia.co.il לא מחובר  

יעילות מסד

יש לי מסד נתונים עם טבלה שמכילה חיפושים שבוצעו באתר. בטבלה יש כמה מאות אלפי רשומות, והמבנה שלה הוא:
ID מסוג INT שהוא האינדקס בטבלה
text מסוג text

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

תודה חבר'ה
__________________
  Reply With Quote
ישן 01-08-11, 11:43   # 2
gillllll
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Nov 2005
הודעות: 363

gillllll לא מחובר  

תלוי לפי מה אתה שולף אם אתה למשל עושה שאילתות בסגנון
select * from X where text ='BLa'
אז הייתי מציע לך לשים אינדקס על השדה טקסט.
http://beginner-sql-tutorial.com/sql-index.htm

לגבי ה ID אם אתה כבר על שרת MYSQL או MSSQL וזה מפתח (כלומר הגדרת אותו כמפתח) אז זה אוטומטית כבר מוגדר אינדקס בגלל זה דיברתי רק על TEXT.
חוץ מזה אם יש לך שאילתות שאתה מחפש צירוף של ID וטקסט אני מציע לך לעשות גם על הצירוף אינדקס.

שים לב ששימוש ב INDEX יצרוך יותר זיכרון אבל השאילתות יבוצעו יותר מהר כלומר פחות עומס על המעבד.
__________________
- חייך הכל לטובה .

Last edited by gillllll; 01-08-11 at 11:46..
  Reply With Quote
ישן 01-08-11, 11:57   # 3
Erez | TrustMedia.co.il
עסק רשום [?]
 
מיני פרופיל
תאריך הצטרפות: Jul 2008
הודעות: 1,854

Erez | TrustMedia.co.il לא מחובר  

ציטוט:
נכתב במקור על ידי gillllll צפה בהודעה
תלוי לפי מה אתה שולף אם אתה למשל עושה שאילתות בסגנון
select * from X where text ='BLa'
אז הייתי מציע לך לשים אינדקס על השדה טקסט.
http://beginner-sql-tutorial.com/sql-index.htm

לגבי ה ID אם אתה כבר על שרת MYSQL או MSSQL וזה מפתח (כלומר הגדרת אותו כמפתח) אז זה אוטומטית כבר מוגדר אינדקס בגלל זה דיברתי רק על TEXT.
חוץ מזה אם יש לך שאילתות שאתה מחפש צירוף של ID וטקסט אני מציע לך לעשות גם על הצירוף אינדקס.

שים לב ששימוש ב INDEX יצרוך יותר זיכרון אבל השאילתות יבוצעו יותר מהר כלומר פחות עומס על המעבד.
הphpmyadmin משום מה לא מאפשר לי לעשות את השדה text בתור אינדקס
והשאילתות הם כאלו:
select `text`,`times` from `search` order by `time` limit 0,100
select `text` from `he` order by `time` limit 0,100

רק עם לימיט שונה בהתאם לדף.
בכל מקרה ראיתי את זה:
http://www.internet-israel.com/inter...9%D7%9C-mysql/

יש שם את המנוע Berkeley DB – BDB שנראה לי מתאים, אבל אני לא בטוח. אז האם זה יתאים עבורי?

וזה מהדוח של השאילתות האיטיות:

# Mon Aug 1 01:25:23 2011
# Query_time: 3.734186 Lock_time: 0.000106 Rows_sent: 100 Rows_examined: 320465
use ******;
select `text`,`times` from `search` order by `time` limit 0,100

# Mon Aug 1 01:32:44 2011
# Query_time: 4.665496 Lock_time: 0.036117 Rows_sent: 100 Rows_examined: 322565
use *****;
select `text`,`times` from `search` order by `time` limit 2100,100
__________________
  Reply With Quote
ישן 01-08-11, 12:16   # 4
gillllll
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Nov 2005
הודעות: 363

gillllll לא מחובר  

אוקיי אני מניח (כיון שאני לא בטוח אם ORDER BY באמת ישופר עם אינדקס למרות שמבחינת הגיון של איך אינדקס עובד זה אמור לשפר) במקרה הזה אם תעשה אינדקס דוקא על TIME זה יהיה לך טוב אתה לא צריך אינדקס על TEXT כי אתה לא שולף לפיו.
על TIME הוא נותן לך לבצע אינדקס?

(אפילו אם זה אפשרי אולי הייתי הולך על הפיכת TIME למפתח אם הוא יחודי ואילו 2 השאילתות היחידות שאתה מריץ ועושות בעיה.)

לגבי מנועים אני לא יודע לא התנסתי בהבדלים השונים בניהם...
__________________
- חייך הכל לטובה .
  Reply With Quote
ישן 01-08-11, 12:42   # 5
Erez | TrustMedia.co.il
עסק רשום [?]
 
מיני פרופיל
תאריך הצטרפות: Jul 2008
הודעות: 1,854

Erez | TrustMedia.co.il לא מחובר  

צודק. שיניתי את השאילתא שתמיין לפי הid במקום הtime. נקווה שזה ישפר את הביצועים.
יש עוד עצות??
__________________
  Reply With Quote
ישן 01-08-11, 14:36   # 6
IgalSt
מנהל פורום, עסק רשום
 
IgalSt's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: המרכז
גיל: 38
הודעות: 1,432
Send a message via Skype™ to IgalSt

IgalSt לא מחובר  

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

מה המנוע של הטבלה שלך?
נסה להשתמש ב-MyISAM. הוא לא טוב במקרה של עדכונים כי הוא נועל את כל הטבלה במקרה כזה, אבל לשליפה הוא יותר מהיר מאשר InnoDB.

בכל אופן, יכול להיות שאפשר לעשות איזשהו קאשינג ולשים X רשומות אחרונות בטבלה קטנה ולשלוף ממנה?
  Reply With Quote
ישן 01-08-11, 17:51   # 7
Erez | TrustMedia.co.il
עסק רשום [?]
 
מיני פרופיל
תאריך הצטרפות: Jul 2008
הודעות: 1,854

Erez | TrustMedia.co.il לא מחובר  

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

מה המנוע של הטבלה שלך?
נסה להשתמש ב-MyISAM. הוא לא טוב במקרה של עדכונים כי הוא נועל את כל הטבלה במקרה כזה, אבל לשליפה הוא יותר מהיר מאשר InnoDB.

בכל אופן, יכול להיות שאפשר לעשות איזשהו קאשינג ולשים X רשומות אחרונות בטבלה קטנה ולשלוף ממנה?
המנוע זה myisam.
וצודק, אני חושב שאני ישתמש בקאשינג, כי בכל מקרה העמודים האלה כבר לא מתעדכנים.
__________________
  Reply With Quote
השב

חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים)
 


חוקי פירסום
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is מופעל
סמיילים הם מופעל
[IMG] קוד מופעל
קוד HTML מכובה

קפיצה לפורום


כל הזמנים הם GMT +2. הזמן כעת הוא 12:55.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ