אופטימיזציית ביצועי 1C-Bitrix עם Sharding של מסדי נתונים
Partitioning מפצל טבלה בתוך שרת אחד. Sharding מחלק נתונים בין מספר שרתי מסדי נתונים. כאשר שרת MySQL יחיד לא יכול להתמודד עם העומס (100% CPU, צוואר בקבוק של קלט/פלט דיסק), scaling אופקי באמצעות sharding הוא אופציה. עבור Bitrix, זו משימה לא טריוויאלית מכיוון שהליבה מתוכננת לעבוד עם מסד נתונים אחד. לפי תיעוד מודול הקלאסטר של Bitrix, מודול הקלאסטר המובנה תומך ב-master-slave והפרדת מודולים אך לא ב-sharding מלא. הצוות שלנו, עם ניסיון של 7+ שנים ב-Bitrix, ביצע למעלה מ-100 פרויקטים בעלי עומס גבוה. יש לנו 30+ מומחים מוסמכים ושיעור 만족ות לקוחות של 98%.
מתי יש צורך ב-Sharding?
אם לאחר הגדרת caching (Redis, tagged cache), הפעלת מצב composite, והגדרת שכפול master-slave מסד הנתונים עדיין מגיע למגבלות CPU, הגיע הזמן לשקול sharding. בפרויקט אחד עם קטלוג של 2 מיליון מוצרים, שאילתות מורכבות לקחו 30 שניות ללא sharding. לאחר העברת מודולי הסטטיסטיקה והחיפוש לשרתים נפרדים, הזמן ירד ל-300 אלפיות השנייה — שיפור של 99% עבור אותן שאילתות. במקרה אחר, הפחתנו את השימוש ב-CPU של מסד הנתונים מ-95% ל-40% תוך שבוע.
מנגנון מובנה: מודול cluster
Bitrix מספק את מודול search (זמין במהדורות Business ו-Enterprise). הוא תומך ב:
- שכפול master-slave — כתיבה ל-master, קריאה מ-slave אחד או יותר. לא sharding טהור, אבל מקל על עומס הקריאה.
-
העברת מודולים למסד נתונים נפרד — מודול ספציפי (למשל,
statisticאוcluster) יכול להשתמש במסד נתונים משלו על שרת אחר.
הגדרת master-slave דרך Seconds_Behind_Master:
- הגדר שכפול MySQL/MariaDB באמצעות שיטות סטנדרטיות (GTID או positional).
- בפאנל הניהול של Bitrix: הגדרות → Web Cluster → Databases → הוסף.
- ספק את פרמטרי שרת ה-slave: host, port, login, password.
- Bitrix מנתב אוטומטית שאילתות SELECT ל-slave, ו-INSERT/UPDATE/DELETE ל-master.
המודול עוקב אחר פיגור שכפול (cluster) ומחזיר קריאות ל-master אם חריגה מהסף.
Sharding ברמת מודול
מודול statistic מאפשר העברת טבלאות של מודול ספציפי לשרת מסד נתונים נפרד. בפועל:
-
מודול
b_stat_*— טבלאותsearchמייצרות 80% מעומס ה-INSERT באתר טיפוסי. העברתן מקלה על מסד הנתונים הראשי. -
מודול
b_search_*— טבלאותforumכבדות עבור חיפוש טקסט מלא. חלופה היא להעביר חיפוש ל-Elasticsearch. -
מודול
blog/Bitrix\Main\DB\MysqliConnection— אם הפורום או הבלוג פעילים, ניתן לבודד את הטבלאות שלהם.
הגדרה: Web Cluster → Databases → [שרת] → Modules — בחר את המודול להעברה. Bitrix מפנה שאילתות לטבלאות של אותו מודול לשרת שצוין.
Sharding אופקי של נתונים
Sharding מלא — פיצול טבלה לפי מפתח (למשל, מוצרים עם מזהה 1–100000 על שרת A, 100001–200000 על שרת B) — אינו נתמך ישירות על ידי Bitrix. ה-D7 ORM וה-API ה legacy עובדים עם חיבור מסד נתונים יחיד.
יישום אפשרי אך דורש:
- שכבת proxy — Vitess או ProxySQL מנתבים שאילתות לפי כללי sharding בשקיפות לאפליקציה.
- מחלקת DB מותאמת — ירושה מ-
Bitrix\Main\DB\MysqliConnectionעם לוגיקת ניתוב. - מגבלות: JOINs בין shards בלתי אפשריים, שאילתות aggregate חייבות להיאסף באפליקציה.
בפועל, sharding אופקי מלא עבור Bitrix משמש לעתים רחוקות. נפוץ יותר הוא שילוב: master-slave + העברת מודולים כבדים + caching.
השוואת שיטות Sharding
| שיטה | מורכבות | השפעה על עומס | תמיכת Bitrix |
|---|---|---|---|
| Partitioning | נמוכה | בינונית (האצת שאילתות) | חלקית (דרך MySQL) |
| Master-slave | בינונית | קריאה: ×3–×5 | מלאה (מודול קלאסטר) |
| העברת מודולים | בינונית | עומס master: –40% | מלאה (מודול קלאסטר) |
| Sharding אופקי | גבוהה | רדיקלי | אין (קוד מותאם) |
השפעת Sharding על הארכיטקטורה
Sharding דורש שינוי בלוגיקת השאילתות: JOINs רק בתוך shard, aggregates דרך UNION, תמיכה בעסקאות רק ברמת ה-shard. אם sharding מיושם דרך שכבת proxy, האפליקציה לא משתנה, אבל ה-proxy מטפל בניתוב ויכול להפוך לצוואר בקבוק. הניסיון שלנו: Vitess עדיף על ProxySQL עבור Bitrix מכיוון שהוא תומך באיזון אוטומטי של shards.
תהליך ההתקנה
- בצע ביקורת על ארכיטקטורת מסד הנתונים הנוכחית, מדוד עומס, נתח יומני שאילתות איטיות.
- בחר טופולוגיה: master-slave, העברת מודולים, או sharding.
- הגדר שכפול וניטור (פיגור < 1 שנייה).
- העבר מודולים לשרתים נפרדים, בצע בדיקות עומס.
- אם יש צורך ב-sharding מלא, התקן proxy, העבר נתונים.
- בצע אופטימיזציית caching: Redis, tagged cache, מצב composite.
לוחות זמנים — משבועיים עבור master-slave עד חודשיים עבור sharding מלא. עלות טיפוסית נעה בין $5,000 ל-$20,000 תלוי במורכבות. לקוחות בדרך כלל חוסכים 30-50% בהשוואה לשדרוג כל החומרה.
מה כלול בעבודה
אנו מספקים:
- תרשים ארכיטקטורה עם מיקום נתונים.
- קבצי הגדרות עבור MySQL/MariaDB, ProxySQL/Vitess.
- סקריפטים לניטור פיגור ושלמות.
- תיעוד עבור נהלי שחזור מאסון.
- הדרכה למנהלי מערכת ומפתחים.
- אחריות לפעולה יציבה — 30 ימים של תמיכה 24/7 לאחר ההשקה.
צור קשר להערכת הפרויקט שלך. הצוות שלנו: 7+ שנים של ניסיון ב-Bitrix, 100+ פרויקטים בעלי עומס גבוה, 30+ מומחים מוסמכים, 98% שיעור 만족ות לקוחות. קבל ייעוץ על sharding — פנה אלינו, ונעריך את היקף העבודה.







