Archive

Archive for נובמבר, 2009

מי לעזאזל מכביד קשות על שרת ה-Analysis Services?

מערכות ה- OLAP המובילות בעולם נכון להיום הן מערכות  SQL Server. לרוב הן רצות על שרתים יעודיים המשמשים כמעט בלעדית לעיבוד קוביות של SSAS. השרתים משמשים את המשתמשים שמריצים דו"חות על הקוביות הללו (לרוב דרך מערכות להפקת דו"חות). במקרים רבים ישנו משתמש המחליט "לקרוע" את השרת הזה עד זום דם ומריץ אגרגציה מטורפת על כמות אדירה של נתונים – והכל בזמן אמת.

הבעיה היא – איך עולים על המשתמש הסורר? מי תוקע את כולם? מה בדיוק גרם למערכת "להיתקע"?

כמובן שאם מריצים profiler על המערכת, אפשר לראות מי מריץ מה. אבל אי אפשר להחזיק profiler פתוח כל הזמן כי הרי הכלי הזה יוצר עומס רב על השרת ובינינו – אף אחד לא יישב כל היום ויתבונן בפלט שלו.

למנוע הטבלאי של SQL Server יש אפשרות להריץ trace שמזין את אותו הפלט של profiler לקובץ או לטבלה. אבל לצערי, אין trace עדיין ל-SSAS שניתן להרצה דרך T-SQL או דרך XMLA.

אז מה עושים? יש לנו את הדוט נט לטובת העניין!!!

כידוע, יש לנו בדוט נט את ה-SMO שהוא SQL Server Management Objects. זוהי משפחה של קלאסים שמאפשרת לעשות המון משימות ניהוליות על SQL Server ואפשר לכתוב עשרות מאמרים רק על SMO.

הייתי רוצה רק להזכיר את ה-namespace לטובת tracing שנקרא Microsoft.SqlServer.Management.Trace.

אפשר להפעיל אותו גם על SQL Server הטבלאי וגם על SSAS. זה פותר לנו את בעיית המחסור ב-trace על SSAS הניתן להפעלה דרך T-SQL.

ניתן פשוט ליצור windows service שרץ ברקע ומפעיל trace על ה-SSAS תוך שימוש ב-SMO. את התוצאות, ה-service מזין לתוך הטבלה רגילה ב-DB טבלאי. מה שיפה ב-trace הזה הוא שהתקורה שהוא מייצר היא אפסית וניתן להריץ אותו על כל מחשב שיש לו גישה לשרת ולאו דווקא על שרת ה-SSAS עצמו. גם בסיס הנתונים אליו נכתבות התוצאות יכול להיות כל DB על כל שרת שיש לנו גישה אליו ברשת.

עכשיו חסר לנו עוד דבר – מדדים של מערכת ההפעלה (כמו זכרון, מעבד ודיסקים) ושל SSAS. אם נתעד גם את המדדים וגם את הפעולות (trace) ואם נצליב ביניהם, נוכל לדעת מי המשתמש שהריץ איזה MDX שגרם למשל ל-CPU להגיע ל-100 אחוז.

אז איך אוספים מדדים? על כך אכתוב בפוסט הבא.

Performance counters לניטור שרת SQL Server

מערכת ההפעלה Windows על כל שלל גרסאותיה מספקת כלי ניטור פשוט ויעיל הנקרא Performance monitor או PerfMon בקיצור. 

שואלים אותי הרבה קולגות, באיזה counters של Perfmon להשתמש כשרוצים לנטר שרת SQL Server.

אכן ישנם המון counters או מדדים (בעברית) שאפשר להשתמש בהם. אבל רובם לא ממש עוזרים לאתר בעיות.

כשישנה בעיית ביצועים, Perfmon לא יעזור לאתר את מקור הבעיה המדוייק אבל הוא בהחלט נותן נקודת מוצא שממנה אפשר להמשיך ולחקור (ואפילו "לחפור") היכן מצוייה ה"עז" שמאטה את המערכת.

