none
sp plan RRS feed

  • שאלה

  • היי,

    איך אני יכול לקבל עבור כל sp  את  plan  שלו ב cach  ?  המקסימום שהצלחתי להגיע אליו זה לבדוק אם ה פרצדורה נמצאת ב cash:

    SELECT

    usecounts, text, dbid, objectid

    FROM

     

    sys.dm_exec_cached_plans cp

     

    CROSS APPLY sys.dm_exec_sql_text(cp.plan_handle)

     חסר לי הביצוע עצמו  שSQL שומר בcach עבור כל פרצדורה

    תודה שרון. 

    יום ראשון 20 מרץ 2011 10:24

תשובות

כל התגובות

  • העמודה query_plan מכילה את תוכנית העבודה
    SELECT TOP 2
    [text]
    ,query_plan
    ,objtype
    ,cp.*
    FROM sys.dm_exec_cached_plans cp 
    CROSS APPLY sys.dm_exec_sql_text(plan_handle) 
    CROSS APPLY sys.dm_exec_query_plan(plan_handle)
    WHERE 1=1
    AND objtype = 'Proc'
    --AND Refcounts > 2
    AND [text] NOT LIKE 'CREATE PROCEDURE sp_%'

    -- Yaniv www.sqlserverutilities.com http://blogs.microsoft.co.il/blogs/yaniv_etrogi
    • הוצע כתשובה על-ידי Yaniv Etrogi יום ראשון 20 מרץ 2011 10:57
    יום ראשון 20 מרץ 2011 10:57
  • הי,

    ב-output של הסקריפט שנשלך ע"י יניב תלחץ על העמודה query_plan, יפתח קובץ xml תשמור אותו עם סיומת file_name.sqlplan ואז ע"י לחיצה כפולה תפתח תצוגה גרפית של ה- plan ב-managment studio.

    בהצלחה


    אסף שלם
    יום ראשון 20 מרץ 2011 12:23
  •  אסף תודה,

    האם יכול להיות  SQL מייצר כמה תוכנית עבודה ב   cash אני רואה עבור אותה פרצדורה כמה תוכניות  ואם כן למה הוא מסוגל באופ דינמי להחליט

    באיזה plan להשתמש

    ?

    שרון

    יום ראשון 20 מרץ 2011 14:09
  •  אסף שלום קודם כל התגובות עכשיו יש לי משהו מעניין פתחתי את ה xml של תוכנית הפעולה ואני רואה תוכניות פעולה  ש לא אומרות לי כלום

    כאלו :

    [TSQL]  עם הפקודה assign או עם הפקודה print  שום דבר לא מראה לי על סריקות או חיפושים באינדקס ובפרצדורה יש  חיפושים והרבה.

    כמו כן שאני מבקש  הדבר היחיד שאולי בגללו תוכנית הפעולה לא מראה נכון את התוצאות זאת אולי הסיבה שאני מריץ dynamic sql  בפרצדורה בצורה הבאה:

    exec

    sp_executesql @SQLString, @ParamDef, @iCompanyId, @dtStart, @dtEnd, @iLangId, @iAffiliateId, @iCountryId

    אשמח אם יש לך הסבר מעניין

    תודה מראש שרון.

    יום ראשון 20 מרץ 2011 14:44
  • בהחלט. תוכנית עבודה שונה נשמרת שאשר משהו בנתוני ההרצה משתנים כמו למשל המשתנה שמועבר לפרוצדורה ועוד.

    אם תרצה להעמיק אז ממליץ להתחיל פה:

    http://msdn.microsoft.com/en-us/library/ms181055.aspx

    http://msdn.microsoft.com/en-us/library/ee343986(SQL.100).aspx

     

    יניב

     


    -- Yaniv www.sqlserverutilities.com http://blogs.microsoft.co.il/blogs/yaniv_etrogi
    יום ראשון 20 מרץ 2011 14:49
  •  יניב שלום,

    התושב שלך לא כל כך ברורה לי  אם SQL  שומר תוכנית פעולה עבור  קריאות מסוגים שוני ( כלומר עם משתנים שונים שמשפיעים על תוכנית הפעולה)

    אז למה   איפשרו את האופציה with recompile ?   לכאורה היא מיותרת לפי  התשובה שלך

    שרון

    יום ראשון 20 מרץ 2011 15:09
  • צודק. הנושא רחב והדוגמא שנתתי לא תורמת.

    אני מצרף קישור ל script שממחיש ומסביר עם דוגמאות מאוד ברורות וכמו במיקרים אחרים בחיים גם כאן, אין טוב ממראה עיניים ולהתנסות בעצמך.

    http://www.sqlserverinternals.com/companion/QTO_Chapter5code.txt

     

    בנוסף זהוא מאמר חובה למי שרוצה להבין את הנושא:

    Batch Compilation, Recompilation, and Plan Caching Issues in SQL Server 2005 


    -- Yaniv www.sqlserverutilities.com http://blogs.microsoft.co.il/blogs/yaniv_etrogi
    • סומן כתשובה על-ידי Meir Pinto יום חמישי 07 אפריל 2011 06:57
    יום שני 21 מרץ 2011 09:26
  •  

    היי,

    אשמח אם תוכל/י לעדכן אותנו בסטטוס השאלה שלך.

     

    במידה וקיבלת תשובה מתאימה לשאלתך, יש לסמן את התשובה המתאימה ע"י לחיצה על "סמן כתשובה" ליד סימון ה V הירוק

    אם לא קיבלת תשובה, מומלץ לספק פרטים נוספים אודות הבעיה, פרטי לוג, צילומי מסך וכו'

    על מנת להעלות תמונה לפורום ניתן להעזר במדריך להעלאת תמונה.


    אם תגובתי פתרה את בעייתך - לחץ/י, על "סמן כתשובה" ליד סימן ה V הירוק.

    על מנת להעלות תמונה לפורום ניתן להעזר במדריך להעלאת תמונה
    מיקרוסופט מציעה שירות זה ללא תשלום, למטרת סיוע למשתמשים והעשרת הידע הקשור בטכנולוגיות ובמוצרים של Microsoft. תוכן זה מתפרסם כפי שהוא והוא אינו מעיד על כל אחריות מצד מיקרוסופט.
    יום שלישי 05 אפריל 2011 07:16