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