Microsoft SQL Server มีกลไกการจัดเก็บกระบวนงานเพื่อลดขั้นตอนการพัฒนาฐานข้อมูลโดยการจัดกลุ่มคำสั่ง Transact-SQL ให้เป็นบล็อคที่สามารถจัดการได้ ขั้นตอนการจัดเก็บเป็นที่ชื่นชมโดยนักพัฒนา SQL Server ส่วนใหญ่ที่พบประสิทธิภาพและประโยชน์ด้านความปลอดภัยที่พวกเขาเก็บเกี่ยวจะคุ้มค่ากับการลงทุนล่วงหน้าในเวลา
ประโยชน์ของการใช้กระบวนงานที่เก็บไว้
ทำไมนักพัฒนาซอฟต์แวร์ควรใช้วิธีการจัดเก็บ
นี่คือประโยชน์หลักของเทคโนโลยีนี้:
- การเรียบเรียงล่วงหน้า: SQL Server รวบรวมแต่ละกระบวนงานที่เก็บไว้เพียงครั้งเดียวและจากนั้นใช้แผนปฏิบัติการอีกครั้ง ส่งผลให้มีการเพิ่มประสิทธิภาพอย่างมากเมื่อเรียกใช้ขั้นตอนการจัดเก็บซ้ำ
- การรับส่งข้อมูลไคลเอ็นต์ / เซิร์ฟเวอร์ที่ลดลง: ถ้าแบนด์วิธของเครือข่ายเป็นข้อกังวลในสภาพแวดล้อมของคุณคุณยินดีที่จะเรียนรู้ว่าขั้นตอนที่เก็บไว้สามารถลดการสืบค้น SQL ยาวเป็นบรรทัดเดียวที่ถูกส่งผ่านสาย
- นำมาใช้ใหม่อย่างมีประสิทธิภาพของรหัสและการเขียนโปรแกรม abstraction: ผู้ใช้หลายรายและโปรแกรมไคลเอ็นต์สามารถใช้ขั้นตอนที่จัดเก็บไว้ได้ ถ้าคุณใช้พวกเขาในลักษณะที่วางแผนไว้คุณจะพบว่าวัฏจักรการพัฒนาใช้เวลาน้อยลง
- การควบคุมความปลอดภัยที่เพิ่มขึ้น: คุณสามารถให้สิทธิ์ผู้ใช้ในการดำเนินการขั้นตอนการจัดเก็บแยกต่างหากจากสิทธิ์ของตารางที่อยู่
ขั้นตอนการจัดเก็บมีความคล้ายคลึงกับฟังก์ชันที่ผู้ใช้กำหนด แต่มีความแตกต่างที่ลึกซึ้ง
โครงสร้าง
ขั้นตอนการจัดเก็บจะคล้ายกับโครงสร้างที่เห็นได้ในภาษาโปรแกรมอื่น ๆ
พวกเขายอมรับข้อมูลในรูปแบบของพารามิเตอร์อินพุตที่ระบุในเวลาดำเนินการ พารามิเตอร์อินพุตเหล่านี้ (ถ้ามีการใช้งาน) ถูกนำไปใช้ในการดำเนินการชุดคำสั่งที่ให้ผลลัพธ์บางอย่าง ผลลัพธ์นี้ถูกส่งกลับไปยังสภาพแวดล้อมการเรียกผ่านการใช้ชุดระเบียนพารามิเตอร์ขาออกและรหัสการส่งคืน
อาจจะฟังเหมือนคำพูด แต่คุณจะพบว่าขั้นตอนการจัดเก็บเป็นจริงค่อนข้างง่าย
ตัวอย่าง
ลองมาดูตัวอย่างการปฏิบัติที่เกี่ยวข้องกับตารางที่ชื่อว่าพื้นที่โฆษณาที่ด้านล่างของหน้านี้ ข้อมูลนี้ได้รับการอัปเดตในแบบเรียลไทม์และผู้จัดการคลังสินค้าจะตรวจสอบระดับผลิตภัณฑ์ที่เก็บไว้ในคลังสินค้าของตนอย่างต่อเนื่องและสามารถจัดส่งได้ ในอดีตผู้จัดการแต่ละคนจะเรียกใช้ข้อความค้นหาที่คล้ายกับข้อความต่อไปนี้:
เลือกสินค้าจำนวนFROM สินค้าคงคลังWHERE Warehouse = 'FL'
ส่งผลให้ประสิทธิภาพการทำงานของ SQL Server ลดลง แต่ละครั้งที่ผู้จัดการคลังสินค้าดำเนินการแบบสอบถามเซิร์ฟเวอร์ฐานข้อมูลถูกบังคับให้คอมไพล์ใหม่แบบสอบถามและรันคำสั่งดังกล่าวตั้งแต่เริ่มต้น นอกจากนี้ผู้จัดการคลังสินค้ายังต้องมีความรู้เกี่ยวกับ SQL และสิทธิ์ที่เหมาะสมในการเข้าถึงข้อมูลตารางแต่กระบวนการนี้สามารถทำได้ง่ายขึ้นโดยใช้ขั้นตอนที่เก็บไว้ นี่คือโค้ดสำหรับขั้นตอนที่เรียกว่า sp_GetInventory ซึ่งเรียกคืนระดับพื้นที่เก็บข้อมูลสำหรับคลังสินค้าที่ระบุ ผู้จัดการคลังสินค้าในฟลอริดาสามารถเข้าถึงระดับพื้นที่โฆษณาได้โดยการออกคำสั่ง: ผู้จัดการคลังสินค้าในนิวยอร์กสามารถใช้ขั้นตอนเดียวกันกับที่เก็บไว้เพื่อเข้าถึงพื้นที่โฆษณาของพื้นที่นั้น ๆ : ได้รับนี่เป็นตัวอย่างง่ายๆ แต่คุณสามารถเห็นประโยชน์ของสิ่งที่เป็นนามธรรมได้ที่นี่ ผู้จัดการคลังสินค้าไม่จำเป็นต้องเข้าใจ SQL หรือการทำงานภายในของกระบวนการ จากมุมมองของประสิทธิภาพกระบวนงานที่จัดเก็บไว้เป็นสิ่งมหัศจรรย์ SQL Server สร้างแผนปฏิบัติการหนึ่งครั้งและใช้งานได้อีกครั้งโดยเสียบพารามิเตอร์ที่เหมาะสมในเวลาดำเนินการตอนนี้คุณได้เรียนรู้ถึงประโยชน์ของกระบวนงานที่เก็บไว้แล้วให้ออกไปและใช้พวกเขา ลองใช้ตัวอย่างและวัดผลการปรับปรุงที่ได้รับ - คุณจะประหลาดใจ! ตารางพื้นที่โฆษณาสร้างกระบวนการ sp_GetInventory@vocation varchar (10)เช่นเลือกสินค้าจำนวนFROM สินค้าคงคลังWHERE Warehouse = @ สถานที่ดำเนินการ sp_GetInventory 'FL'ดำเนินการ sp_GetInventory 'NY'ID สินค้า คลังสินค้า ปริมาณ 142 ถั่วเขียว นิวยอร์ก 100 214 เมล็ดถั่ว ฟลอริด้า 200 825 ข้าวโพด นิวยอร์ก 140 512 ถั่วลิมา นิวยอร์ก 180 491 มะเขือเทศ ฟลอริด้า 80 379 แตงโม ฟลอริด้า 85




