Skip to main content

การสร้างกระบวนงานที่เก็บไว้สำหรับ SQL Server ของคุณ

Anonim

Microsoft SQL Server มีกลไกการจัดเก็บกระบวนงานเพื่อลดขั้นตอนการพัฒนาฐานข้อมูลโดยการจัดกลุ่มคำสั่ง Transact-SQL ให้เป็นบล็อคที่สามารถจัดการได้ ขั้นตอนการจัดเก็บเป็นที่ชื่นชมโดยนักพัฒนา SQL Server ส่วนใหญ่ที่พบประสิทธิภาพและประโยชน์ด้านความปลอดภัยที่พวกเขาเก็บเกี่ยวจะคุ้มค่ากับการลงทุนล่วงหน้าในเวลา

ประโยชน์ของการใช้กระบวนงานที่เก็บไว้

ทำไมนักพัฒนาซอฟต์แวร์ควรใช้วิธีการจัดเก็บ

นี่คือประโยชน์หลักของเทคโนโลยีนี้:

  • การเรียบเรียงล่วงหน้า: SQL Server รวบรวมแต่ละกระบวนงานที่เก็บไว้เพียงครั้งเดียวและจากนั้นใช้แผนปฏิบัติการอีกครั้ง ส่งผลให้มีการเพิ่มประสิทธิภาพอย่างมากเมื่อเรียกใช้ขั้นตอนการจัดเก็บซ้ำ
  • การรับส่งข้อมูลไคลเอ็นต์ / เซิร์ฟเวอร์ที่ลดลง: ถ้าแบนด์วิธของเครือข่ายเป็นข้อกังวลในสภาพแวดล้อมของคุณคุณยินดีที่จะเรียนรู้ว่าขั้นตอนที่เก็บไว้สามารถลดการสืบค้น SQL ยาวเป็นบรรทัดเดียวที่ถูกส่งผ่านสาย
  • นำมาใช้ใหม่อย่างมีประสิทธิภาพของรหัสและการเขียนโปรแกรม abstraction: ผู้ใช้หลายรายและโปรแกรมไคลเอ็นต์สามารถใช้ขั้นตอนที่จัดเก็บไว้ได้ ถ้าคุณใช้พวกเขาในลักษณะที่วางแผนไว้คุณจะพบว่าวัฏจักรการพัฒนาใช้เวลาน้อยลง
  • การควบคุมความปลอดภัยที่เพิ่มขึ้น: คุณสามารถให้สิทธิ์ผู้ใช้ในการดำเนินการขั้นตอนการจัดเก็บแยกต่างหากจากสิทธิ์ของตารางที่อยู่

ขั้นตอนการจัดเก็บมีความคล้ายคลึงกับฟังก์ชันที่ผู้ใช้กำหนด แต่มีความแตกต่างที่ลึกซึ้ง

โครงสร้าง

ขั้นตอนการจัดเก็บจะคล้ายกับโครงสร้างที่เห็นได้ในภาษาโปรแกรมอื่น ๆ

พวกเขายอมรับข้อมูลในรูปแบบของพารามิเตอร์อินพุตที่ระบุในเวลาดำเนินการ พารามิเตอร์อินพุตเหล่านี้ (ถ้ามีการใช้งาน) ถูกนำไปใช้ในการดำเนินการชุดคำสั่งที่ให้ผลลัพธ์บางอย่าง ผลลัพธ์นี้ถูกส่งกลับไปยังสภาพแวดล้อมการเรียกผ่านการใช้ชุดระเบียนพารามิเตอร์ขาออกและรหัสการส่งคืน

อาจจะฟังเหมือนคำพูด แต่คุณจะพบว่าขั้นตอนการจัดเก็บเป็นจริงค่อนข้างง่าย

ตัวอย่าง

ลองมาดูตัวอย่างการปฏิบัติที่เกี่ยวข้องกับตารางที่ชื่อว่าพื้นที่โฆษณาที่ด้านล่างของหน้านี้ ข้อมูลนี้ได้รับการอัปเดตในแบบเรียลไทม์และผู้จัดการคลังสินค้าจะตรวจสอบระดับผลิตภัณฑ์ที่เก็บไว้ในคลังสินค้าของตนอย่างต่อเนื่องและสามารถจัดส่งได้ ในอดีตผู้จัดการแต่ละคนจะเรียกใช้ข้อความค้นหาที่คล้ายกับข้อความต่อไปนี้:

เลือกสินค้าจำนวน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