2009-05-01 46 views
6

Tôi đang chạy một trang web cho một người bán buôn đồ trang sức.Thủ tục lưu trữ MySQL và tập lệnh PHP

Giá trên tất cả các sản phẩm của họ được tính bằng cách sử dụng các bản sửa lỗi kim loại vàng hiện tại được cập nhật hàng đêm.

Hiện tại, đối với trang web, các tính toán được tính toán thông qua chức năng bao gồm php, hoạt động tốt trong các trường hợp hiện tại.

Có khoảng 10.000 sản phẩm, nhưng giá được tính theo thời gian thực (tức là khi trang web được yêu cầu). Các tính toán rất đơn giản, nhưng có rất nhiều người trong số họ (Khoảng 50+) và tôi lo lắng rằng sự gia tăng lưu lượng truy cập có thể làm chậm tập lệnh hiện tại.

Tôi đang thiết kế lại trang web và tự hỏi liệu sẽ có ích khi tạo một quy trình trong MySQL để thực hiện các phép tính thay thế hay không.

Tính năng này có thể nhanh hơn tập lệnh php hiện tại không? Bất cứ ai cũng biết bất kỳ tài liệu tham khảo đọc tốt về việc sử dụng các thủ tục?

+0

Cảm ơn tất cả các nhận xét và liên kết. Tôi nghĩ tôi sẽ thực hiện phương pháp "Nếu nó không bị phá vỡ, không khắc phục được", xem xét những cơn đau đầu trong tương lai của việc thay đổi nó. – ticallian

+2

Đối với bất cứ ai downvoted câu trả lời của tôi, bạn có thể vui lòng giải thích tại sao? Tôi tin rằng đó là một câu trả lời hợp lệ. – Unknown

Trả lời

4

Nếu lý do bạn nghĩ về điều này là do hiệu suất và khả năng mở rộng, thì tôi khuyên bạn nên tiếp tục tính toán bằng PHP.

Lý do cho điều này là bất kể có hình phạt hiệu suất trong PHP của bạn hay không, khi bạn mở rộng ứng dụng web, việc chuyển sang nhiều máy chủ web dễ dàng hơn nhiều máy chủ cơ sở dữ liệu. Do đó, tốt hơn là nên tính toán nhiều hơn trong PHP và ít hơn trong MySQL.

Khác với các khía cạnh hiệu suất, tôi vẫn thường thích tránh các thủ tục lưu trữ trong lợi của việc có logic trong việc áp dụng vì

  • Nó có thể là ít di động. Thủ tục được lưu trữ thêm vào nỗ lực cần thiết để triển khai một cá thể mới của ứng dụng của bạn.
  • Chúng được viết bằng một ngôn ngữ khác với PHP, do đó, một nhà phát triển PHP có thể không thấy chúng dễ hiểu.
  • Có thể khó giữ chúng trong điều khiển nguồn.

Các sự cố này tất nhiên có thể được giải quyết, mà không có một số lượng lớn khó khăn, nếu bạn muốn sử dụng các thủ tục được lưu trữ.

10

Đây là điểm chuẩn với quy trình được lưu trữ so với php.

http://mtocker.livejournal.com/45222.html

Các thủ tục lưu trữ là chậm hơn bởi 10x.

Bạn cũng có thể muốn xem xét điều này:

http://www.tonymarston.net/php-mysql/stored-procedures-are-evil.html

+1

Bạn không chắc chắn tại sao điều này lại bị giảm giá. Tôi hoài nghi về độ chính xác của điểm chuẩn đó. – thomasrutter

+0

Tôi không biết một trong hai, tôi đã được downvoted cả ngày cho câu trả lời hợp pháp. – Unknown

+4

Tôi đã gặp sự cố này. một số người chỉ muốn bình luận bình luận, hoặc thỉnh thoảng họ có thể bấm vào khi họ không có ý định. Tôi muốn nếu SO buộc người dùng để lại bình luận về lý do tại sao bài viết hoặc bình luận đã được downvoted. Downvoting nên giúp người khác cải thiện, và không nên là cách để trút bỏ sự thất vọng của ai đó. –

3

Nếu nó là hoàn toàn cần thiết để cập nhật giá trên tất cả các yêu cầu trang và bạn đang lo lắng rằng trang web sẽ được nhận được rất nhiều lưu lượng Tôi sẽ không khuyên bạn nên lưu trữ thủ tục.

Tôi khuyên bạn nên lưu bộ nhớ đệm thông tin bạn sử dụng (và khó xây dựng mà không biết bạn đang làm thế nào) trong bộ nhớ (có thể dùng memcached) và tiếp tục đọc từ PHP.

Tôi sẽ thừa nhận rằng tôi chưa thực hiện bất kỳ điểm chuẩn nào giữa các thủ tục được lưu trữ so với hiệu suất PHP trong bộ nhớ nhưng nếu quy trình không ảnh hưởng trực tiếp đến truy vấn của bạn, tôi khuyên bạn nên lưu vào bộ nhớ đệm.

+0

mẹo hay về cách sử dụng memcached – thomasrutter

2

Tóm lại, hãy giữ chúng bằng php. Dễ bảo trì hơn.

Đối với trang hiện tại, sẽ không bao giờ xảy ra sự cố hiệu suất khi chênh lệch giữa tốc độ calc trong php so với tốc độ calc trong cơ sở dữ liệu là đáng chú ý. Nếu bạn sau đó có cái gì đó về cơ bản sai với mã của trang web. (Điều này bao gồm chuyển đổi tiền tệ theo thời gian thực nếu được thực hiện).

Nói rằng, việc giữ calc trong PHP thường được ưu tiên vì dễ kiểm soát và gỡ lỗi hơn. Nó đòi hỏi các lập trình viên web phải biết một chút về cơ sở dữ liệu nhưng đó không phải là vấn đề bình thường. 90% số lần tăng tốc mã xảy ra trên 10% mã và sẽ đủ dễ dàng để một dba xác định các truy vấn gây tải db nếu nó xảy ra.

Các vấn đề liên quan