בגדול – מה שמעניין הם שלושת מרכיבי הבסיס של השרת: המעבדים (CPU), ה-I/O (דיסקים) והזכרון.

לגבי זכרון – ניתן להפעיל את SQL Server על מערכת 32 ביט גם עם יותר מ-4GB של זכרון ע"י שימוש ב-AWE הלוא הוא ה- Address Windowing

Extension. אני תמיד ממליץ ללקוחות שלי להתקין SQL Server בגרסת 64 ביט על גבי מערכת הפעלה Windows ב-64 ביט במערכות production ולא להשתמש ב-AWE והסיבה היא של-AWE יש תקורה הגורמת למערכת לעבוד לאט יותר בשל הצורך להמיר כתובות מהחלון הוירטואלי ב- 32 ביט למרחב הכתובות הפיזי.  

ישנן מערכות SQL Server שמריצות פונקציות חיצוניות ב-DLL-ים של 32 ביט – אילו עשויות לא לעבוד כיאות ב-64 ביט ובמקרה כזה יש לשקול שימוש ב-AWE. אם אפשר לקמפל את ה-DLL מחדש (בהנחה שישנו ה-source code) עבור 64 ביט – הרי זה עדיף.

 

ובכן, להלן רשימת ה-counters הבסיסיים שבהם אני מתחיל כשאני ניגש לשרת SQL Server וברצוני לקבל תמונת מצב עכשיווית לגבי ביצועיו.

CPU

Object: Processor – Counter: % Processor Time

Object: Processor – Counter: % Privileged Time 

Object: System – Counter: Processor Queue Length 

Object: Process – Counter: % Processor Time – Instance sqlservr

Object: Process – Counter: % Privileged Time – Instance: sqlservr

DISK I/O

Object: Physical Disk – Counter: Disk Writes/Sec

Object: Physical Disk – Counter: Disk Reads/Sec

Object: Physical Disk – Counter: Disk Write Bytes/Sec

Object: Physical Disk – Counter: Disk Read Bytes/Sec

(Average time it takes to perform a disk I/O – should be 5-10 ms, 10-20 on bug data warehouse)

Object: Physical Disk – Counter: Avg. Disk Sec/Write 

Object: Physical Disk – Counter: Avg. Disk Sec/Read

(I/O queue waits – should be < 3)

Object: Physical Disk – Counter: Avg. Disk Write Queue Length

Object: Physical Disk – Counter: Avg. Disk Read Queue Length

SQL Server: Buffer Manager: Page reads/sec

SQL Server: Buffer Manager: Page writes/sec

Memory

Object: Memory – Counter: AvailableMbytes

(Counters with no AWE info)

Object: Process – Instance : sqlservr – Counter: Virtual Bytes

Object: Process – Instance: sqlservr – Counter: Working Set

Object: Process – Instance: sqlservr –Counter: Private Bytes

SqlServer:Buffer Manager –  Buffer Cache Hit Ratio

SqlServer:Buffer Manager –  Free pages

SqlServer:Buffer Manager –  Page Life Expectancy (should be above 300)

 

For AWE usage:

Object: SQL Server:Buffer Manager – Counter: Database Pages — This counter shows the number of pages used by the buffer pool for database content.

Object: SQL Server:Buffer Manager – Counter; Target Pages— This counter shows how manypages SQL Server wants to allocate for the buffer pool.

Object: SQL Server:Buffer Manager – Counter: Total Pages— This counter shows how many pages SQL Server is currently using for the buffer pool.

Object: SQL Server:Memory Manager – Counter: Target Server Memory (KB)—This counter shows how much memory SQL Server would like to use for all its memory requirements.

Object: SQL Server:Memory Manager – Counter: Total Server Memory (KB)—This counter shows how much memory SQL Server is currently using.

