Giới thiệu tổng quan Stored Procedure là gì trong SQL Server

Cùng tìm hiểu khái niệm Stored Procedure là gì?

Stored procedure là gì? Trong bài này bạn sẽ được tìm hiểu khái niệm về stored procedure trong SQL Server, qua đó bạn sẽ biết được cách tạo mới, thực thi, thay đổi và xóa stored procedure.
Stored procedure là tập hợp một hoặc nhiều câu lệnh T-SQL thành một nhóm đơn vị xử lý logic và được lưu trữ trên Database Server. Khi một câu lệnh gọi chạy stored procedure lần đầu tiên thì SQL Server sẽ chạy nó và lưu trữ vào bộ nhớ đệm, gọi là plan cache, những lần tiếp theo SQL Server sẽ sử dụng lại plan cache nên sẽ cho tốc độ xử lý tối ưu.

1. Khi nào bạn cần sử dụng Stored Procedure?

Khi bạn phải thực hiện một project lớn, đòi hỏi nghiêm ngặt về tốc độ thực thi thì Stored Procedure chính là một phần lời giải cho bạn. Stored Procedure cho tốc độ thực thi nhanh hơn so với các câu lệnh SQL Server thông thường, Stored Procedure đã được lưu sẵn tại SQL server, do vậy chương trình không cần gởi hàng ngàn dòng lệnh đến SQL Server. Nó chỉ cần gọi một dòng lệnh để thực thi Stored Procedure, điều này giúp tăng tốc độ thực thi.
Bên cạnh đó trong quá trình tạo Stored Procedure, SQL Server đã tối ưu hóa những dòng lệnh này, điều này giúp cho tốc độ thực thi cao hơn câu lệnh SQL thông thường rất nhiều.

2. Khi nào bạn không cần sử dụng Stored Procedure?

Store Procedured làm quá trình debug trở nên khó khăn hơn. Do vậy hãy nghĩ đến Stored Procedure như là phương án cuối cùng để tối ưu hóa tốc độ thực thi chương trình. Thực tế 90% các project bạn làm có size nhỏ và vừa, do vậy hãy ưu tiên sử dụng các thư viện ORM (Object Relation Mapping), như Entity Framework cho C#, TypeORM cho NodeJs. Chúng sẽ giúp bạn phát triển, bảo trì, debug chương trình dễ dàng hơn.

Cách tạo Stored Procedure trong SQL Server Procedure là gì?

Stored procedure rất tiện lợi cho người quản trị database (DBA), nó giúp DBA tạo ra những nhóm câu lệnh và gửi đến một bô phận khác mà họ sẽ không cần quan tâm đến nội dung bên trong stored procedure có gì, họ chỉ quan tâm đến tham số đầu vào và đầu ra.
Ví dụ bạn viết một stored procedure lấy danh sách sản phẩm bán chạy theo ngày, sau đó bạn gửi stored này qua bộ phận development kèm theo tài liệu hướng dẫn sử dụng thì lúc này bộ phận DEV không cận quan tâm đến nội dung bên trong của stored mà chỉ cần thông tin tham số truyền vào và kết quả trả về của stored.
procedure là gì

Chúng ta hãy bắt đầu bằng những ví dụ đơn giản nhất nhé. Giả sử ta có câu truy vấn lấy danh sách sản phẩm như sau:

SELECT
product_name,
list_price
FROM
production.products
ORDER BY
product_name;

Để tạo một stored procedure chứa câu truy vấn này thì ta sẽ viết như sau:

CREATE PROCEDURE uspProductList
AS
BEGIN
SELECT
product_name,
list_price
FROM
production.products
ORDER BY
product_name;
END; Procedure là gì?

Như vậy cú pháp tạo stored procedure như sau:

CREATE PROCEDURE stored_name
AS
BEGIN
….
END;
Trong đó stored_name là tên của stored mà bạn muốn đặt. Như ở ví dụ ở trên thì tên của nó là uspProductList. Đối với câu lệnh CREATE PROCEDURE thì bạn có thể rút ngắn thành CREATE PROC.
Bây giờ bạn hãy chạy câu SQL tạo stored bằng cách click vào nút Execute ở trên thanh công cụ như hình chụp dưới đây.

Nếu bạn làm đúng tất cả thì sẽ nhận được kết quả là:

Commands completed successfully.
Để xem danh sách stored procedure đã tạo trong SQL Server thì bạn hãy vào database -> Programmability > Stored Procedures. Trường hợp không xuất hiện stored vừa tạo thì hãy click dấu xoay tròn để reload.

Ưu điểm của Stored Proccedure là gì trong Mysql?

