מדי פעם פונים אליי לקוחות פוטנציאליים ומבקשים שרות בנק-שעות לתחזוקת שרתי הלינוקס שלהם (זה לא ממש משנה אם זה בענן או בחדר שרתים של חברת Hosting או בחדר של חברה כלשהי). אותם לקוחות רוצים את המערכות שיהיו מעודכנות, שיפעלו בצורה מיטבית ושאתן המלצות לגבי מה ניתן לעשות.
לגבי רוב הסעיפים אין לי שום בעיה לתת שרות, למעט שזה מגיע ל… שרותי SQL, בין אם מדובר ב-MySQL או PostgreSQL. באותם מקרים אין לי שום בעיה לתת שרות אם לדוגמא השרות SQL לא עולה או שצריך הגדרות ברמת System, אך למעט תקלות כאלו, בד"כ אני ממליץ ללקוחות על משהו אחר הקשור לאותם שרותי SQL.
לא חשוב מהו שרות ה-SQL המותקן בשרת, בד"כ הם עושים את העבודה Out of the box בצורה טובה יחסית, אבל במקרים רבים לקוחות מתלוננים על כך שהעבודה שהוא מבצע היא איטית, החשש שהטבלאות גדולות מדי, ומדוע דבר שרץ מקומית על המכונה של המפתח לוקח 0.1 שניות – על השרת לוקח 4 שניות לדוגמא..
כאן הבעיה מתחילה בחלק שלא קשור לסיסטם, אלא בחלק שקשור למפתחי האפליקציות. ישנם לא מעט מקרים שראיתי שבהם שאילתות נכתבות בצורה שתגרום לשרת SQL "להזיע" עם שאילתות באורך 6-10 שורות ובסופו של דבר לא קיימת אופטימיזציה של השאילתות, כך שהשרת SQL עצמו הוא בסדר גמור, אבל מה שהמפתח שולח – "חונק" את השרת, תכפילו את בקשת השאילתות פי 100 או 1000 (פר גולש) – וקיבלתם מערכת שיכולה להיתקע גם אם יש בשרת 32 ליבות!
איש DBA רציני הוא אדם שלמד הרבה יותר ממפתחים את ה-SQL והוא יודע לעשות אופטימיזציה לשאילתות. במקום 10 שורות אורך שאילתה, הוא יכול לכתוב את אותו דבר בשורה וחצי לדוגמא תוך ניצול הפונקציות הספציפיות של אותה אפליקציית SQL. אותו DBA יכול בעצם לשבת עם המפתחים שלכם ועם הקוד (ברוב המקרים הוא לא צריך לדעת את שפת התכנות שהמפתח משתמש הואיל ושליחת שאילתות נעשית פחות או יותר בצורה זהה בכל השפות) וללמד את המפתחים איך לכתוב שאילתות בצורה אופטימלית, כך שלאחר סשן של יום עבודה צמודה עם המפתחים לדוגמא, שרת ה-SQL יחזור לעבוד בצורה זריזה ואופטימלית ובחלק גדול מהמקרים לא תצטרכו להוסיף עוד שרתי SQL כי השרת היחיד לא עמד בעומס.
אישית אני מודע לכך שלכל שרת SQL יש הגדרות של Cache שעוזרות בהאצת עיבוד השאילתות וקריאה/עדכון/מחיקת נתונים מה-SQL, אבל בד"כ ממה שראיתי – אם כבר בהתחלה רצים לשנות את גודל ה-Cache, אותן בעיות יצוצו שוב בהמשך, כי הבעיה היא לא ב-Cache והגודל, אלא בצורת השאילתות.
לכן – אם אתם מוצאים ששרת (או שרות) ה-SQL "חנוק" – אני ממליץ לקחת איש DBA שיבדוק את השאילתות וילמד את צוותי הפיתוח איך לכתוב דברים בצורה אופטימלית, ובאותה הזדמנות כדאי גם להכיר את התכונות של אותו שרות SQL ולחשוב אם לדוגמא לעבור לשרות SQL אחר תואם (לדוגמא מ-MySQL ל-MariaDB שתואם 100% ל-MySQL אך יש לו פונקציות מתקדמות יותר).
בהזדמנות זו – אם ישנם אנשי DBA פרילאנסרים – אשמח אם תשלחו לי מייל (hetz@hetz.biz) עם הפרטים שלכם כך שאם פונים אליי ומבקשים שרות זה – אפנה אותם אליכם.