הסמינרים הקצרים שלי משבוע אורקל 2009

להלן הסמינרים הקצרים שלי משבוע אורקל 2009.
בנוסף ישנו קישור לכל קבצי ההדגמה שהצגתי (וגם שלא הספקתי להציג) במהלך כל הסמינרים.

שבוע אורקל 2009 – רשמים אישיים

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

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

השנה הרצתי בשני סמינרים של יום מלא ובשני סמינרים נוספים של 50 דקות כל אחד.

ביום ראשון (15.11) נתתי הרצאה על PL/SQL Tips & Tricks for better performance. סמינר המתמקד על תכונות מתקדמות ב-PL/SQL אשר מסייעות להרצת קוד באופן מהיר ויעיל יותר.
הסמינר נכחו כ-30 איש ששרדו למרות האופי המאד טכני של הסמינר. הנוכחים בהרצאה הרבו לשאול שאלות ולהתעניין.
בגלל שביתת נהגי האופנועים שחסמו את הצירים המרכזיים (מחלף הסירה וצומת גלילות), נוצרו פקקי ענק בגישה למלון דניאל בהרצליה פיתוח. בשעה 09:00 נכחו בחדר ההרצאות בקושי 2 אנשים. ב-09:30 נכחו בקושי 12. בסופו של דבר הסמינר התחיל ב-09:40 ונאלצתי להעריכו עד לשעה 17:00.

ביום שני (16.11) נתתי הרצאה שכותרתה Advanced & New Features in PL/SQL. בהרצאה זו המיקוד הוא על אופציות מתקדמות ב-PL/SQL ועל תכונות חדשות שהוספו באורקל 11g. הסמינר הועבר לאולם הגדול ונכחו בו למעלה מ-60 איש.
במשך הסמינר קרו כל הזמן דברים מוזרים – היה לפתע ריח חריף של נפט או סולר למשך כרבע שעה ומדי פעם היו רחשים מוזרים מהקיר שמאחורי הבמה (בעיקר קולות של פכפוכי מים…). זה היה די מוזר.
אני חייב לציין לשבח את אנשי ג'ון ברייס שאצו רצו לברר עם אנשי מלון דניאל את פשר התופעות המשונות האלו ולטפל בהן.

ביום רביעי (18.11) נתתי הרצאה בת 50 דקות (Power session) שכותרתה Doing SQL from PL/SQL – Best & Worst Practices. ההרצאה מבוססת על מאמר בן 80 עמודים של מנהל המוצר של PL/SQL ששמו ברין לוולין אשר מציב כללים לפיתוח נכון של קוד ב-PL/SQL.

ביום חמישי (19.11) נתתי הרצאה בת 50 דקות על Oracle Data Pump שמחליף את ה- exp/imp המיושן של אורקל. כאיש שמתעסק המון גם עם SQL Server, זה כלי שממש חסר לי בסביבת SQL Server. אני מקווה שמיקרוסופט יכלילו utility דומה בגרסאות עתידיות של SQL Server.
בסמינר הזה היתה נוכחות ערה של כ-50 איש ונשאלו שאלות רבות (שמפאת קוצר הזמן היה קשה לענות על כולן) על הכלי הנהדר והמתוחכם הזה שמאפשר לעשות גיבויים לוגיים של נתונים ומבנים ב-DB.

בסופו של השבוע הייתי די מותש בעיקר בגלל שבין לבין המשכתי לטפל בפרוייקטים השוטפים שבהם אני מעורב.

הבלוג שלי

הבנתי שהגיע הזמן לכתוב בלוג מקצועי משלי.

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

הבעסה שבלכתוב בלוג מקצועי בעברית היא להפוך כיוון כל שניה מעברית ל-English וחוזר חלילה – אבל … אתגבר.

אני מקווה לקבל תגובות של גולשים על הפוסטים שלי ומקווה להועיל במשהו לקולגות שלי במקצוע.