Thông thường chúng ta sử dụng Procedure để tăng hiệu xuất xử lý của ứng dụng, sau khi được tạo ra thì tất cả các thủ tục được lưu trong hệ quản trị cơ sở dữ liệu. Tuy nhiên trong MYSQL việc lưu trữ các hàm này lại hơi khác nhau, khi được tạo ra thì thủ tục này sẽ được lưu trữ trong một bộ nhớ đệm (cache). Nếu trong một ứng dụng sử dụng gọi tới một Procedure nhiều lần trong một chuỗi kết nối thì lúc này sẽ coi nó như một chương trình cần biên dịch, nếu không thì sẽ coi như như là một câu truy vấn bình thường.

Stored Procedure giúp giảm thời gian giao tiếp giữa các ứng dụng với hệ quản trị MYSQL

Thay vì gửi nhiều câu lệnh dài thì ta chỉ cần gọi tới một thủ tục và trong thủ tục này sẽ thực hiện nhiều câu lệnh SQL.
Stored Procudure sẽ giúp các ứng dụng nhìn minh bạch hơn, nghĩa là khi ta định nghĩa các thao tác xử lý vào một Stored thì công việc của các ngôn ngữ lập trình khác chỉ quan tâm đến tên thủ tục, các tham số truyenf vào chứ không cần biết nó thực hiện như thế nào. Điều này giúp các team làm việc tốt hơn, ta sẽ phân ra bộ phận Coder riêng và bộ phận viết thủ tục riêng.
Mỗi thủ tục sẽ có các mức độ truy cập, nghĩa là ta có thể cấp quyền sử dụng cho một Uesr nào đó trong hệ quản trị (Lưu ý là user trong hệ quản trị chứ không phải là admin của ứng dụng website).
Bên cạnh những ưu điểm như trên thì Procedure cũng có một số nhược điểm như phần dưới đây.

Nhược điểm của Stored Procedure là gì trong Mysql?

Stored procedure làm cho database server phải tốn nhiều tài nguyên về cả bộ nhớ lẫn xử lý. Thay vì tập trung vào tính năng lưu trữ và nhận dữ liệu, bạn còn phải yêu cầu database server thực hiện 1 loạt các tính toán logic hay các thao tác xử lý phức tạp vốn không thuộc “sở trường” của database server.
Nếu sử dụng thủ tục thì sẽ rất khó phát triển trong ứng dụng, gây khó khăn ở mức logic business.

Một số hệ quản trị CSDL có những tool hỗ trợ Debug Store nhưng MYSQL thì không có.

Để phát triển ứng dụng thì bạn phải đòi hỏi có một kỹ năng thật siêu đăng  mà không phải nhà thiết kế cơ sở dữ liệu nào cũng có. Điều này dễ bị phá cho vấn đề bảo trì và nâng cấp
Stored procedure chỉ chứa đựng các khai báo sql, vì vậy rất khó có thể viết 1 procedure nhằm thực hiện các thao tác xử lý phức tạp như các ngôn ngữ khác làm được ở tần ứng dụng như C#, Java, C++…
Bạn cũng không thể debug stored procedure trong hầu hết các RDMBS và trong cả MySQL. Có 1 vài cách để khắc phục nhược điểm này, tuy nhiên vẫn chưa hoàn hảo lắm.
Việc viết và bảo trì (maintain) stored procedure thường yêu cầu 1 loạt các kỹ năng chuyên biệt nhiều khi không phải là kỹ năng của lập trình viên. Điều này dẫn đến các vấn đề trong cả khía cạnh phát triển ứng dụng và bảo trì sản phẩm.

Lời kết:

Qua bài này hy vọng bạn hiểu Stored Procedure trong MYSQL là gì và ưu nhược điểm của nó. Chính vì những nhược điểm đó mà Procedure rất ít khi sử dụng trong các ứng dụng Website. Giả sử bạn thuê một nhà phát triển ứng dụng họ viết theo kiểu sử dụng Procedure, sau đó bạn thuê tiếp một nhà phát triển khác thì đảm bảo họ chạy dài ngay vì khó có thể biêt được ý tưởng của nhà thiết kế cũ. Chính vì vậy khi phát triển ứng dụng thì bạn nên xem xét kỹ trước khi sử dụng nó nhé. Trong các bài tiếp theo chúng ta sẽ tìm hiểu làm thế nào để tận dụng tối đa Procedure trong MYSQL khi xây dựng website.
Các tìm kiếm liên quan đến Procedure là gì
  • medical procedure là gì
  • procedure là gì sql
  • make procedure
  • process là gì
  • procedure là gì trong pascal
  • entry procedure là gì
  • procedure pascal
  • procedure cambridge dictionary

Nhận xét

Bài đăng phổ biến từ blog này

Proxy list hay proxy server là gì? Nào cùng Semtek tìm hiểu nhé!

Internet là gì? Các lợi ích Internet mang lại cho cuộc sống

Chatbot Là Gì? Lợi Ích Chatbot Mang Lại Cho Doanh Nghiệp Bạn