Giới thiệu Mysql Stored Procedure là gì?
Đây là bài đầu tiên trong loạt series học Stored Procedure trong Mysql. Trong bài này chúng ta sẽ tìm hiểu khái niệm Store Procedure là gì? Các ưu điểm và nhược điểm của nó và ứng dụng của nó trong thực tế nói chung và trong lập trình website nói riêng.
Có lẽ bạn chưa biết là trong MySQL cũng có những hàm xử lý chuỗi, câu lệnh if else, lệnh switch case và những hàm hỗ trợ khác như replace, count, concat. Vậy tại sao những hàm này lại được ít sử dụng như vây? Lý do đơn giản là Mysql dùng cho ứng dụng website nên thông thường chúng ta chỉ viết những lệnh đơn giản như SELECT, UPDATE, DELETE là chính. Chỉ có những CMS như Joomla họ mới sử dụng vì họ cần sự tối ưu trong câu truy vấn.
Nói ra thì dài dòng nên ta sẽ bắt đầu tìm hiểu nó ngay nhé.
1. Mysql Stored Procedure là gì?
Chắc hẳn bạn đã biết được khái niệm về Hàm trong PHP rồi nhỉ? Thì trong Mysql Procedure cũng có ý nghĩa tương tự như vậy, nghĩa là chúng ta sẽ tạo những hàm (Procedure) để thực hiện những dòng lệnh liên quan trong đó, ví dụ như thao tác Update hay Insert.
Bài viết này được đăng tại [free tuts .net]
Thông thường một hàm có thể gọi lại chính nó và ta gọi là đệ quy (tham khảo đệ quy trong php). Nhưng trong MYSQL thì bạn hãy kiểm tra Version của bạn có hỗ trợ không nhé. Nếu có thì mình cũng nghĩ là không nên sử dụng bởi vì bản chất MYSQL không sử dụng để tính toán nhiều.
Với MYSQL thì khái niệm Stored Procedure chỉ được thêm vào kể từ Version 5 với mục đích là giúp việc xử lý dữ liệu linh hoạt và mạnh mẽ hơn.
2. Ưu điểm của Stored Proccedure 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, bởi vì 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.
3. Nhược điểm của Stored Procedure trong Mysql
Nếu bạn tạo ra quá nhiều Procedure thì hệ quản trị sẽ sử dụng bộ nhớ để lưu trữ các thủ tục này khá nhiều. Ngoài ra nếu bạn thực hiện quá nhiều xử lý trong mỗi thủ tục thì đồng nghĩa với việc CPU sẽ làm việc nặng hơn, điều này không tốt chút nào.
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
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.