Microsoft SQL Server מספק את מנגנון הפרוצדורה המאוחסנת כדי לפשט את תהליך הפיתוח של מסד הנתונים על-ידי הקבצה של הצהרות Transact-SQL לבלוקים ניתנים לניהול. נהלים מאוחסנים מוערכים על ידי רוב מפתחי SQL Server אשר מוצאים את היעילות ואת היתרונות האבטחה שהם לקצור הם שווים את ההשקעה upfront בזמן.
יתרונות השימוש בהליכים מאוחסנים
מדוע על מפתח להשתמש בהליכים מאוחסנים?
הנה היתרונות העיקריים של הטכנולוגיה הזו:
- ביצוע מראש: SQL Server הידור כל הליך מאוחסן פעם ולאחר מכן מחדש מנצל את תוכנית הביצוע. זה גורם להגדלת ביצועים עצומה כאשר הפרוצדורות המאוחסנות נקראים שוב ושוב.
- צמצום תעבורת לקוח / שרת: אם רוחב הפס של הרשת הוא דאגה בסביבה שלך, אתה תהיה שמח ללמוד כי פרוצדורות מאוחסנות יכול להפחית שאילתות SQL ארוך לקו יחיד כי מועבר על חוט.
- שימוש חוזר יעיל בקוד ובהפשטת התכנות: נהלים מאוחסנים ניתן להשתמש על ידי מספר משתמשים ותוכניות הלקוח. אם אתה מנצל אותם באופן מתוכנן, תמצא את מחזור הפיתוח לוקח פחות זמן.
- פקדי אבטחה משופרים: באפשרותך להעניק למשתמשים הרשאה לבצע הליך מאוחסן בנפרד מההרשאות בטבלה הבסיסית.
נהלים מאוחסנים דומים לפונקציות המוגדרות על ידי המשתמש, אך יש הבדלים מתוחכמים.
מבנה
נהלים מאוחסנים דומים למבנים שנראים בשפות תכנות אחרות.
הם מקבלים נתונים בצורה של פרמטרים קלט שנקבעו בזמן ביצוע. פרמטרים אלה קלט (אם מיושם) מנוצלים בביצוע סדרה של הצהרות המייצרות תוצאה כלשהי. תוצאה זו מוחזרת לסביבת השיחה באמצעות ערכת רשומות, פרמטרים של פלט וקוד החזרה.
זה אולי נשמע כמו פה, אבל תמצא כי נהלים מאוחסנים הם למעשה די פשוט.
דוגמא
הבה נבחן דוגמה מעשית הקשורה לטבלה בשם המלאי המוצגת בתחתית הדף. מידע זה מתעדכן בזמן אמת, ומנהלי מחסן בודקים כל הזמן את רמות המוצרים המאוחסנים במחסן שלהם וזמינים למשלוח. בעבר, כל מנהל יפעיל שאילתות דומות לאלו:
בחר מוצר, כמותממלאיWHERE Warehouse = 'FL'
זה הביא לביצועים לא יעילים ב- SQL Server. בכל פעם שמנהל מחסן ביצע את השאילתה, שרת מסד הנתונים נאלץ לערוך מחדש את השאילתה ולבצע אותה מאפס. זה גם נדרש מנהל המחסן יש ידע של SQL והרשאות מתאימות לגשת למידע השולחן.במקום זאת, ניתן לפשט את התהליך באמצעות שימוש בהליך מאוחסן. הנה הקוד לפרוצדורה הנקראת sp_GetInventory שאוחזרת את רמות המלאי עבור מחסן נתון. מנהל המחסן בפלורידה יכול לגשת לרמות המלאי על ידי הנפקת הפקודה: מנהל המחסן בניו יורק יכול להשתמש באותו הליך מאוחסן כדי לגשת המלאי של האזור: אמנם, זוהי דוגמה פשוטה, אבל את היתרונות של הפשטה ניתן לראות כאן. מנהל המחסן אינו צריך להבין את SQL או את פעולתו הפנימית של הפרוצדורה. מנקודת מבט ביצועים, הליך מאוחסן עובד פלאים. SQL Server יוצר תוכנית ביצוע פעם אחת ולאחר מכן מאחסן אותה מחדש על ידי חיבור הפרמטרים המתאימים בזמן הביצוע.עכשיו לאחר שלמדת את היתרונות של נהלים מאוחסנים, לצאת לשם ולהשתמש בהם. נסה כמה דוגמאות ולמדוד את שיפורים בביצועים מושגת, אתה תהיה מופתע! טבלת מלאיליצור הליך sp_GetInventory@location varchar (10)כפי שבחר מוצר, כמותממלאיאיפה מחסן = @ מיקום
EXECUTE sp_GetInventory 'FL'
EXECUTE sp_GetInventory 'NY'
מזהה מוצר מחסן כמות 142 שעועית ירוקה ניו יורק 100 214 אפונה פלורידה 200 825 תירס ניו יורק 140 512 שעועית לימה ניו יורק 180 491 עגבניות פלורידה 80 379 אבטיח פלורידה 85