Tóm lược. trong hướng dẫn này, bạn sẽ tìm hiểu về các thủ tục được lưu trữ trong MySQL, ưu điểm và nhược điểm của chúng
Bắt đầu với các thủ tục được lưu trữ
Câu lệnh SELECT
sau đây trả về tất cả các hàng trong bảng customers
từ cơ sở dữ liệu mẫu
Code language: SQL [Structured Query Language] [sql]
SELECT customerName, city, state, postalCode, country FROM customers ORDER BY customerName;
Ảnh này hiển thị một phần đầu ra của truy vấn
CREATE PROCEDURE sau đây tạo một thủ tục được lưu trữ mới kết thúc truy vấn ở trênCode language: SQL [Structured Query Language] [sql]
DELIMITER $$ CREATE PROCEDURE GetCustomers[] BEGIN SELECT customerName, city, state, postalCode, country FROM customers ORDER BY customerName; END$$ DELIMITER ;
Theo định nghĩa, thủ tục lưu sẵn là một đoạn câu lệnh SQL khai báo được lưu trữ bên trong Máy chủ MySQL. Trong ví dụ này, chúng ta vừa tạo một thủ tục lưu trữ có tên GetCustomers[]
Khi bạn lưu thủ tục đã lưu trữ, bạn có thể gọi nó bằng cách sử dụng câu lệnh CALL
Code language: SQL [Structured Query Language] [sql]
CALL GetCustomers[];
Và câu lệnh trả về kết quả tương tự như truy vấn
Lần đầu tiên bạn gọi một thủ tục được lưu trữ, MySQL sẽ tìm kiếm tên trong danh mục cơ sở dữ liệu, biên dịch mã của thủ tục được lưu trữ, đặt nó vào vùng bộ nhớ được gọi là bộ đệm và thực thi thủ tục được lưu trữ
Nếu bạn gọi lại cùng một thủ tục được lưu trữ trong cùng một phiên, MySQL chỉ thực thi thủ tục được lưu trữ từ bộ đệm mà không phải biên dịch lại nó
Một thủ tục được lưu trữ có thể có các tham số để bạn có thể chuyển các giá trị cho nó và nhận lại kết quả. Ví dụ: bạn có thể có một thủ tục được lưu trữ trả về khách hàng theo quốc gia và thành phố. Trong trường hợp này, quốc gia và thành phố là các tham số của thủ tục được lưu trữ
Một thủ tục được lưu trữ có thể chứa các câu lệnh luồng điều khiển như IF
,
0 và
DELIMITER $$ CREATE PROCEDURE GetCustomers[] BEGIN SELECT customerName, city, state, postalCode, country FROM customers ORDER BY customerName; END$$ DELIMITER ;
Code language: SQL [Structured Query Language] [sql]
0 cho phép bạn triển khai mã theo cách thủ tụcCode language: SQL [Structured Query Language] [sql]
DELIMITER $$ CREATE PROCEDURE GetCustomers[] BEGIN SELECT customerName, city, state, postalCode, country FROM customers ORDER BY customerName; END$$ DELIMITER ;
Một thủ tục được lưu trữ có thể gọi các thủ tục được lưu trữ khác hoặc các hàm được lưu trữ, cho phép bạn điều chỉnh mã của mình
Lưu ý rằng bạn sẽ học từng bước cách tạo thủ tục lưu sẵn mới trong hướng dẫn tiếp theo
Ưu điểm của thủ tục lưu trữ MySQL
Sau đây là những ưu điểm của thủ tục lưu trữ
Giảm lưu lượng mạng
Các thủ tục được lưu trữ giúp giảm lưu lượng mạng giữa các ứng dụng và Máy chủ MySQL. Bởi vì thay vì gửi nhiều câu lệnh SQL dài, các ứng dụng chỉ phải gửi tên và tham số của các thủ tục được lưu trữ
Tập trung logic kinh doanh trong cơ sở dữ liệu
Bạn có thể sử dụng các thủ tục được lưu trữ để triển khai logic nghiệp vụ mà nhiều ứng dụng có thể sử dụng lại. Các thủ tục được lưu trữ giúp giảm nỗ lực sao chép cùng một logic trong nhiều ứng dụng và làm cho cơ sở dữ liệu của bạn nhất quán hơn
Làm cho cơ sở dữ liệu an toàn hơn
Quản trị viên cơ sở dữ liệu có thể cấp các đặc quyền phù hợp cho các ứng dụng chỉ truy cập các thủ tục được lưu trữ cụ thể mà không cấp bất kỳ đặc quyền nào trên các bảng bên dưới
Nhược điểm của thủ tục lưu trữ MySQL
Bên cạnh những ưu điểm đó, thủ tục lưu sẵn cũng có những nhược điểm
Sử dụng tài nguyên
Nếu bạn sử dụng nhiều thủ tục được lưu trữ, mức sử dụng bộ nhớ của mọi kết nối sẽ tăng lên đáng kể
Bên cạnh đó, việc lạm dụng một số lượng lớn các thao tác logic trong các thủ tục được lưu trữ sẽ làm tăng mức sử dụng CPU vì MySQL không được thiết kế tốt cho các thao tác logic
Xử lý sự cố
Thật khó để gỡ lỗi các thủ tục được lưu trữ. Thật không may, MySQL không cung cấp bất kỳ phương tiện nào để gỡ lỗi các thủ tục được lưu trữ giống như các sản phẩm cơ sở dữ liệu doanh nghiệp khác như Oracle và SQL Server
bảo trì
Việc phát triển và duy trì các thủ tục được lưu trữ thường yêu cầu một bộ kỹ năng chuyên biệt mà không phải nhà phát triển ứng dụng nào cũng sở hữu. Điều này có thể dẫn đến các vấn đề trong cả phát triển và bảo trì ứng dụng
Trong hướng dẫn này, bạn đã tìm hiểu về các thủ tục được lưu trữ trong MySQL, ưu điểm và nhược điểm của chúng. Hãy tiếp tục tìm hiểu cách tạo thủ tục lưu trữ mới trong MySQL