אתם משיקים אתר על 1C-Bitrix, אבל עמודים נטענים תוך 5–10 שניות. לקוחות עוזבים, מנהלים מתלוננים. בדקתם אחסון וקישוריות, אבל הסיבה עדיין לא ברורה. יומן השאילתות האיטיות — יומן MySQL של שאילתות איטיות — חושף את האשמים האמיתיים. בלעדיו, אתם מנחשים, וכל שנייה של עיכוב עולה כסף: ההמרות יורדות, תקציב הפרסום נשרף. אנחנו עוזרים לנתח את היומן, למצוא את השאילתות הכבדות ביותר, ולייעל אותן. תוך 2–3 ימים, תקבלו דוח ופתרונות מוכנים, והחיסכון במהירות ישתלם על ההשקעה תוך שבוע.
במאמר זה, נסקור כיצד להפעיל את היומן האיטי, אילו כלים להשתמש לניתוח (mysqldumpslow, pt-query-digest), ואילו שאילתות טיפוסיות מאטות את Bitrix. הכי חשוב, נראה מקרה אמיתי שבו יצירת אינדקס פשוטה הורידה את זמן השאילתה מ-3 שניות ל-10 מילישניות. אם אתם רוצים לפתור את הבעיה במהירות, צרו קשר: נבצע ביקורת תוך יום אחד.
למה שאילתות איטיות הן הבעיה העיקרית של Bitrix
הסיבה העיקרית היא שאילתות מסד נתונים לא אופטימליות. Bitrix משתמש רבות בלוקי מידע, מאפיינים והצעות מסחר. עם מספר גדול של אלמנטים ללא אינדקסים מתאימים, כל שאילתה הופכת לסריקת טבלה מלאה. יומן השאילתות האיטיות תופס שאילתות כאלה. הנה שלוש קבוצות בעיות טיפוסיות:
- שאילתות ל-
b_iblock_elementללא אינדקס עלIBLOCK_IDו-SORT. -
LIKEעם תו כללי מוביל במהלך סינון. -
COUNT(*)עלb_sale_orderעם מיליוני רשומות. הניסיון שלנו: ב-80% מהמקרים, הוספת 2–3 אינדקסים מורכבים מבטלת 90% מהשאילתות האיטיות. זה חוסך תקציב לשדרוגי שרת יקרים.
איך להפעיל ולהגדיר את יומן השאילתות האיטיות
ב-my.cnf (או my.ini ב-Windows):
[mysqld] slow_query_log = 1 slow_query_log_file = /var/log/mysql/slow.log long_query_time = 0.5 log_queries_not_using_indexes = 1 min_examined_row_limit = 100 [mysqld] slow_query_log = 1 slow_query_log_file = /var/log/mysql/slow.log long_query_time = 0.5 log_queries_not_using_indexes = 1 min_examined_row_limit = 100 — שאילתות ארוכות מ-500 אלפיות השנייה. לאבחון פעיל, הגדירו אותו ל-0.1 או אפילו 0. long_query_time = 0.5 — תופס שאילתות ללא אינדקסים ללא קשר לזמן. log_queries_not_using_indexes = 1 — אל תרשום שאילתות מהירות על טבלאות קטנות.
ניתן להפעיל זאת דינמית ללא הפעלה מחדש של MySQL:
SET GLOBAL slow_query_log = 'ON'; SET GLOBAL long_query_time = 0.5; SET GLOBAL log_queries_not_using_indexes = 1; תוכלו לקרוא עוד על היומן האיטי בויקיפדיה.
איך למצוא שאילתות איטיות
קריאת היומן הגולמי אינה נוחה. השתמשו בכלי צבירה: mysqldumpslow — מובנה ב-MySQL:
mysqldumpslow -s t -t 10 /var/log/mysql/slow.log min_examined_row_limit = 100 — מיון לפי זמן כולל, SET GLOBAL slow_query_log = 'ON'; SET GLOBAL long_query_time = 0.5; SET GLOBAL log_queries_not_using_indexes = 1; — 10 השאילתות המובילות. מציג תבנית שאילתה וזמן כולל/ממוצע.
pt-query-digest (Percona Toolkit) — משמעותית יותר אינפורמטיבי: מציג אחוזוני זמן ביצוע, מספר שאילתות ייחודיות, עומס שרת.
| כלי | מהירות | אינפורמטיביות | תכונות נוספות |
|---|---|---|---|
| mysqldumpslow | מהיר | בסיסי | אין |
| pt-query-digest | איטי יותר | מפורט (אחוזונים, פרופילים) | סינון גמיש, דוחות |
pt-query-digest מציג לא רק זמן ממוצע אלא גם התפלגות — מפורט פי 3 מ-mysqldumpslow.
שאילתות איטיות טיפוסיות ב-Bitrix
| בעיה | דוגמת SQL | פתרון |
|---|---|---|
| סריקת קטלוג מלאה | mysqldumpslow -s t -t 10 /var/log/mysql/slow.log |
אינדקס מורכב (IBLOCK_ID, SORT) |
| LIKE ללא אינדקס | -s t |
אינדקס FULLTEXT או MATCH AGAINST |
| COUNT(*) על הזמנות | -t 10 |
אינדקס על STATUS או חלוקה |
הוספת אינדקס במקרה הראשון מפחיתה את זמן הביצוע מ-3 שניות ל-0.01 שניות — מהיר פי 300.
מקרה בוחן: איך האצנו קטלוג פי 20
לקוח — חנות מקוונת עם 50,000 מוצרים. עמודי קטלוג נטענו תוך 6–8 שניות. יומן השאילתות האיטיות חשף שאילתה ל-SELECT * FROM b_iblock_element WHERE IBLOCK_ID=5 ORDER BY SORT עם SELECT * FROM b_iblock_element_property WHERE VALUE LIKE '%поиск%'. יצרנו אינדקס FULLTEXT ושכתבנו את השאילתה לשימוש ב-SELECT COUNT(*) FROM b_sale_order WHERE STATUS='N'. זמן הביצוע ירד מ-2.3 שניות ל-0.12 שניות. זמן טעינת העמוד הכולל ירד ל-1.2 שניות. MySQL FULLTEXT
רוצים את אותו הדבר? קבלו ייעוץ — נעריך את המקרה שלכם תוך שעה.
מה כלול בעבודה
- ניתוח יומן השאילתות האיטיות למשך 7 ימים (או תקופה מוגדרת).
- זיהוי 10 השאילתות האיטיות המובילות.
- EXPLAIN והמלצות לאינדקסים.
- יישום אופטימיזציות (יצירת/שינוי אינדקסים, שכתוב שאילתות).
- דוח עם מדדים לפני/אחרי.
תהליך העבודה
- הפעלת יומן איטי על השרת שלכם (מרחוק).
- איסוף יומן על פני תקופה מייצגת (בדרך כלל 1–2 ימים).
- ניתוח באמצעות pt-query-digest.
- מסירת דוח עם סדרי עדיפויות.
- הסכמה ויישום שינויים.
- מדידה חוזרת לאישור השיפור.
לוח זמנים: 1 עד 5 ימים תלוי במורכבות.
למה לסמוך עלינו?
- 7+ שנות ניסיון עם Bitrix.
- 300+ פרויקטים מוצלחים.
- מומחי 1C-Bitrix מוסמכים.
- עבודה על פי חוזה עם אחריות לתוצאות.
מוכנים לתקן את ההאטה? צרו קשר — נעריך את הפרויקט שלכם בחינם ונציע פתרון תוך יום אחד.







